خوارزمية تشان

عرض توضيحي ثنائي الأبعاد لخوارزمية تشان. مع ذلك، تجدر الإشارة إلى أن الخوارزمية تقسم النقاط بشكل عشوائي، وليس بناءً على الإحداثي السيني.

في الهندسة الحسابية ، تُعد خوارزمية تشان ، [ 1 ] التي سُميت نسبةً إلى تيموثي إم. تشان ، خوارزمية مثالية حساسة للمخرجات لحساب الغلاف المحدب لمجموعةP{\displaystyle P}لن{\displaystyle n}نقاط، في فضاء ثنائي أو ثلاثي الأبعاد. تأخذ الخوارزميةيا(نسجلح){\displaystyle O(n\log h)}الوقت، أينح{\displaystyle h}يمثل عدد رؤوس الناتج (الغلاف المحدب). في الحالة المستوية، تجمع الخوارزمية بينيا(نسجلن){\displaystyle O(n\log n)}خوارزمية ( مثل مسح غراهام ) مع مسيرة جارفيس (يا(نح){\displaystyle O(nh)}) من أجل الحصول على الأمثليا(نسجلح){\displaystyle O(n\log h)}يُعدّ خوارزمية تشان جديرة بالذكر لبساطتها مقارنةً بخوارزمية كيركباتريك-سيدل ، وقدرتها على التوسع بشكل طبيعي لتشمل الفضاء ثلاثي الأبعاد. وقد طوّر فرانك نيلسن هذا النموذج [ 2 ] بشكل مستقل في أطروحته للدكتوراه. [ 3 ]

الخوارزمية

ملخص

تتطلب عملية تمرير واحدة للخوارزمية معلمةم{\displaystyle m}والتي تقع بين 0 ون{\displaystyle n}(عدد نقاط مجموعتنا)P{\displaystyle P}). من الناحية المثالية،م=ح{\displaystyle m=h}لكنح{\displaystyle h}عدد الرؤوس في الغلاف المحدب الناتج غير معروف في البداية. يتم إجراء عدة تمريرات بقيم متزايدة لـم{\displaystyle m}يتم إنجازها، ثم تنتهي عندمامح{\displaystyle m\geq h}انظر أدناه حول اختيار المعلمةم{\displaystyle m}.

تبدأ الخوارزمية بتقسيم مجموعة النقاط بشكل عشوائيP{\displaystyle P}داخلك=ن/م{\displaystyle K=\lceil n/m\rceil }المجموعات الفرعية(سؤالك)ك=1،2،...ك{\displaystyle (Q_{k})_{k=1,2,...K}}مع أقصى حدم{\displaystyle m}لكل نقطة؛ لاحظ أنك=يا(ن/م){\displaystyle K=O(n/m)}.

لكل مجموعة فرعيةسؤالك{\displaystyle Q_{k}}، حيث يقوم بحساب الغلاف المحدب،جك{\displaystyle C_{k}}باستخداميا(صسجلص){\displaystyle O(p\log p)}خوارزمية (على سبيل المثال، مسح غراهام )، حيثص{\displaystyle p}يمثل عدد النقاط في المجموعة الفرعية. حيث يوجدك{\displaystyle K}مجموعات فرعية منيا(م){\displaystyle O(m)}كل نقطة، هذه المرحلة تستغرقكيا(مسجلم)=يا(نسجلم){\displaystyle K\cdot O(m\log m)=O(n\log m)}وقت.

