द्विआधारी खोज के पेड़ का उपयोग करने का ठोस उदाहरण?

वोट
14

मैं समझता हूँ कि कैसे द्विआधारी खोज के पेड़ लागू किया जाता है, लेकिन मुझे यकीन है कि क्या हैश तालिकाओं कि सबसे प्रोग्रामिंग भाषाओं उनके मानक पुस्तकालयों में निर्माण किया है पर इसे का उपयोग कर के लाभ हैं नहीं कर रहा हूँ।

किसी द्विआधारी खोज के पेड़ के साथ व्याख्या करने योग्य वास्तविक दुनिया की समस्याओं के उदाहरण दें सकते हैं?

16/02/2011 को 00:44
का स्रोत उपयोगकर्ता
अन्य भाषाओं में...                            


5 जवाब

वोट
1

जहां एक द्विआधारी पेड़ की आवश्यकता है का एक उदाहरण कंप्यूटर ग्राफिक्स में द्विआधारी अंतरिक्ष विभाजन है

http://en.wikipedia.org/wiki/Binary_space_partitioning

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

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

सरल संग्रहण और डेटा की पुनर्प्राप्ति के लिए अक्सर एक हैश तालिका अधिक इष्टतम है, लेकिन अधिक लागू करने के लिए जटिल है।

16/02/2011 को 00:53
का स्रोत उपयोगकर्ता

वोट
0

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

द्विआधारी पेड़ भी कई खेल है कि 3 डी वस्तुओं प्रस्तुत करना पर किया जाता है। फिर, कारण गति है। वास्तव में, गति बहुत महत्वपूर्ण है कुछ खेल ऐसे भूकंप इंजन के रूप में इंजन, वास्तव में द्विआधारी पेड़ पहले से बनाई गई और नक्शा निर्माण प्रक्रिया के हिस्से के रूप पूर्व अनुकूलित है।

16/02/2011 को 00:56
का स्रोत उपयोगकर्ता

वोट
0

नोट करने के लिए एक बात है कि द्विआधारी खोज वृक्ष अंतरिक्ष कुशल हैं। उदाहरण के लिए, आप स्टोर करने के लिए 10 पूर्णांक है और आप एक हैश समारोह है कि 0 से नक्शे है - 99, तो यू 100 पूर्णांक की एक सरणी की जरूरत है। आप द्विआधारी खोज वृक्ष का इस्तेमाल किया है, तो आप केवल के रूप में ज्यादा स्मृति को आबंटित होगा के रूप में 10 तत्वों के लिए आवश्यक

16/02/2011 को 00:57
का स्रोत उपयोगकर्ता

वोट
29

वहाँ हैश तालिकाओं से अधिक द्विआधारी खोज के पेड़ के कुछ सैद्धांतिक लाभ हैं:

  1. वे क्रमबद्ध क्रम में उनके तत्वों की दुकान । इसका मतलब यह है कि यदि आप एक तरह से जहां आप आसानी से क्रमबद्ध क्रम में मूल्यों पर जा सकते हैं में कंटेनर संग्रहीत करना चाहते हैं, एक BST शायद एक हैश तालिका तुलना में एक बेहतर विकल्प है। उदाहरण के लिए, यदि आप छात्रों के एक संग्रह की दुकान और फिर वर्णमाला के क्रम में सभी छात्रों को बाहर प्रिंट करना चाहते हैं, एक BST एक हैश तालिका की तुलना में एक काफी हद तक बेहतर विकल्प है।

  2. वे कुशलता से रेंज प्रश्नों का समर्थन। क्योंकि BSTs क्रमबद्ध क्रम में जमा हो जाती है, यह फार्म के सवालों के जवाब आसान है "क्या मूल्यों रेंज [एक्स, वाई] में कर रहे हैं?" एक द्विआधारी खोज वृक्ष में। ऐसा करने के लिए, आप छोटी से छोटी एक्स से अधिक तत्व और सबसे बड़ी तत्व y की तुलना में छोटे के लिए पेड़ में एक देखने करते हैं, तो उन दोनों के बीच पेड़ के तत्वों से अधिक पुनरावृति। एक संतुलित पेड़ में ओ (एलजी एन) समय में किये इन प्रश्नों के दोनों है, तो इस कार्रवाई के लिए कुल रनटाइम ओ (एलजी n + k), जहां कश्मीर क्वेरी से मेल खाने तत्वों की संख्या है।

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

  4. वे बेहतर बुरी से बुरी हालत की गारंटी देता है हो सकता है। अधिकांश हैश तालिका कार्यान्वयन, जिसमें एक ऑपरेशन बुरी से बुरी हालत में हे (एन) को नीचा कर सकते हैं पतित मामले में किसी प्रकार का है। एक रेखीय जांच हैश तालिका या एक श्रृंखलित हैश तालिका, तत्वों का एक सेट के साथ बुरा, देखने प्रति हे (एन) समय की आवश्यकता है या हे (एन) एक मिश्रित पर समय की आवश्यकता कर सकते हैं। संतुलित BSTs, लाल / काले पेड़, AVL पेड़, या ए.ए. पेड़, की तरह के कुछ प्रकार में निवेशन हमेशा बुरी से बुरी हालत ओ (एलजी एन) है।

