2009-01-25 56 views
5

मेरे पास बड़ी संख्या में शिखर हैं, उनमें से कुछ किनारों हैं, कुछ अनावश्यक हैं (आकार के अंदर) और मैं उनको हटाना चाहता हूं।शिखर के किनारों (बहुभुज) को खोजने के लिए सर्वश्रेष्ठ एल्गोरिदम

सबसे सरल एल्गोरिदम मैं सोच सकता हूं कि अगर वे दूसरों द्वारा गठित आकार को हिट करते हैं तो एक-एक करके जांच कर सकते हैं। लेकिन यह एक बहुत धीमी एल्गोरिदम होना चाहिए।

मैंने किनारे से एक को चुनने के बारे में सोचा (प्रति उदाहरण मूल से सबसे दूर) और इस शुरुआत से सबसे लंबा रास्ता गणना करें ... किनारे का रास्ता प्राप्त करना चाहिए, है ना?

कोई सुझाव?

+0

क्या आप _a_ बहुभुज चाहते हैं जो सभी बिंदुओं को कवर करता है, या आप _smallest_ (क्षेत्र के संदर्भ में) बहुभुज चाहते हैं जो सभी बिंदुओं को शामिल करता है? – sykora

+0

@ सिकोरा, एक बहुभुज जो सभी बिंदुओं को शामिल करता है। ग्राहम स्कैन मान्य लगता है। धन्यवाद। – fabiopedrosa

उत्तर

7

पॉलीहेड्रल एल्गोरिदम के साथ चाल आपके इनपुट और आपके वांछित आउटपुट के साथ फिट बैठ रही है, क्योंकि पॉलीहेड्रॉन का प्रतिनिधित्व करने के लिए एक से अधिक तरीके हैं और प्रतिनिधित्व के बीच कनवर्ट करना महंगा हो सकता है। इस मामले में, आप अंक से शुरू कर रहे हैं और शिखर के साथ समाप्त करना चाहते हैं, इसलिए convex hull के शीर्षकों की गणना करने के लिए एल्गोरिदम चाल चलाना चाहिए, हालांकि यह 2-डी मामले से पहले इसे विस्तारित करने के लिए कुछ प्रयास कर सकता है। यह इनपुट कॉलर की संख्या में ओ (एन लॉग एन) है।

+0

TH ग्राहम स्कैन मूल रूप से आपको उत्तल हल देता है। – shoosh

6

मुझे नहीं पता कि बहुभुज को खोजने के लिए सबसे अच्छा एल्गोरिदम क्या है, लेकिन आप जिस बहुभुज को ढूंढ रहे हैं उसे "उत्तल हुल" कहा जाता है।

इसके लिए खोज करके, आपको एक मिलान करने वाला एल्गोरिदम मिलना चाहिए।

+0

मुझे नहीं लगता कि वह उत्तल हॉल की तलाश में है, क्योंकि वह अपने शिखर से बने बहुभुज के किनारों को चाहता है। एक उत्तल हॉल कुछ ऐसे लोगों को भी बाहर कर देगा जो वह चाहते हैं। – sykora

+0

"कुछ अनावश्यक हैं (आकार के अंदर) और मैं उनको हटाना चाहता हूं।" – Timbo

+0

मैं किनारों को कम करने की तलाश नहीं कर रहा हूं ... मैं एक बहुभुज संग्रह से बहुभुज बनाने में देख रहा हूं जिसमें उनमें से कुछ अनावश्यक हैं। – fabiopedrosa

4

The Convex Hull कम्प्यूटेशनल ज्यामिति की अधिक शोध समस्याओं में से एक है। ग्राहम स्कैन सरल convex hull algorithms में से एक है, लेकिन निश्चित रूप से केवल एक ही नहीं है। The Gift-wrapping Algorithm, जिसे जार्विस 'मार्च भी कहा जाता है, मुझे सबसे सरल पता है। The Stony Brook algorithm repository में सी और सी ++ में उत्तल हल एल्गोरिदम के कई कार्यान्वयन हैं। Geometry in Action मुख्य रूप से उत्तल हल्स के अनुप्रयोग दिखाता है। यहां low-dimensional और arbitrary-dimensional उत्तल हॉल गणना कार्यक्रमों का संग्रह दिया गया है।

 संबंधित मुद्दे

  • कोई संबंधित समस्या नहीं^_^