خلال المرحلة الثانية، يتم تنفيذ مسيرة جارفيس ، باستخدام الأغلفة المحدبة (الصغيرة) المحسوبة مسبقًا.(جك)ك=1،2،...ك{\displaystyle (C_{k})_{k=1,2,...K}}في كل خطوة من خطوات خوارزمية مسيرة جارفيس هذه، لدينا نقطةصأنا{\displaystyle p_{i}}في الغلاف المحدب (في البداية،صأنا{\displaystyle p_{i}}ربما تكون هذه هي النقطة فيP{\displaystyle P}بأقل إحداثي y، والذي يضمن وجوده في الغلاف المحدب لـP{\displaystyle P})، ويحتاجون إلى إيجاد نقطةصأنا+1=و(صأنا،P){\displaystyle p_{i+1}=f(p_{i},P)}بحيث تكون جميع النقاط الأخرىP{\displaystyle P}تقع على يمين الخطصأناصأنا+1{\displaystyle p_{i}p_{i+1}}، حيث الترميزصأنا+1=و(صأنا،P){\displaystyle p_{i+1}=f(p_{i},P)}يعني ذلك ببساطة أن النقطة التالية هيصأنا+1{\displaystyle p_{i+1}}يتم تحديدها كدالة لـصأنا{\displaystyle p_{i}}وP{\displaystyle P}الغلاف المحدب للمجموعةسؤالك{\displaystyle Q_{k}}،جك{\displaystyle C_{k}}، وهو معروف ويحتوي على الأكثرم{\displaystyle m}النقاط (المدرجة بترتيب مع عقارب الساعة أو عكس عقارب الساعة)، مما يسمح بحسابو(صأنا،سؤالك){\displaystyle f(p_{i},Q_{k})}فييا(سجلم){\displaystyle O(\log m)}الوقت باستخدام البحث الثنائي . ومن ثم، حسابو(صأنا،سؤالك){\displaystyle f(p_{i},Q_{k})}لكلك{\displaystyle K}يمكن إجراء المجموعات الفرعية فييا(كسجلم){\displaystyle O(K\log m)}الوقت. عندها، يمكننا تحديدو(صأنا،P){\displaystyle f(p_{i},P)}باستخدام نفس الأسلوب المستخدم عادةً في مسيرة جارفيس، ولكن مع مراعاة النقاط فقط(و(صأنا،سؤالك))1كك{\displaystyle (f(p_{i},Q_{k}))_{1\leq k\leq K}}(أي النقاط الموجودة في الأغلفة المحدبة المصغرة) بدلاً من المجموعة بأكملهاP{\displaystyle P}بالنسبة لتلك النقاط، فإن إحدى نسخ مسيرة جارفيس هييا(ك){\displaystyle O(K)}وهو أمر ضئيل مقارنةً بالحسابات الخاصة بجميع المجموعات الفرعية. تكتمل مسيرة جارفيس عند تكرار العملية.يا(ح){\displaystyle O(h)}مرات (لأن، بحسب طريقة عمل مسيرة جارفيس، بعد أكثر منح{\displaystyle h}تكرارات حلقتها الخارجية، حيثح{\displaystyle h}يمثل عدد النقاط في الغلاف المحدب لـP{\displaystyle P}، لا بد أننا وجدنا الغلاف المحدب)، ومن ثم تبدأ المرحلة الثانيةيا(كحسجلم){\displaystyle O(Kh\log m)}الوقت، المكافئ لـيا(نسجلح){\displaystyle O(n\log h)}الوقت إذام{\displaystyle m}قريب منح{\displaystyle h}(انظر أدناه وصفًا لاستراتيجية للاختيار)م{\displaystyle m}بحيث يكون هذا هو الحال).

من خلال تنفيذ المرحلتين الموصوفتين أعلاه، يتم الحصول على الغلاف المحدب لـن{\displaystyle n}يتم حساب النقاط فييا(نسجلح){\displaystyle O(n\log h)}وقت.

اختيار المعامل m

إذا تم اختيار قيمة عشوائية لـم{\displaystyle m}قد يحدث أنم<ح{\displaystyle m<h}في هذه الحالة، بعدم{\displaystyle m}في المرحلة الثانية، نوقف مسيرة جارفيس لأن إكمالها حتى النهاية سيستغرق وقتاً طويلاً. في تلك اللحظة،يا(نسجلم){\displaystyle O(n\log m)}سيكون الوقت قد انقضى، ولن يتم حساب الغلاف المحدب.

الفكرة هي إجراء عدة دورات للخوارزمية بقيم متزايدة لـم{\displaystyle m}تنتهي كل محاولة (بنجاح أو بفشل) فييا(نسجلم){\displaystyle O(n\log m)}الوقت. إذام{\displaystyle m}إذا زادت القيمة ببطء شديد بين الدورات، فقد يكون عدد التكرارات كبيرًا؛ من ناحية أخرى، إذا ارتفعت بسرعة كبيرة، فإن الدورة الأولىم{\displaystyle m}قد تكون القيم التي تنتهي عندها الخوارزمية بنجاح أكبر بكثير منح{\displaystyle h}وتنتج تعقيدًايا(نسجلم)>يا(نسجلح){\displaystyle O(n\log m)>O(n\log h)}.

