2013-07-03 10 views
11

की साजिश रचने मैं अपनी पत्नी से इस कार्य को देखते हुए किया गया है, तो यह सर्वोच्च प्राथमिकता :-)रूपरेखा एल्गोरिथ्म

मैं अंक की एक संग्रह है है (वास्तव में Northings & Eastings, लेकिन यह वास्तव में बात नहीं करता है)। मैं उन बिंदुओं को लेना चाहता हूं और वेक्टरों का एक सेट बनाना चाहता हूं जो रूपरेखा का प्रतिनिधित्व करते हैं, इसलिए मैं Google धरती पर साजिश कर सकता हूं।

तो, की तरह कुछ:

#      # 
      #    #  # 
#    # # 
     # # 

      # 

देना चाहेंगे:

#-----------------------#-- 
/       \ --# 
#     #------------/ 
\-----#  /
     \ /
      # 

सम्भावित समाधान मैं के साथ आया था, हर बिंदु के बीच वैक्टर गणना करने के लिए, और त्यागने हर वेक्टर कि ओवरलैप हो रही है है एक और वेक्टर मैंने अभी तक इसे लागू नहीं किया है (वास्तव में सुनिश्चित नहीं है), लेकिन मुझे आश्चर्य हुआ कि क्या अन्य तरीके हैं।

एल्गोरिदम को केवल दो बार भागना पड़ता है, इसलिए यदि प्रति घंटे एक घंटे और रैम की गीगा लगती है तो यह कोई मुद्दा नहीं है।

+0

अच्छा सवाल। आपको http://programmers.stackexchange.com या http://math.stackexchange.com से बेहतर प्रतिक्रिया मिल सकती है – Fogmeister

+3

वह आकार क्यों? अंक के [उत्तल हल] (http://en.wikipedia.org/wiki/Convex_hull) क्यों नहीं खींचे? – Chowlett

+0

@Chowlett बस इसे उत्तर दें; यह उल्लेख करने वाला था कि कई "ठोस" आकार हैं जो उन बिंदुओं के साथ किए जा सकते हैं। –

उत्तर

7

उम्मीदवार बहुभुज का निरूपण

यह आप एक बहुभुज ऐसी है कि

  • अपने कोने के सभी के लिए क्या देख रहे हैं की तरह लगता है अपनी बात कर रहे हैं सेट
  • यह अपनी बात में हर बिंदु शामिल सेट

यह आपके पॉइंट सेट के संबंध में उम्मीदवार बहुभुज के व्यवहार्य सेट को परिभाषित करता है।

उत्तल हुल?

एक उद्देश्य कार्य "इन बहुभुजों में से एक हो सकता है, कम से कम शिखर के साथ एक चुनें।" यह आपके पॉइंट सेट के उत्तल हॉल होगा। अन्य उत्तर पता जो दृष्टिकोण है, इसलिए मैं इसके बारे में और कुछ नहीं कहूंगा।

कुछ अधिक ...

लेकिन वह केवल उद्देश्य समारोह आप चुन सकते हैं नहीं है। उदाहरण के लिए, इसके बजाय आप कम शोर वाले होने के बीच एक व्यापार-बंद कर सकते हैं, कम क्षेत्रफल हो सकते हैं, और पर कम-तेज कोण होने के बीच। मुझे उस समस्या के लिए किसी मौजूदा नामित एल्गोरिदम के बारे में पता नहीं है, लेकिन यह निश्चित रूप से एक दिलचस्प है।

उत्तल उत्थान को ढूंढकर शुरू करने के लिए एक दृष्टिकोण शुरू किया जा सकता है, फिर उन स्थानों में आंतरिक चरम पर किनारों को "खींचें" जहां अतिरिक्त चरम की लागत कम क्षेत्रफल होने के लाभ से अधिक हो जाती है।

उदाहरण के लिए

, इस:

enter image description here

इस बन जाएगा, शीर्ष के साथ बढ़त में खींच कर:

enter image description here

यह दूसरा बहुभुज एक अधिक "प्राकृतिक" हो सकता है बिंदु सेट के लिए उपयुक्त है, भले ही यह बिंदु सेट के उत्तल हॉल नहीं है।

+1

2 डी पॉइंट सेट के लिए, "अवतल" हल जिसे आप वर्णित करते हैं, अल्फा आकार के साथ मिल सकते हैं। – Cyril

+0

@ एक्सर्टो नाइस, मैंने कुछ नया सीखा। :) ओपी निश्चित रूप से उन पर एक नज़र रखना चाहिए। –

2

आप शायद अंक के उत्तल हॉल की तलाश में हैं; इसे खोजने के लिए variety of algorithms हैं।

0

Here code.google.com

Here से उत्तल पतवार जानने के लिए एक पुस्तकालय एक ही बात के लिए एक GitHub पुस्तकालय, लेकिन जार्विस के 'मैच उत्तल हल एल्गोरिथ्म उपयोग कर रहा है।

आशा है कि वे मदद करें!

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