मैं एक क्वाडट्री लागू कर रहा हूं। जो लोग इस डेटा संरचना को नहीं जानते हैं, उनके लिए मैं निम्नलिखित छोटे विवरण शामिल कर रहा हूं:
एक क्वाडट्री एक डेटा संरचना है और यूक्लिडियन विमान में है कि 3-आयामी अंतरिक्ष में एक ऑक्ट्री क्या है। Quadtrees का एक सामान्य उपयोग स्थानिक अनुक्रमण है।
यह बताने के लिए कि वे कैसे काम करते हैं, एक क्वाडट्री एक संग्रह है - चलो यहां आयतों के बारे में कहते हैं - अधिकतम क्षमता और एक प्रारंभिक बाउंडिंग बॉक्स के साथ। जब एक क्वाडट्री में एक तत्व डालने की कोशिश की जा रही है जो अपनी अधिकतम क्षमता तक पहुंच गया है, क्वाडट्री को 4 क्वाडट्रिस में विभाजित किया गया है (एक ज्यामितीय प्रतिनिधित्व जिसमें सम्मिलन से पहले पेड़ की तुलना में चार गुना छोटा क्षेत्र होगा); प्रत्येक तत्व को उसकी स्थिति के अनुसार उप-भागों में पुनर्वितरित किया जाता है, अर्थात। आयतों के साथ काम करने के दौरान शीर्ष बाईं ओर।
तो एक चतुष्कोण या तो एक पत्ती है और इसकी क्षमता से कम तत्व हैं, या 4 चतुर्भुज वाला एक पेड़ है, जिसमें बच्चे (आमतौर पर उत्तर-पश्चिम, उत्तर-पूर्व, दक्षिण-पश्चिम, दक्षिण-पूर्व) हैं।
मेरी चिंता यह है कि यदि आप डुप्लिकेट को जोड़ने की कोशिश करते हैं, तो हो सकता है कि एक ही स्थिति में कई बार एक ही तत्व हो या एक ही स्थिति के साथ कई अलग-अलग तत्व हों, क्वाडट्रिज को किनारों को संभालने के साथ एक मौलिक समस्या है।
उदाहरण के लिए, यदि आप 1 की क्षमता के साथ क्वाडट्री के साथ काम करते हैं और इकाई आयत बाउंडिंग बॉक्स के रूप में:
[(0,0),(0,1),(1,1),(1,0)]
और आप दो बार एक आयत डालने की कोशिश करते हैं जिसमें से ऊपरी-बायीं सीमा मूल होती है: (या इसी तरह यदि आप इसे N + 1 की क्षमता के साथ क्वाडट्री में N + 1 बार डालने की कोशिश करते हैं)
quadtree->insert(0.0, 0.0, 0.1, 0.1)
quadtree->insert(0.0, 0.0, 0.1, 0.1)
पहली प्रविष्टि में कोई समस्या नहीं होगी:
लेकिन तब पहली प्रविष्टि एक उपखंड को ट्रिगर करेगी (क्योंकि क्षमता 1 है):
इस प्रकार दोनों आयतें एक ही उपशीर्षक में डाल दी जाती हैं।
फिर से, दो तत्व एक ही क्वाडट्री में आएंगे और एक उपखंड को ट्रिगर करेंगे ...
और इतने पर, और आगे, उपखंड विधि अनिश्चित काल तक चलेगी क्योंकि (0, 0) हमेशा बनाए गए चार में से एक ही उपप्रकार में होगी, जिसका अर्थ है एक अनंत पुनरावृत्ति समस्या होती है।
क्या डुप्लीकेट के साथ चतुर्भुज होना संभव है? (यदि नहीं, तो कोई इसे लागू कर सकता है Set
)
चतुर्भुज की वास्तुकला को पूरी तरह से तोड़े बिना हम इस समस्या को कैसे हल कर सकते हैं?