استراتيجية التربيع

تتمثل إحدى الاستراتيجيات الممكنة في تربيع قيمةم{\displaystyle m}في كل تكرار، حتى قيمة قصوى لـن{\displaystyle n}(المقابلة لتقسيم في مجموعات أحادية). [ 4 ] بدءًا من القيمة 2، في التكرارت{\displaystyle t}،م=مين(ن،22ت){\displaystyle m=\min \left(n,2^{2^{t}}\right)}يتم اختياره. في هذه الحالة،يا(سجلسجلح){\displaystyle O(\log \log h)}يتم إجراء التكرارات، مع الأخذ في الاعتبار أن الخوارزمية تنتهي بمجرد أن نحصل على

م=22تحسجل(22ت)سجلح2تسجلحسجل2تسجلسجلحتسجلسجلح،{\displaystyle m=2^{2^{t}}\geq h\iff \log \left(2^{2^{t}}\right)\geq \log h\iff 2^{t}\geq \log h\iff \log {2^{t}}\geq \log {\log h}\iff t\geq \log {\log h},}

مع أخذ اللوغاريتم في الأساس2{\displaystyle 2}، وإجمالي وقت تشغيل الخوارزمية هو

ت=0سجلسجلحيا(نسجل(22ت))=يا(ن)ت=0سجلسجلح2ت=يا(ن21+سجلسجلح)=يا(نسجلح).{\displaystyle \sum _{t=0}^{\lceil \log \log h\rceil }O\left(n\log \left(2^{2^{t}}\right)\right)=O(n)\sum _{t=0}^{\lceil \log \log h\rceil }2^{t}=O\left(n\cdot 2^{1+\lceil \log \log h\rceil }\right)=O(n\log h).}

في ثلاثة أبعاد

ولتعميم هذا البناء على الحالة ثلاثية الأبعاد،يا(نسجلن){\displaystyle O(n\log n)}ينبغي استخدام خوارزمية بريباراتا وهونغ لحساب الغلاف المحدب ثلاثي الأبعاد بدلاً من مسح غراهام، كما يجب استخدام نسخة ثلاثية الأبعاد من مسيرة جارفيس. ويبقى التعقيد الزمني كما هو.يا(نسجلح){\displaystyle O(n\log h)}[ 1 ]

الشفرة الزائفة

في الشفرة الزائفة التالية ، تُعتبر النصوص بين قوسين والمكتوبة بخط مائل تعليقات. لفهم الشفرة الزائفة التالية فهمًا كاملًا، يُنصح بأن يكون القارئ على دراية مسبقة بخوارزميات مسح غراهام وجارفيس لحساب الغلاف المحدب.ج{\displaystyle C}، لمجموعة من النقاط، P{\displaystyle P}.

