निम्नतम x-coord के साथ बिंदु के साथ प्रारंभ करें। (इसे प्वाइंट एक्स पर कॉल करें) "सीमा बिंदु" बिंदु बिंदु के साथ शुरू होता है, और बिंदु के माध्यम से लंबवत रेखा का निर्माण, पॉइंटएक्स के बाईं ओर कोई अन्य बिंदु नहीं होना चाहिए) धीरे-धीरे लाइन को दक्षिणावर्त घुमाकर सीमा में अगला बिंदु ढूंढें (या counterclockwise) जब तक लाइन किसी अन्य बिंदु को छूता है, (नीचे देखें)। उस बिंदु को सेट में जोड़ें और अगले बिंदु को पाने के लिए उस अगले बिंदु के साथ दोहराएं, जब तक आप अंततः मूल बिंदु x पर वापस न आएं। आप एनपीडब्ल्यू के पास पूर्ण सेट की सीमा बनाने वाले बिंदुओं का एक सेट है। इस जोड़ी को अलग-अलग जोड़ी को खोजने के लिए इस कम सेट में प्रत्येक जोड़ी के बीच दूरी की तुलना करें।
"रेखा को घुमाएं" (प्रत्येक अनुक्रमिक सीमा बिंदु को खोजने के लिए), उस बिंदु को ले जाएं जो पिछली सीमा बिंदु के लिए उपयोग की जाने वाली रेखा के लिए लंबवत दिशा में "सबसे दूर" है, और अंतिम सीमा के बीच एक नई रेखा का निर्माण बिंदु और वह "अगला" बिंदु। फिर सत्यापित करें कि उस नई लाइन द्वारा बनाई गई नई लंबवत दिशा में कोई अन्य बिंदु नहीं है। यदि इस रेखा या आखिरी पंक्ति के लिए लंबवत विच्छेदन में कोई अन्य बिंदु "फर्थथ आउट" नहीं है, तो अगली सीमा बिंदु के लिए यह सही सीजेहॉइस है, यदि ऐसा कोई बिंदु है, तो उस पर स्विच करें और पुनः प्रयास करें।
स्रोत
2009-10-24 16:31:36
यह ओ (एन) केवल उत्तल हल ढूंढने के बाद है - यदि आपको केवल अंक का एक सेट दिया गया है तो यह पहले उत्तल होल खोजने के लिए ओ (एन लॉग एन) हो सकता है। – ShreevatsaR
@ श्रीवत्सरा: बेशक। मेरा जवाब स्पष्ट रूप से कहता है "जहां एन उत्तल हॉल में अंक की संख्या है", जो स्पष्ट करता है कि आपको पहले उत्तल हल ढूंढने की आवश्यकता है। –
हां, शायद यह करता है। स्पष्टता पाठक की आंखों में है। :-) (प्रश्न में कार्य के लिए एल्गोरिदम स्पष्ट रूप से ओ (एन) नहीं है जहां n उत्तल उत्थान में बिंदुओं की संख्या है; जैसा कि आप कहते हैं, यह दूसरा भाग है।) वैसे भी, मैंने सोचा कि यह उल्लेखनीय है , केवल पूर्णता के लिए: लोग बाद में खोज इंजन के माध्यम से इन उत्तरों पर पहुंच सकते हैं, सावधानीपूर्वक पढ़ नहीं सकते हैं, और भ्रमित हो सकते हैं, आदि – ShreevatsaR