R ट्री की तुलना में B ट्री - क्या यह केवल एक साथ जुड़ी हुई सूचियों का एक समूह नहीं है?


10

मैं बी ट्री से बहुत परिचित हूं, मुख्य रूप से डेटाबेस को बिजली, एयर कंडीशनिंग, और हार्डड्राइव स्पेस के साथ अच्छी तरह से खिलाया जाता है। मैं एक दोहरी (दोहरी [यानी, आंख]?) जुड़ी हुई सूची के साथ जुड़ा हुआ हूं।

आज, दोपहर के भोजन के डेवलपर्स में से एक ने एक आर पेड़ का उल्लेख किया।

मैं विकिपीडिया पर रुक गया और पढ़ना शुरू कर दिया। यह एक लंबे बी पेड़ की तरह एक भयानक लग रहा था। दुर्भाग्य से, एक गहरी गणित पृष्ठभूमि नहीं होने से यह समझना मुश्किल हो जाता है कि मेरे कुछ सहकर्मी किस बारे में बात कर रहे हैं।

मुझे उम्मीद थी कि अगर कोई बी पेड़ और आर पेड़ के बीच कुछ मतभेदों को स्पष्ट कर सकता है। मैं शायद लड़कों को वैसे भी पूछकर समाप्त कर दूंगा, लेकिन इस बात की कोई गारंटी नहीं है कि वे मेरे सवाल का जवाब देंगे। अधिक से अधिक वे भगवान के बारे में बताना शुरू कर देंगे जो जानता है। । ।


बीट्री निश्चित रूप से एक डबल लिंक्ड सूची की तरह नहीं है। एक पेड़ सूची के अनुसार, एन के आनुपातिक के बजाय लॉग (एन) संचालन तक पहुंच की अनुमति देता है।
जेवियर

@ जेवियर: बी-ट्री इंडेक्स की पत्ती नोड्स आमतौर पर इंडेक्स नोड्स की त्वरित सिबलिंग पुनर्प्राप्ति के लिए अनुमति देने के लिए एक दोगुनी लिंक की गई सूची है।
जॉर्डन

1
एक विशुद्ध रूप से तकनीकी प्रश्न होने के नाते, यह स्टैकऑवरफ्लो के अंतर्गत आता है (कृपया इसे वहां न भेजें, हालांकि, यह स्वचालित हो जाएगा यदि पर्याप्त लोग इसे यहां बंद करने के लिए वोट देते हैं)।
Péter Török

1
यह यहाँ पर विषय है: Programmers.SE प्रोग्रामिंग के बारे में अवधारणा प्रश्नों के लिए है। स्टैक ओवरफ्लो तब होता है जब आपके पास वास्तव में कोड हो जिसकी आपको मदद चाहिए।

2
@Peter Torok: पुरानी प्रणाली के तहत, यह एक SO प्रश्न था। लेकिन अब जब यह साइट मौजूद है।
सर्फ

जवाबों:


7

आर ट्री को बी-ट्री के सामान्यीकरण के रूप में माना जा सकता है। जहाँ एक बी-ट्री इसमें निहित कुंजियों के "बाउंडेड रेंज" पर ओ (लॉग एन) एक्सेस प्रदान करता है, एक आर ट्री ओ के (लॉग एन) एक्सेस को प्रदान करता है, जिसमें इसमें निहित कुंजियों का "आयामी क्षेत्र" होता है।

