بدن محدب هو شكل محدب الحد الأدنى الذي يغطي تماما مجموعة معينة من النقاط. لديها تطبيقات واسعة في مختلف المجالات ، بما في ذلك الرسومات ، ورؤية الكمبيوتر ، والتحسين الهندسي ، وحتى الألعاب.
بناء بدن محدب هو مشكلة كلاسيكية في الهندسة. هناك العديد من الخوارزميات لحلها ، مثل خوارزمية جارفيس وخوارزمية جراهام وخوارزمية ديكسترا.
تعرف خوارزمية جارفيس أيضا باسم"لف الهدية". لأنه يقوم على اختيار خطوة بخطوة من نقطة قذيفة القادمة. خوارزمية غراهام ، من ناحية أخرى ، يستخدم نقطة الفرز والمكدس لبناء قذيفة. خوارزمية ديكسترا هو تعديل خوارزمية غراهام ويحسن أدائها. كل من هذه الخوارزميات لها مزاياها وعيوبها ، لكنها كلها قادرة على حل مشكلة بناء بدن محدب.
في هذه المقالة ، سنلقي نظرة على خوارزمية جارفيس خطوة بخطوة. سنبدأ بشرح المفاهيم والتعاريف الأساسية ، ثم ننتقل إلى وصف الخوارزمية وتنفيذها في الكود. في النهاية ، سننظر في أمثلة على استخدام الخوارزمية ومناقشة تعقيدها.
- الخطوة 1: تحديد بدن محدب
- الخطوة 2: جمع البيانات
- الخطوة 3: بناء بدن محدب
- الخطوة 4: إزالة النقاط غير المحدبة
- الخطوة 5: تقسيم الهيكل المحدب إلى وجوه
- الخطوة 6: تحقق من تحدب الوجوه
- الخطوة 7: إخراج النتيجة
- سؤال وجواب
- ما هو بدن محدب?
- لماذا بناء بدن محدب?
- ما هي طرق هيكل بدن محدب موجودة?
- كيف تعمل خوارزمية جارفيس?
- كيف تعمل خوارزمية جراهام?
- ما هو الظل في مشكلة بناء بدن محدب?
الخطوة 1: تحديد بدن محدب
بدن محدب هو شكل محدب الحد الأدنى الذي يحتوي على جميع النقاط المحددة في الطائرة أو في الفضاء. يمكن تعريفه على أنه تقاطع جميع المجموعات المحدبة التي تحتوي على نقاط معينة.
في سياق الخوارزمية لبناء بدن محدب من النقاط على مستوى ، يمكن تمثيل بدن محدب كمضلع محدب يتكون من نقاط محددة. يتكون هذا المضلع من رؤوس وحواف.
يمكن استخدام خوارزميات مختلفة لبناء بدن محدب ، على سبيل المثال:
- خوارزمية جراهام
- خوارزمية جارفيس
- خوارزمية ميلكر الأدوات
- خوارزمية تشان
كل من هذه الخوارزميات لها مزاياها وعيوبها ويمكن أن تكون فعالة في المواقف المختلفة. من المهم اختيار الخوارزمية المناسبة اعتمادا على المهمة.
بعد ذلك ، سيتم النظر في الخطوات الأساسية لبناء بدن محدب باستخدام خوارزمية جراهام. هذه الخوارزمية هي واحدة من الخوارزميات الأكثر شعبية وفعالية لبناء بدن محدب من النقاط على متن طائرة.
الخطوة 2: جمع البيانات
قبل البدء في بناء بدن محدب ، من الضروري أن يكون لديك مجموعة بيانات بناء عليها سيتم بناؤها. في هذه الخطوة ، سننظر في كيفية جمع البيانات بشكل صحيح قبل بدء العمل.
1. تحديد مصدر البيانات: تحتاج إلى تحديد المكان الذي ستتلقى منه البيانات. يمكن أن يكون ملفا أو قاعدة بيانات أو واجهة برمجة تطبيقات أو أي مصدر آخر. تأكد من أن لديك حق الوصول إلى مصدر البيانات المحدد والحصول على جميع الأذونات اللازمة إذا لزم الأمر.
2. الحصول على البيانات: الخطوة التالية هي الحصول على البيانات نفسها. اعتمادا على مصدر البيانات المحدد ، قد يتضمن ذلك قراءة ملف أو إجراء استعلام قاعدة بيانات أو إرسال طلبات واجهة برمجة التطبيقات. من المهم التأكد من أن تتلقى جميع البيانات اللازمة ، وأنها كاملة ودقيقة.
3. التحقق من البيانات: بعد تلقي البيانات ، من المهم التحقق منها. تأكد من أن جميع البيانات في الشكل الصحيح وتلبية الاحتياجات الخاصة بك. إذا تم العثور على أخطاء أو مشاكل في البيانات ، فارجع إلى الخطوة السابقة وصحح مصدر البيانات.
4. تنظيم البيانات: للعمل مع البيانات بشكل ملائم ، من الضروري تنظيمها. أسهل طريقة هي استخدام جدول أو قائمة حيث يمثل كل صف نقطة بيانات واحدة. عادة ما يتم تجميع البيانات في عمودين-الإحداثيات (س ، ص) من النقاط.
مثال على تنظيم البيانات في شكل جدول:
| لا | . x | y |
|---|---|---|
| 1 | 2.5 | 3.7 |
| 2 | 1.2 | 4.8 |
| 3 | 5.3 | 2.6 |
| 4 | 3.9 | 0.8 |
5. بيانات لبناء بدن محدب: أخيرا ، يجب عليك فقط إبراز البيانات التي سيتم استخدامها لبناء الهيكل المحدب. بشكل عام ، ستكون هذه فقط إحداثيات النقاط (س ، ص). يمكن استبعاد أي بيانات إضافية لا تتعلق بالتحليل الهندسي.
بعد الانتهاء من هذه الخطوات ، سيكون لديك مجموعة بيانات مناسبة لبناء بدن محدب. الآن يمكننا المضي قدما في الخطوة التالية-بناء نقاط بدن محدب.
الخطوة 3: بناء بدن محدب
بعد أن تلقينا قائمة من النقاط مرتبة حسب الزاوية القطبية ، يمكننا المضي قدما في بناء بدن محدب. للقيام بذلك ، سوف نستخدم خوارزمية" نظرة حول " تسمح لنا بإضافة النقاط التي تشكل جزءا من الهيكل المحدب بالتتابع إلى قائمتنا الناتجة.
- نختار النقطة الأولى من القائمة المصنفة ونضيفها إلى قائمتنا الناتجة ، لأن هذه النقطة ستنتمي بالضرورة إلى الهيكل المحدب.
- نأخذ النقطة التالية من القائمة ونتحقق مما إذا كانت تقع على الجانب الأيسر من المتجه الذي تشكله النقطتان السابقتان. إذا كانت النقطة تقع على اليسار ، فإننا نضيفها إلى قائمتنا الناتجة وننتقل إلى النقطة التالية. إذا كانت النقطة تقع على اليمين ، فلا يمكن أن تكون جزءا من الهيكل المحدب ونحن نتخطاها.
- كرر الخطوة 2 لجميع النقاط المتبقية من القائمة المصنفة حتى نعود إلى نقطة البداية.
بعد الانتهاء من الفحص وإضافة جميع النقاط الضرورية إلى القائمة الناتجة ، نحصل على الهيكل المحدب الموصوف في قائمة النقاط هذه.
من المهم ملاحظة أن خوارزمية" البحث حول " تعمل فقط للحالة عندما يتم تعيين النقاط في إحداثيات مكانية ، وليس على مستوى. في حالة المستوى الذي لدينا فيه إحداثيان فقط ، توجد خوارزمية أبسط لبناء الهيكل المحدب تسمى خوارزمية جراهام.
الخطوة 4: إزالة النقاط غير المحدبة
بعد بناء الهيكل المحدب في الخطوة السابقة ، من الممكن أن تبقى النقاط غير المحدبة في المجموعة الناتجة. في هذه الخطوة ، سننظر إلى الخوارزمية لإزالة هذه النقاط.
ستعتمد الخوارزمية على التحقق من الزاوية بين النقاط الثلاث. سننظر في جميع نقاط الهيكل المحدب بترتيب العبور حول المجموعة. دعونا ندعو النقاط الثلاث الأولى أ ، ب ، ج.
لكل عنصر آخر د في المجموعة:
- حساب الزاوية بين القطاعات أب و قبل الميلاد باستخدام صيغة المنتج العددية من ناقلات.
- إذا كانت الزاوية سالبة أو صفرية ، فإن النقطة ج ليست محدبة ، ونزيلها من مجموعة الهيكل المحدب.
- خلاف ذلك ، ننتقل إلى النقاط الثلاث التالية ، حيث يصبح ب ج و د يصبح ب.
وبالتالي ، من خلال تكرار هذه العملية لكل نقطة من المجموعة ، سنكون قادرين على إزالة جميع النقاط غير المحدبة والحصول على الهيكل المحدب النهائي.
الخطوة 5: تقسيم الهيكل المحدب إلى وجوه
بعد أن قمنا ببناء بدن محدب ، من الضروري كسره إلى وجوه. الوجه عبارة عن مقطع خط مستقيم يربط بين رأسين من بدن محدب ويحيط بالجزء الداخلي منه.
يمكن تقسيم بدن محدب إلى وجوه على النحو التالي:
- حدد رأسا تعسفيا من الهيكل المحدب وقم بتسميته على أنه الرأس الحالي.
- حدد الرأس التالي في الاتجاه المعاكس أو الأمامي (اعتمادا على خوارزمية التقسيم المحددة).
- قم بتوصيل الرأس الحالي بالرأس المحدد ، وبالتالي الحصول على وجه واحد من الهيكل المحدب.
- كرر الخطوات من 2 إلى 3 لجميع رؤوس الهيكل المحدب حتى يتم بناء جميع الوجوه.
بعد الانتهاء من هذه الخطوة ، ستتلقى قائمة بجميع وجوه الهيكل المحدب ، والتي يمكن استخدامها في مهام مختلفة ، مثل العثور على التقاطعات بين الوجوه أو تحديد وجود نقطة داخل الهيكل المحدب.
الخطوة 6: تحقق من تحدب الوجوه
بعد أن قمنا ببناء بدن محدب وحصلنا على مجموعة من الرؤوس ، نحتاج إلى التحقق من تحدب كل وجه من القشرة الناتجة.
للقيام بذلك ، يمكننا استخدام خوارزمية للتحقق من تحدب الوجه ، والتي تستند إلى المبدأ التالي:
اختيار الوجه: نبدأ باختيار أحد وجوه الصدفة.
حدد قمة الرأس: حدد أحد رؤوس هذا الوجه.
تحقق من التحدب: لكل قمة أخرى من الوجه ، تحقق مما إذا كان على نفس الجانب من الخط المستقيم الذي يمر عبر قمة الرأس وحافة الوجه المحددة.
كرر لجميع القمم: كرر الخطوات من 2 إلى 3 لجميع رؤوس الوجه.
الوجه محدب: إذا كانت جميع رؤوس الوجه على نفس الجانب من جميع الخطوط المحددة في الخطوة 3 ، فإن الوجه يعتبر محدبا.
كرر لكل وجه: كرر الخطوات من 1 إلى 5 لجميع وجوه القشرة.
نتيجة للخوارزمية ، سوف نتلقى معلومات حول تحدب كل وجه من جوانب القشرة. سيسمح لنا ذلك بالتأكد من أن الغلاف المشيد محدب حقا ولا يحتوي على وجوه غير محدبة.
الخطوة 7: إخراج النتيجة
عندما يتم بناء الهيكل المحدب ، يمكننا استنتاج نتائجه. للقيام بذلك ، استخدم
العلامات
|
|
سيساعد هذا الناتج من النتيجة على تصور تشغيل الخوارزمية بشكل أفضل وفهم نتائجها.
سؤال وجواب
ما هو بدن محدب?
الهيكل المحدب لمجموعة من النقاط هو أصغر مجموعة محدبة تحتوي على جميع نقاط هذه المجموعة.
لماذا بناء بدن محدب?
يجد الهيكل المحدب تطبيقه في العديد من المجالات ، مثل رسومات الكمبيوتر ، والتعرف على الأنماط ، والخوارزميات الهندسية ، وما إلى ذلك. يسمح لك بتبسيط المهام الحالية وحل المهام الجديدة بشكل فعال.
ما هي طرق هيكل بدن محدب موجودة?
هناك عدة طرق لبناء بدن محدب ، بما في ذلك طريقة جارفيس وطريقة خط المسح وخوارزمية جراهام وغيرها الكثير.
كيف تعمل خوارزمية جارفيس?
تعد خوارزمية جارفيس واحدة من أبسط الخوارزميات الشاملة لبناء بدن محدب. يعمل على النحو التالي: يتم تحديد النقطة الموجودة في أقصى اليسار. ثم هناك نقطة تشكل الزاوية اليمنى مع النقطة المحددة. تصبح هذه النقطة هي النقطة التالية في الهيكل المحدب. تتكرر العملية حتى يتم الوصول إلى نقطة البداية.
كيف تعمل خوارزمية جراهام?
تستخدم خوارزمية جراهام كومة لبناء بدن محدب. يبدأ بإيجاد أدنى نقطة يسارية ويفرز النقاط المتبقية بزاوية بالنسبة لتلك النقطة. ثم يضيف النقاط إلى المكدس بالتتابع حتى تشكل منعطفا يسارا. في حالة حدوث منعطف يمين ، فإنه يزيل آخر نقطة مضافة من المكدس. والنتيجة هي بدن محدب.
ما هو الظل في مشكلة بناء بدن محدب?
المماس في مشكلة بناء الهيكل المحدب هو خط مستقيم يلامس الهيكل المحدب ، ويمر عبر نقطة معينة ولا يتقاطع معها.