الإدخال: ضبطP{\displaystyle P}معن{\displaystyle n}نقاط.
الناتج: مجموعةج{\displaystyle C}معح{\displaystyle h}النقاط، الغلاف المحدب لـP{\displaystyle P}.
(اختر نقطة منP{\displaystyle P}وهو أمر مضمون أن يكون فيج{\displaystyle C}(على سبيل المثال، النقطة ذات الإحداثي y الأدنى.)
(تستغرق هذه العمليةيا(ن){\displaystyle {\mathcal {O}}(n)}الوقت: على سبيل المثال، يمكننا ببساطة التكرار من خلالP{\displaystyle P}.)
ص1:=Pأناجك_SتيأRتي(P){\displaystyle p_{1}:=PICK\_START(P)}
(ص0{\displaystyle p_{0}}يُستخدم في جزء مسيرة جارفيس من خوارزمية تشان هذه،
وبالتالي لحساب النقطة الثانية،ص2{\displaystyle p_{2}}، في الغلاف المحدب لـP{\displaystyle P}.)
(ملحوظة:ص0{\displaystyle p_{0}}ليست نقطة منP{\displaystyle P}.)
(للمزيد من المعلومات، انظر التعليقات القريبة من الجزء المقابل من خوارزمية تشان.)
ص0:=(-،0){\displaystyle p_{0}:=(-\infty ,0)}
(ملحوظة:ح{\displaystyle h}، عدد النقاط في الغلاف المحدب النهائي لـP{\displaystyle P}( غير معروف.)
(هذه هي التكرارات اللازمة لاكتشاف قيمةم{\displaystyle m}وهو تقدير لـح{\displaystyle h}.)
(حم{\displaystyle h\leq m}هذا مطلوب لخوارزمية تشان لإيجاد الغلاف المحدب لـP{\displaystyle P}.)
(وبشكل أكثر تحديدًا، نريدحمح2{\displaystyle h\leq m\leq h^{2}}حتى لا يتم إجراء الكثير من التكرارات غير الضرورية
وبالتالي فإن التعقيد الزمني لخوارزمية تشان هذه هويا(نسجلح){\displaystyle {\mathcal {O}}(n\log h)}.)
(كما هو موضح أعلاه في هذه المقالة، يتم استخدام استراتيجية حيث يكون الحد الأقصىسجلسجلن{\displaystyle \log \log n}يلزم إجراء تكرارات للعثور علىم{\displaystyle m}.)
(ملاحظة: النهائي)م{\displaystyle m}قد لا يكون مساوياً لـح{\displaystyle h}لكنها لا تكون أصغر من ذلك أبداًح{\displaystyle h}وأكبر منح2{\displaystyle h^{2}}.)
(ومع ذلك، تتوقف خوارزمية تشان هذه بمجردح{\displaystyle h}يتم تنفيذ تكرارات الحلقة الخارجية،
أي حتى لومح{\displaystyle m\neq h}لا يؤدي الغرض المطلوبم{\displaystyle m}تكرارات الحلقة الخارجية.)
(للمزيد من المعلومات، انظر إلى جزء مسيرة جارفيس من هذه الخوارزمية أدناه، حيثج{\displaystyle C}يتم إرجاعها إذاصأنا+1==ص1{\displaystyle p_{i+1}==p_{1}}.)
ل1تسجلسجلن{\displaystyle 1\leq t\leq \log \log n}يفعل
(ضبط المعلمة)م{\displaystyle m}بالنسبة للتكرار الحالي. يتم استخدام "مخطط التربيع" كما هو موضح أعلاه في هذه المقالة.
توجد مخططات أخرى: على سبيل المثال، "مخطط المضاعفة"، حيثم=2ت{\displaystyle m=2^{t}}، لت=1،...،سجلح{\displaystyle t=1,\dots ,\left\lceil \log h\right\rceil }.
أما إذا تم استخدام "مخطط المضاعفة"، فإن التعقيد الزمني الناتج لخوارزمية تشان هذه هويا(نسجل2ح){\displaystyle {\mathcal {O}}(n\log ^{2}h)}.)
م:=22ت{\displaystyle m:=2^{2^{t}}}
(قم بتهيئة قائمة (أو مصفوفة) فارغة لتخزين نقاط الغلاف المحدب لـP{\displaystyle P}(كما يتم العثور عليها.)
ج:=(){\displaystyle C:=()}
أدد(ج،ص1){\displaystyle ADD(C,p_{1})}
(مجموعة نقاط مقسمة بشكل عشوائي)P{\displaystyle P}داخلك=نم{\displaystyle K=\left\lceil {\frac {n}{m}}\right\rceil }مجموعات فرعية من تقريبًام{\displaystyle m}كل عنصر من العناصر.)
سؤال1،سؤال2،...،سؤالك:=SPلأناتي(P،م){\displaystyle Q_{1},Q_{2},\dots ,Q_{K}:=SPLIT(P,m)}
(احسب الغلاف المحدب لجميعك{\displaystyle K}مجموعات فرعية من النقاط،سؤال1،سؤال2،...،سؤالك{\displaystyle Q_{1},Q_{2},\dots ,Q_{K}}.)
(فإنه يأخذيا(كمسجلم)=يا(نسجلم){\displaystyle {\mathcal {O}}(Km\log m)={\mathcal {O}}(n\log m)}وقت.)
لومح2{\displaystyle m\leq h^{2}}إذن، يكون التعقيد الزمني هويا(نسجلح2)=يا(نسجلح){\displaystyle {\mathcal {O}}(n\log h^{2})={\mathcal {O}}(n\log h)}.)
ل1كك{\displaystyle 1\leq k\leq K}يفعل
(احسب الغلاف المحدب للمجموعة الجزئية)ك{\displaystyle k}،سؤالك{\displaystyle Q_{k}}باستخدام مسح غراهام، الذي يأخذيا(مسجلم){\displaystyle {\mathcal {O}}(m\log m)}وقت.)
(جك{\displaystyle C_{k}}هو الغلاف المحدب لمجموعة النقاط الفرعيةسؤالك{\displaystyle Q_{k}}.)
جك:=جيRأحأم_Sجأشمال(سؤالك){\displaystyle C_{k}:=GRAHAM\_SCAN(Q_{k})}
(عند هذه النقطة، الأغلفة المحدبةج1،ج2،...،جك{\displaystyle C_{1},C_{2},\dots ,C_{K}}من مجموعات النقاط الفرعية على التواليسؤال1،سؤال2،...،سؤالك{\displaystyle Q_{1},Q_{2},\dots ,Q_{K}}(تم حسابها.)
(الآن، استخدم نسخة معدلة من خوارزمية مسيرة جارفيس لحساب الغلاف المحدب لـP{\displaystyle P}.)
(يؤدي جارفيس مارش عرضه فييا(نح){\displaystyle {\mathcal {O}}(nh)}الوقت، أينن{\displaystyle n}يمثل عدد نقاط الإدخال وح{\displaystyle h}(عدد النقاط في الغلاف المحدب.)
(نظرًا لأن خوارزمية جارفيس مارش حساسة للمخرجات ، فإن وقت تشغيلها يعتمد على حجم الغلاف المحدب،ح{\displaystyle h}.)
(عمليًا، هذا يعني أن مسيرة جارفيس تؤديح{\displaystyle h}تكرارات الحلقة الخارجية.
في كل تكرار من هذه التكرارات، يكون أداؤه على الأكثرن{\displaystyle n}تكرارات الحلقة الداخلية الخاصة بها.)
(نريد)حمح2{\displaystyle h\leq m\leq h^{2}}لذلك لا نريد أن نؤدي أكثر منم{\displaystyle m}(تكرارات في الحلقة الخارجية التالية.)
(إذا كان التيارم{\displaystyle m}أصغر منح{\displaystyle h}، أيم<ح{\displaystyle m<h}، الغلاف المحدب لـP{\displaystyle P}(لا يمكن العثور عليه.)
(في هذه النسخة المعدلة من مسيرة جارفيس، نقوم بتنفيذ عملية داخل الحلقة الداخلية التي تأخذيا(سجلم){\displaystyle {\mathcal {O}}(\log m)}وقت.
وبالتالي، فإن التعقيد الزمني الإجمالي لهذه النسخة المعدلة هو
يا(مكسجلم)=يا(منمسجلم)=يا(نسجلم)=يا(نسجل22ت)=يا(ن2ت).{\displaystyle {\mathcal {O}}(mK\log m)={\mathcal {O}}(m\left\lceil {\frac {n}{m}}\right\rceil \log m)={\mathcal {O}}(n\log m)={\mathcal {O}}(n\log 2^{2^{t}})={\mathcal {O}}(n2^{t}).}
لومح2{\displaystyle m\leq h^{2}}إذن، يكون التعقيد الزمني هويا(نسجلح2)=يا(نسجلح){\displaystyle {\mathcal {O}}(n\log h^{2})={\mathcal {O}}(n\log h)}.)
ل1أنام{\displaystyle 1\leq i\leq m}يفعل
(ملاحظة: هنا، نقطة في الغلاف المحدب لـP{\displaystyle P}هذا أمر معروف بالفعل، أيص1{\displaystyle p_{1}}.)
(في حلقة التكرار الداخلية هذه ،ك{\displaystyle K}النقاط التالية المحتملة التي يجب أن تكون على الغلاف المحدب لـP{\displaystyle P}،qأنا،1،qأنا،2،...،qأنا،ك{\displaystyle q_{i,1},q_{i,2},\dots ,q_{i,K}}(يتم حسابها.)
(كل من هؤلاءك{\displaystyle K}النقاط المحتملة التالية تأتي من منظور مختلفجك{\displaystyle C_{k}}:
إنه،qأنا،ك{\displaystyle q_{i,k}}هي نقطة محتملة تالية على الغلاف المحدب لـP{\displaystyle P}وهو جزء من الغلاف المحدب لـجك{\displaystyle C_{k}}.)
(ملحوظة:qأنا،1،qأنا،2،...،qأنا،ك{\displaystyle q_{i,1},q_{i,2},\dots ,q_{i,K}}يعتمد علىأنا{\displaystyle i}أي، لكل تكرارأنا{\displaystyle i}، هناكك{\displaystyle K}النقاط التالية المحتملة التي يجب أن تكون على الغلاف المحدب لـP{\displaystyle P}.)
(ملاحظة: في كل تكرار)أنا{\displaystyle i}، وهي واحدة فقط من النقاط بينqأنا،1،qأنا،2،...،qأنا،ك{\displaystyle q_{i,1},q_{i,2},\dots ,q_{i,K}}تُضاف إلى الغلاف المحدب لـP{\displaystyle P}.)
ل1كك{\displaystyle 1\leq k\leq K}يفعل
(جأRVأناS_بأناشمالأRY_SهـأRجح{\displaystyle JARVIS\_BINARY\_SEARCH}يجد النقطةدجك{\displaystyle d\in C_{k}}بحيث تكون الزاويةصأنا-1صأناد{\displaystyle \measuredangle p_{i-1}p_{i}d}يتم تحقيق أقصى قدر من الكفاءة ،
أينصأنا-1صأناد{\displaystyle \measuredangle p_{i-1}p_{i}d}الزاوية بين المتجهينصأناصأنا-1{\displaystyle {\overrightarrow {p_{i}p_{i-1}}}}وصأناد{\displaystyle {\overrightarrow {p_{i}d}}}. هذهد{\displaystyle d}يتم تخزينها فيqأنا،ك{\displaystyle q_{i,k}}.)
(لا يلزم حساب الزوايا مباشرة: يمكن استخدام اختبار التوجيه .)
(جأRVأناS_بأناشمالأRY_SهـأRجح{\displaystyle JARVIS\_BINARY\_SEARCH}يمكن تنفيذه فييا(سجلم){\displaystyle {\mathcal {O}}(\log m)}وقت .)
(ملاحظة: في التكرارأنا=1{\displaystyle i=1}،صأنا-1=ص0=(-،0){\displaystyle p_{i-1}=p_{0}=(-\infty ,0)}وص1{\displaystyle p_{1}}معروفة وهي نقطة في الغلاف المحدب لـP{\displaystyle P}:
في هذه الحالة، تكمن الفكرة فيP{\displaystyle P}(مع أدنى قيمة للإحداثي y.)
qأنا،ك:=جأRVأناS_بأناشمالأRY_SهـأRجح(صأنا-1،صأنا،جك){\displaystyle q_{i,k}:=JARVIS\_BINARY\_SEARCH(p_{i-1},p_{i},C_{k})}
(اختر النقطة)z{qأنا،1،qأنا،2،...،qأنا،ك}{\displaystyle z\in \{q_{i,1},q_{i,2},\dots ,q_{i,K}\}}مما يزيد الزاوية إلى أقصى حدصأنا-1صأناz{\displaystyle \measuredangle p_{i-1}p_{i}z}لتكون النقطة التالية على الغلاف المحدب لـP{\displaystyle P}.)
صأنا+1:=جأRVأناS_شمالهـXتي_جح_Pياأناشمالتي(صأنا-1،صأنا،(qأنا،1،qأنا،2،...،qأنا،ك)){\displaystyle p_{i+1}:=JARVIS\_NEXT\_CH\_POINT(p_{i-1},p_{i},(q_{i,1},q_{i,2},\dots ,q_{i,K}))}
(تنتهي مسيرة جارفيس عند النقطة المحددة التالية على الهيكل المحدب،صأنا+1{\displaystyle p_{i+1}}، هي النقطة الابتدائية،ص1{\displaystyle p_{1}}.)
لوصأنا+1==ص1{\displaystyle p_{i+1}==p_{1}}
(أعد الغلاف المحدب لـP{\displaystyle P}والذي يحتويأنا=ح{\displaystyle i=h}نقاط.)
(ملاحظة: بالطبع، لا داعي للعودة)صأنا+1{\displaystyle p_{i+1}}وهو ما يساويص1{\displaystyle p_{1}}.)
يعودج:=(ص1،ص2،...،صأنا){\displaystyle C:=(p_{1},p_{2},\dots ,p_{i})}
آخر
أدد(ج،صأنا+1){\displaystyle ADD(C,p_{i+1})}
(إفستان)م{\displaystyle m}تكرارات نقطةصأنا+1{\displaystyle p_{i+1}}لم يتم العثور عليه، لذلكصأنا+1==ص1{\displaystyle p_{i+1}==p_{1}}، ثمم<ح{\displaystyle m<h}.)
(نحتاج إلى البدء من جديد بقيمة أعلى لـم{\displaystyle m}.)

تطبيق

تتضمن ورقة تشان عدة اقتراحات قد تُحسّن الأداء العملي للخوارزمية، على سبيل المثال:

  • عند حساب الأغلفة المحدبة للمجموعات الفرعية، قم بإزالة النقاط التي لا تقع في الغلاف المحدب من الاعتبار في عمليات التنفيذ اللاحقة.
  • يمكن الحصول على الأغلفة المحدبة لمجموعات النقاط الأكبر حجماً عن طريق دمج الأغلفة المحدبة المحسوبة مسبقاً، بدلاً من إعادة الحساب من الصفر.
  • بناءً على الفكرة المذكورة أعلاه، تكمن التكلفة الرئيسية للخوارزمية في المعالجة المسبقة، أي حساب الأغلفة المحدبة للمجموعات. ولتقليل هذه التكلفة، يمكننا إعادة استخدام الأغلفة المحسوبة من التكرار السابق ودمجها مع زيادة حجم المجموعة.

الإضافات

تتضمن ورقة تشان بعض المشكلات الأخرى التي يمكن جعل خوارزمياتها المعروفة حساسة للإخراج الأمثل باستخدام أسلوبه، على سبيل المثال:

  • حساب الغلاف السفليل(S){\displaystyle L(S)}من مجموعةS{\displaystyle S}لن{\displaystyle n}القطع المستقيمة، والتي تُعرف بأنها الحد السفلي لشبه المنحرف غير المحدود الذي يتكون من التقاطعات.
  • قدم هيرشبرغر [ 5 ]يا(نسجلن){\displaystyle O(n\log n)}خوارزمية يمكن تسريعها إلىيا(نسجلح){\displaystyle O(n\log h)}حيث يمثل h عدد الحواف في الغلاف
  • بناء خوارزميات حساسة للمخرجات للأغلفة المحدبة ذات الأبعاد الأعلى. باستخدام تجميع النقاط واستخدام هياكل بيانات فعالة،يا(نسجلح){\displaystyle O(n\log h)}يمكن تحقيق التعقيد بشرط أن يكون h من رتبة متعددة الحدود فين{\displaystyle n}.

انظر أيضاً

مراجع

  1. 1 2 تشان، تيموثي م. (1996). "خوارزميات الغلاف المحدب الأمثل الحساسة للمخرجات في بعدين وثلاثة أبعاد" . الهندسة المنفصلة والحسابية . 16 (4): 361-368 . doi : 10.1007/BF02712873 .
  2. نيلسن، فرانك (2000). "التجميع والاستعلام: نموذج للحصول على خوارزميات حساسة للمخرجات". الهندسة المنفصلة والحسابية . سلسلة محاضرات في علوم الحاسوب. المجلد 1763. الصفحات 250-257 . doi : 10.1007/978-3-540-46515-7_21 . ISBN   978-3-540-67181-7.
  3. فرانك نيلسن. " الهندسة الحسابية التكيفية ". أطروحة دكتوراه، INRIA ، 1996.
  4. شازيل، برنارد ؛ ماتوشيك، جيري (1995). "إزالة العشوائية من خوارزمية الغلاف المحدب الحساسة للمخرجات في ثلاثة أبعاد" . الهندسة الحسابية . 5 : 27-32 . doi : 10.1016/0925-7721(94)00018-Q .
  5. هيرشبرغر، جون (1989). "إيجاد الغلاف العلوي لـ n قطعة مستقيمة في زمن O(n log n)". رسائل معالجة المعلومات . 33 (4): 169-174 . doi : 10.1016/0020-0190(89)90136-1 .