خوارزمية تغليف الهدايا

في الهندسة الحسابية ، تعتبر خوارزمية تغليف الهدايا خوارزمية لحساب الغلاف المحدب لمجموعة معينة من النقاط.
حالة مستوية
في الحالة ثنائية الأبعاد، تُعرف الخوارزمية أيضًا باسم مسيرة جارفيس ، نسبةً إلى آر. إيه. جارفيس الذي نشرها عام ١٩٧٣؛ وتتميز بتعقيد زمني من رتبة O ( nh ) ، حيث n هو عدد النقاط و h هو عدد النقاط على الغلاف المحدب. ويُعدّ أداؤها في الواقع العملي أفضل من خوارزميات الغلاف المحدب الأخرى عندما تكون n صغيرة أو عندما يُتوقع أن تكون h صغيرة جدًا بالنسبة إلى n . في الحالات العامة، تتفوق عليها العديد من الخوارزميات الأخرى (انظر خوارزميات الغلاف المحدب ).
الخوارزمية
لتبسيط الشرح، يفترض الوصف أدناه أن النقاط تقع في مواقع عامة ، أي لا توجد ثلاث نقاط على استقامة واحدة . يمكن تعديل الخوارزمية بسهولة لمعالجة مشكلة الاستقامة، بما في ذلك اختيار ما إذا كان ينبغي الإبلاغ عن النقاط القصوى فقط (رؤوس الغلاف المحدب) أو جميع النقاط الواقعة على الغلاف المحدب . كما يجب أن يحدد التطبيق الكامل كيفية التعامل مع الحالات الشاذة عندما يحتوي الغلاف المحدب على رأس واحد أو رأسين فقط، بالإضافة إلى معالجة مشكلات دقة العمليات الحسابية المحدودة ، سواءً في حسابات الحاسوب أو بيانات الإدخال.
تبدأ خوارزمية تغليف الهدايا بنقطة i = 0 ونقطة p₀ معروفة بأنها تقع على الغلاف المحدب، مثلاً، النقطة الموجودة في أقصى اليسار، ثم تختار النقطة pᵢ₊₁ بحيث تقع جميع النقاط على يمين الخط pᵢ - pᵢ₊₁ . يمكن إيجاد هذه النقطة في زمن O ( n ) بمقارنة الزوايا القطبية لجميع النقاط بالنسبة للنقطة pᵢ التي تُعتبر مركز الإحداثيات القطبية . بجعل i = i + 1، وتكرار العملية حتى الوصول إلى pᵢ₊₁ = p₀ مرة أخرى ، نحصل على الغلاف المحدب في h خطوة. في بُعدين، تُشبه خوارزمية تغليف الهدايا عملية لف خيط (أو ورق تغليف) حول مجموعة النقاط.
يمكن توسيع هذا النهج ليشمل أبعادًا أعلى.
الشفرة الزائفة

خوارزمية jarvis(S) هي // S هي مجموعة النقاط // ستكون P مجموعة النقاط التي تشكل الغلاف المحدب. حجم المجموعة النهائي هو i. pointOnHull := أقصى نقطة يسارية في S // والتي يُضمن أنها جزء من CH(S) i := 0 يكرر P[i] := نقطة على الهيكل endpoint := S[0] // نقطة النهاية الأولية لحافة مرشحة على الهيكل لكل j من 0 إلى |S | // يُعدّ تطابق نقطة النهاية مع نقطة على الهيكل حالة نادرة، ولا يمكن أن تحدث إلا عندما يكون j == 1 ولم يتم بعد تحديد نقطة نهاية أفضل للحلقة. إذا كانت ( نقطة النهاية == نقطة على الهيكل) أو (S[j] على يسار الخط من P[i] إلى نقطة النهاية) endpoint := S[j] // تم العثور على منعطف يساري أكبر، قم بتحديث نقطة النهاية i := i + 1 نقطة على الهيكل := نقطة النهاية حتى نقطة النهاية == P[0] // التف حول نقطة الهيكل الأولى
تعقيد
تتحقق الحلقة الداخلية من كل نقطة في المجموعة S ، وتتكرر الحلقة الخارجية لكل نقطة على الهيكل. وبالتالي، يكون إجمالي وقت التشغيل هويعتمد وقت التشغيل على حجم المخرجات، لذا فإن مسيرة جارفيس هي خوارزمية حساسة للمخرجات .
ومع ذلك، ولأن وقت التشغيل يعتمد خطيًا على عدد رؤوس الهيكل، فإنه أسرع من تُستخدم خوارزميات مثل مسح غراهام عندما يكون عدد رؤوس الغلاف h أصغر من log n . وتجمع خوارزمية تشان ، وهي خوارزمية أخرى للغلاف المحدب، بين الاعتماد اللوغاريتمي لمسح غراهام وحساسية الإخراج لخوارزمية تغليف الهدايا، مما يحقق زمن تشغيل تقاربي. وهذا يُحسّن كلاً من مسح غراهام وتغليف الهدايا.
انظر أيضاً
مراجع
- كورمن، توماس هـ .؛ ليسرسون، تشارلز إي .؛ ريفست، رونالد ل .؛ شتاين، كليفورد (2001) [1990]. "33.3: إيجاد الغلاف المحدب". مقدمة في الخوارزميات ( الطبعة الثانية). مطبعة معهد ماساتشوستس للتكنولوجيا وماكجرو هيل. الصفحات 955-956 . ISBN 0-262-03293-7.
- جارفيس، ر. أ. (1973). "حول تحديد الغلاف المحدب لمجموعة محدودة من النقاط في المستوى". رسائل معالجة المعلومات . 2 : 18-21 . doi : 10.1016/0020-0190(73)90020-3 .
- متعددات الوجوه
- خوارزميات الغلاف المحدب