यदि आप काउंटी नामों के लिए ज़िप कोड बनाना चाहते हैं, तो आप एक बी-ट्री का उपयोग कर सकते हैं, क्योंकि आप यह पूछ सकते हैं कि "60000 और 61000 के बीच ज़िपकोड वाले सभी काउंटियां क्या हैं?" हालांकि, एक बी-ट्री "" शिकागो के 100 मील के भीतर सभी काउंटियों में से क्या हैं? "जैसे प्रश्नों के लिए काउंटी के नाम के लिए जीपीएस निर्देशांक मैप करने के लिए बीमार होगा, क्योंकि यह केवल एक ही आयाम पर अपनी कुंजी का आदेश देता है। एक R- ट्री बाउंडिंग बक्सों के ओवरलैपिंग के अनुसार अपनी कुंजियों को तोड़ता है, और इसलिए जब आप कई आयामों से क्वेरी करने की आवश्यकता होती है, तो यह कुंजी को संग्रहीत करने का एक स्वाभाविक तरीका है।


मुझे उपमा पसंद है।
सर्फ

1
सादृश्य से अधिक एक ठोस उदाहरण, यह वास्तव में है कि इन सूचकांक एल्गोरिदम का उपयोग कैसे किया जाता है।
सिंगलएनजेशन इलिमिनेशन

6

अधिकांश ट्री संरचनाओं को लिंक की गई सूची के कुछ रूप में कम किया जा सकता है, जब तक आप अनदेखा करते हैं कि सूची का निर्माण कैसे किया जाता है (विशेष रूप से, तत्वों को कैसे जोड़ा जाता है और हटा दिया जाता है, और नोड्स कैसे पुन: असंतुलित होते हैं, यदि लागू हो)। यह अनिवार्य रूप से सम्मिलन / विलोपन / पुनर्प्राप्ति एल्गोरिथ्म है जो एक डेटा संरचना को दूसरे से अलग करता है।

आर-ट्री में नोड्स में आम तौर पर एक बाउंडिंग बॉक्स होता है, जो आपको कुशलता से सूचकांक स्थानों की अनुमति देता है, जैसा कि आपको आवश्यकता हो सकती है यदि आप किसी विशेष स्थान के "रिकॉर्ड" के लिए खोज करना चाहते थे। बी-ट्री में तत्वों का एक सरल आदेश है; आप सीधे तुलना कर सकते हैं कि क्या कुछ अन्य तत्व से अधिक या बराबर है। आर-ट्री में, प्रत्येक प्रविष्टि का उद्देश्य यह निर्धारित करना है कि एक बाउंडिंग बॉक्स में कौन से तत्व निहित हैं।

एक बी-ट्री आपको माध्यमिक मेमोरी (जैसे हार्ड डिस्क) में ऑर्डर करने योग्य वस्तुओं को कुशलता से खोजने की अनुमति देता है, और एक आर-ट्री आपको उन तत्वों की कुशलता से खोज करने की अनुमति देता है जो एक विशेष बिंदु या बाउंडिंग बॉक्स के "पास" या "पास" भी हैं। माध्यमिक स्मृति में।


ऐसा लगता है कि आर पेड़ अपने अंतर को दिखाना शुरू कर देता है क्योंकि तत्वों की संख्या बढ़ती है, सही है? या कि थोड़ा बहुत सरलीकृत है?
सर्फ

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

2
@JasonTrue: दरअसल, बी-ट्री इंडेक्सिंग के लिए बाउंडिंग बॉक्स को रैखिक करने के कुशल तरीके हैं: en.wikipedia.org/wiki/Geohash । हालांकि हैश "कुशल" हैं, वे विशेष रूप से सुविधाजनक नहीं हैं। एक मनमाने ढंग से बाउंडिंग बॉक्स क्वेरी में 2 आयामी स्थान के लिए 9 अलग-अलग प्रश्न लेने की संभावना है, और यदि बॉक्स एक प्रमुख अक्ष (जैसे, अंतर्राष्ट्रीय डेटलाइन) को ओवरलैप करता है, तो प्रश्नों की संख्या दोगुनी या चौगुनी हो सकती है और यह उपयोग करने के लिए बहुत बोझिल हो जाता है। इसके बावजूद, यह अभी भी एक विकल्प है जब रैखिक सूचकांक एकमात्र प्रकार उपलब्ध हैं।
सिंगलएनजेशन इलिमिनेशन
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.