संदर्भित लेख विचारशील है। हालांकि, मेरा मानना है कि एक "सरल और सुरुचिपूर्ण" समाधान है: भौगोलिक डेटासेट के लिए, दो प्रकार के बाउंडिंग बॉक्स हैं। जो + -180 मेरिडियन को स्ट्रैड नहीं करते हैं उन्हें हमेशा की तरह संग्रहीत और खोजा जा सकता है। जो + -180 मेरिडियन स्ट्रैडल करते हैं, उन्हें एक अर्ध-पूरक रूप में संग्रहीत किया जा सकता है : अर्थात्, अक्षांशों की श्रेणी को हमेशा की तरह संग्रहीत करें, लेकिन इसके बजाय बॉक्स के भीतर शामिल नहीं किए गए अनुदैर्ध्य की सीमा को संग्रहीत करें (और यह इंगित करने के लिए थोड़ा टॉगल करें कि कौन सा रूप है भंडारण का उपयोग किया जा रहा है)। भौगोलिक रूप से अनुक्रमणिका या खोज ट्री संरचनाओं के लिए अनिवार्य रूप से किसी संशोधन की आवश्यकता नहीं है; खोज एल्गोरिदम के लिए केवल एक मामूली संशोधन की आवश्यकता है।
किसी भी दर पर, यहां प्रश्न का समाधान स्वयं है।
मुझे लगता है कि आप इनपुट डिस्क्रिप्शन बॉक्स डिस्क्रिप्टर ((LLx, LLy), (URx, URy) के एक अनुक्रम होने का अनुमान लगाते हैं, जहां:
-540 <= LLx, -180 <= URx, LLx <= 180, और URx <= 180. इसके अलावा -90 <= LLy <= URy <= 90।
एक बिंदु पर (देशांतर, अक्षांश) = (x, y) को बी बी के भीतर और यदि केवल तभी झूठ माना जाता है
LLy <= y <= URy और
या तो LLx <= x <= URx या LLx - 360 <= x <= URx।
आउटपुट के लिए आप सभी निविष्टियों के मिलन वाले सबसे छोटे बाउंडिंग बॉक्स के लिए पैरामीटर चाहेंगे।
स्पष्ट रूप से न्यूनतम बाउंडिंग बॉक्स (MBR) की y- सीमा न्यूनतम और अधिकतम y- मान होगी। एक्स-सीमा के लिए, सबसे बड़ा अंतर खोजने के लिए एक लाइन स्वीप का उपयोग करें ।
यहाँ एल्गोरिथ्म का वर्णन है। इसे समझाने के लिए, मान लीजिए इनपुट में चार बॉक्स हैं,
((-81,-16),(-77,80)),
((77,-19),(156,5)),
((-149,-45),(-90,81)),
((-69,-85),(-36,-76))
यहाँ बक्से का एक आरेख (लाल रंग में) और पहले का MBR (काला) में है, फिर पहले दो, फिर पहले तीन, फिर सभी बक्से हैं।
ध्यान दें कि दूसरे चरण में, पूर्वी और पश्चिमी गोलार्ध में बक्से एक एमबीआर से घिरे हैं जो + -180 डिग्री मेरिडियन को पार करता है, जिससे यह इस नक्शे पर दो अलग-अलग बक्से के रूप में दिखाई देता है। अंतिम चरण में, दक्षिण अमेरिका और अंटार्कटिका के बीच एक छोटे से बॉक्स को समायोजित करने के लिए एमबीआर का विस्तार पूर्व की ओर किया जाना है।
बक्से के सभी एक्स-निर्देशांक निकालें, उन्हें modulo 360 की गणना करें (उन्हें रेंज -180..180 में रखने के लिए), उन्हें आरोही क्रमबद्ध करें, और उन्हें लपेटने के लिए पहले मूल्य (360 डिग्री द्वारा बढ़ाया) को अंत तक जोड़ें। चारों ओर:
-149, -90, -81, -77, -69, -36, 77, 156, 211
(ध्यान दें कि 211 और -149 एक ही मेरिडियन हैं।)
पूर्ववर्ती समन्वय के बीच के अंतराल का प्रतिनिधित्व करते हुए प्रत्येक x- समन्वय के बारे में सोचें (लेकिन उस पूर्ववर्ती मूल्य को शामिल नहीं) और यह। जैसे, -77, -81 से -77 तक सभी मानों का प्रतिनिधित्व करता है, लेकिन -81 को शामिल नहीं करता है। इनमें से प्रत्येक के लिए पहले के बाद, उन अंतरालों की संख्या गिनें, जिनमें वह अंतराल हो।
1, 0, 1, 0, 1, 0, 1, 0
उदाहरण के लिए, पहले "1" का अर्थ है कि एक बॉक्स अंतराल -149 से -90 तक कवर करता है। (यह तीसरा बॉक्स है।)
अनुकूलन के रूप में, आप किसी भी बॉक्स को x- अंतराल को कवर करते हुए पाते ही गिनती को रोक सकते हैं और अगले x- अंतराल पर आगे बढ़ सकते हैं। हम केवल यह निर्धारित करने की कोशिश कर रहे हैं कि कौन सा अंतराल किसी बक्से द्वारा कवर नहीं किया जा सकता है।
(1) में क्रमबद्ध एक्स-निर्देशांक के पहले अंतर की गणना करें।
59, 9, 4, 8, 33, 113, 79, 55
कवरेज के साथ इनका मिलान करें (2)। सबसे बड़ा अंतर ज्ञात करें जिसके लिए कवरेज की संख्या 0. है। यहाँ, यह 113
पूर्ववर्ती सरणी के छठे तत्व के बराबर है । बक्सों के संग्रह द्वारा छोड़े गए देशांतर में यह सबसे बड़ा अंतर है।
(दिलचस्प बात यह है कि अधिकतम एक स्थान पर होने की संभावना से पता चलता है कि समाधान आवश्यक रूप से अद्वितीय नहीं है! बक्से के एक सेट के लिए एक से अधिक एमबीआर हो सकता है। आप अतिरिक्त शर्तों को जोड़कर एक अद्वितीय को परिभाषित कर सकते हैं, जैसे कि आवश्यकता होती है। MBR + -180 मेरिडियन के भीतर औसत दूरी जितना संभव हो उतना बड़ा होना चाहिए; एक टाई को हल करने के लिए, (सबसे अच्छा समाधान) चुनें।
इसी अंतराल को खोजें: यहाँ, यह -36 से 77 के बीच है। यह एमबीआर में नहीं देशांतरों की सीमा है । इसलिए, इसके पूरक को -180 से 180 के बीच की सीमा में लें। यहां, पूरक दो भिन्न अंतराल है, -180 से -36 तक और दूसरा 77 से 180 के माध्यम से। वैकल्पिक रूप से, एकल आयत के रूप में पूरक का प्रतिनिधित्व करते हैं + -180 डिग्री मेरिडियन: -283 से -36 यहां (या, समकक्ष, 77 से 324 के माध्यम से)।
MBR के कोनों के लिए y-मानों के न्यूनतम और अधिकतम का उपयोग करें।
((-283, -85), (-36, 81))