केडी-ट्री और आर-ट्री में क्या अंतर है?


81

मैंने केडी-ट्री और आर-ट्री की परिभाषा को देखा। मुझे ऐसा लगता है कि वे लगभग समान हैं।

केडी-ट्री और आर-ट्री में क्या अंतर है?

जवाबों:


60

R- ट्री और k d- ट्री एक जैसे विचारों पर आधारित हैं (अक्ष विभाजन क्षेत्रों के आधार पर अंतरिक्ष विभाजन), लेकिन मुख्य अंतर इस प्रकार हैं:

  • K d- ट्री में नोड्स अलग-अलग विमानों का प्रतिनिधित्व करते हैं, जबकि R- ट्री में नोड्स बाउंडिंग बॉक्स का प्रतिनिधित्व करते हैं।
  • k- पेड़ पूरे अंतरिक्ष को क्षेत्रों में विभाजित करते हैं जबकि R- पेड़ केवल अंतरिक्ष के सबसेट को विभाजित करते हैं जिसमें ब्याज के बिंदु होते हैं।
  • k d- वृक्ष एक असमान विभाजन का प्रतिनिधित्व करते हैं (अंक केवल एक क्षेत्र से संबंधित हैं) जबकि R- वृक्ष के क्षेत्र ओवरलैप हो सकते हैं।

(अंतरिक्ष के विभाजन के लिए कई प्रकार की वृक्ष संरचनाएँ हैं: चतुष्कोणीय, बीएसपी-ट्री, आर * -ट्रीस, इत्यादि)


106

वे वास्तव में काफी अलग हैं। वे समान उद्देश्य (स्थानिक डेटा पर क्षेत्र क्वेरी) की सेवा करते हैं, और वे दोनों पेड़ हैं (और दोनों बाउंड वॉल्यूम पदानुक्रम अनुक्रमित के परिवार से संबंधित हैं), लेकिन यह उन सभी के बारे में है जो उनके पास समान हैं।

  • आर-पेड़ संतुलित हैं , केडी-पेड़ नहीं हैं (जब तक कि बल्क-लोडेड नहीं)। यही कारण है कि डेटा बदलने के लिए आर-पेड़ों को प्राथमिकता दी जाती है, क्योंकि केडी-पेड़ों को फिर से अनुकूलित करने के लिए पुनर्निर्माण करने की आवश्यकता हो सकती है।
  • आर-पेड़ डिस्क-उन्मुख हैं । वे वास्तव में उन क्षेत्रों में डेटा को व्यवस्थित करते हैं जो सीधे ऑन-डिस्क प्रतिनिधित्व पर मैप करते हैं। यह उन्हें वास्तविक डेटाबेस में और मेमोरी ऑपरेशन के लिए अधिक उपयोगी बनाता है। केडी-ट्री मेमोरी ओरिएंटेड हैं और डिस्क पेजों में डालने के लिए गैर-तुच्छ हैं
  • kd- पेड़ तब सुरुचिपूर्ण होते हैं जब बल्क-लोडेड (इसे बाहर इंगित करने के लिए SingleNegationElimination के लिए kudos), जबकि R- पेड़ डेटा बदलने के लिए बेहतर होते हैं (हालांकि वे स्थैतिक डेटा के साथ उपयोग किए जाने पर बल्क लोडिंग से लाभ उठाते हैं)।
  • R- पेड़ पूरे डेटा स्पेस को कवर नहीं करते हैं। खाली क्षेत्रों को उजागर किया जा सकता है। केडी-पेड़ हमेशा पूरे स्थान को कवर करते हैं।
  • केडी-ट्री बाइनरी डेटा स्पेस को विभाजित करते हैं, आर-ट्री डेटा को आयतों में विभाजित करते हैं । द्विआधारी विभाजन स्पष्ट रूप से असंतुष्ट हैं; जबकि आर-ट्री के आयत ओवरलैप हो सकते हैं (जो वास्तव में कभी-कभी अच्छा होता है, हालांकि कोई ओवरलैप को कम करने की कोशिश करता है)
  • केडी-पेड़ स्मृति में लागू करने के लिए बहुत आसान हैं, जो वास्तव में उनका प्रमुख लाभ है
  • आर-पेड़ आयतों और बहुभुजों को स्टोर कर सकते हैं , केडी-ट्री केवल पॉइंट वैक्टर को स्टोर करते हैं (जैसा कि ओवरगैप के लिए आवश्यक है)
  • आर-ट्री विभिन्न अनुकूलन रणनीतियों, विभिन्न विभाजन, बल्क-लोडर, सम्मिलन और पुनर्संरचना रणनीतियों आदि के साथ आते हैं।
  • केडी-पेड़ एक हाइपरप्लेन को बाध्य करने के लिए एक-आयामी दूरी का उपयोग करते हैं; R- वृक्ष बाउंडिंग के लिए डी-डायनेमिक न्यूनतम दूरी को बाउंडिंग हाइपरट्रेक्टंगल के लिए उपयोग करते हैं (वे कुछ गणना प्रश्नों के लिए अधिकतम दूरी का उपयोग कर सकते हैं, वास्तविक सकारात्मक फिल्टर करने के लिए)।
  • केडी-ट्रीज़ यूक्लिडियन दूरी और मिंकोवस्की मानदंडों का समर्थन करते हैं, जबकि Rtrees को जियोडैटिक दूरी (जियोडेटा पर बिंदुओं के पास खोजने के लिए) का समर्थन करने के लिए भी दिखाया गया है।

37

इस उत्तर में दोनों का उल्लेख नहीं होने के बीच एक बड़ा अंतर यह है कि केडी-पेड़ केवल थोक-लोडिंग स्थितियों में कुशल हैं। एक बार बनाया गया, एक केडी-पेड़ को संशोधित या पुन: संतुलन करना गैर-तुच्छ है। आर-पेड़ इससे पीड़ित नहीं हैं।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.