आप और अधिक व्यापक वृक्ष संरचना को BSTs सामान्यीकरण करने के लिए तैयार हैं, तो फिर वहाँ कई अनुप्रयोगों, जिसमें एक पेड़ एक हैश तालिका की तुलना में अधिक कुशलता से समस्याओं को हल करने के लिए इस्तेमाल किया जा सकता है। यहाँ कुछ उदाहरण हैं:

  1. केडी के पेड़ों जबकि बहुआयामी अंतरिक्ष में तेजी से रेंज प्रश्नों, साथ ही कुशल निकटतम-पड़ोसी लुकअप समर्थन आप बहुआयामी डाटा स्टोर करने की अनुमति देते हैं। आप वर्गीकरण (आलसी सीखने वाले एल्गोरिदम) या कम्प्यूटेशनल ज्यामिति के लिए उपयोग कर सकते हैं।

  2. लिंक / कटौती के पेड़ अधिक कुशलता से अब तक की आम एल्गोरिदम की अनुमति होगी अधिकतम प्रवाह की समस्याओं को हल करने के लिए इस्तेमाल किया जा सकता है। अच्छा धक्का / relabel एल्गोरिदम इस का उपयोग उनके कार्यान्वयन में तेजी लाने के।

  3. संबंध तोड़ना सेट जंगलों asymptotically अधिकतम कुशलता (परिशोधित α (एन) अद्यतन प्रति, जहां α (एन) एकरमैन उलटा समारोह है) के रूप में के रूप में तत्वों का विभाजन बनाए रखने के लिए इस्तेमाल किया जा सकता। वे कई तेजी से कम से कम फैले पेड़ एल्गोरिदम, साथ ही कुछ अधिकतम मिलान एल्गोरिदम में इस्तेमाल कर रहे हैं।

  4. बाइनरी ढेर प्राथमिकता कतारों कुशलता से लागू करने के लिए इस्तेमाल किया जा सकता। अधिक जटिल पेड़ के निर्माण के लिए इस्तेमाल किया जा सकता द्विपद ढेर और फाइबोनैचि ढेर , सैद्धांतिक कंप्यूटर विज्ञान में बहुत महत्व के हैं।

  5. निर्णय वृक्ष वर्गीकरण के लिए मशीन सीखने में इस्तेमाल किया जा सकता है, और सैद्धांतिक कंप्यूटर विज्ञान में एक मॉडल के रूप में विभिन्न एल्गोरिदम के runtimes पर सीमा साबित करने के लिए।

  6. त्रिगुट खोज के पेड़ के रूप में थोड़ा संशोधित BST पर आधारित हैं की कोशिश करता के लिए एक विकल्प है। वे बहुत तेजी से देखने और तत्वों की प्रविष्टि के लिए और विरल डेटा सेट के लिए अनुमति देने के काफी संक्षिप्त कर रहे हैं।

  7. बी पेड़ कई डाटाबेस सिस्टम द्वारा उपयोग किया जाता कुशलता तत्वों को देखने के लिए जहां डिस्क का उपयोग एक सीमित कारक है।

  8. बाइनरी अंतरिक्ष विभाजन के पेड़ है कि जल्दी से कंप्यूटर ग्राफिक्स रेंडर करने के लिए इस्तेमाल किया जा सकता केडी के पेड़ों का सामान्यीकरण कर रहे हैं और टकराव का पता लगाने कर (वे मूल खेल कयामत में प्रतिपादन अनुकूलन करने के लिए इस्तेमाल किया गया)।

  9. बीके-पेड़ आप जल्दी से कुछ अन्य बिंदु के एक निश्चित दूरी के भीतर एक मीट्रिक स्पेस में सभी बिंदुओं को खोजने के लिए सभी शब्दों है कि कुछ अन्य शब्द का एक निश्चित दूरी संपादित भीतर कर रहे हैं निर्धारित करने के लिए, और अधिक आम तौर पर अनुमति देते हैं।

  10. फ्यूजन पेड़ पूर्णांक कुंजी लुकअप, सम्मिलन, और विलोपन के लिए बहुत तेज समर्थन किया है कि के लिए टेबल हैश करने के लिए एक विकल्प है।

  11. वैन Emde बोअस पेड़ एक और विकल्प है कि देखने, प्रविष्टि, विलोपन, उत्तराधिकारी, और पूर्ववर्ती हे में समर्थन पूर्णांक कुंजियों (एलजी एलजी एन) तत्व प्रति समय के लिए टेबल हैश करने के लिए। कुछ डाटाबेस सिस्टम VEB पेड़ का उपयोग प्रदर्शन का अनुकूलन करने के लिए।

मुझे यकीन है कि नहीं कैसे विषय पर इस जवाब है हूँ, लेकिन यह आप कैसे अद्भुत और शक्तिशाली BSTs और अधिक सामान्य वृक्ष संरचना हो सकता है के लिए एक तरह से देना चाहिए।

16/02/2011 को 01:05
का स्रोत उपयोगकर्ता

वोट
0

यह शायद एक टिप्पणी लेकिन स्व संतुलन BST (रों) (लॉग (एन)) व्यापक रूप से करने के बजाय इस्तेमाल कर रहे हैं BSTs होना चाहिए। सादा BSTs बुरी से बुरी हालत हे (एन) प्रविष्टि / हटाने समय है।

16/02/2011 को 03:14
का स्रोत उपयोगकर्ता

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more