ट्री और बी + पेड़ इंडेक्सिंग लेक्सिकोग्राफिकली सॉर्ट स्ट्रिंग्स [कुछ अरबों के क्रम में] के लिए तुलना कैसे करता है? इसे रेंज क्वेरीज़ का भी समर्थन करना चाहिए।ट्री बनाम बी + पेड़
perf से। साथ ही कार्यान्वयन जटिलता बिंदु दृष्टिकोण।
ट्री और बी + पेड़ इंडेक्सिंग लेक्सिकोग्राफिकली सॉर्ट स्ट्रिंग्स [कुछ अरबों के क्रम में] के लिए तुलना कैसे करता है? इसे रेंज क्वेरीज़ का भी समर्थन करना चाहिए।ट्री बनाम बी + पेड़
perf से। साथ ही कार्यान्वयन जटिलता बिंदु दृष्टिकोण।
मैं कहूंगा कि यह रेंज द्वारा आपके मतलब पर निर्भर करता है।
यदि आपकी सीमा के रूप में व्यक्त की गई है तो से शुरू होने वाले सभी शब्द, तो Trie
सही विकल्प है जो मैं कहूंगा। दूसरी ओर, Trie
जैसे अनुरोधों के लिए नहीं हैं XX और ZZ के बीच सभी शब्द।
ध्यान दें कि B+ Tree
का ब्रांचिंग कारक इसके प्रदर्शन (मध्यस्थ नोड्स की संख्या) को प्रभावित करता है। यदि h
पेड़ की ऊंचाई है, तो n अधिकतम ~~ बी एच। इसलिए एच ~~ लॉग (एन अधिकतम)/लॉग (बी)।
n = 1 000 000 000
और b = 100
के साथ, हमारे पास h ~~ 5
है। इसलिए इसका मतलब रूट से पत्ते तक जाने के लिए केवल 5 सूचक डीफरेंसिंग है। यह Trie
से अधिक कैश-अनुकूल है।
अंत में, B+ Tree
Trie
से लागू करने के लिए स्वीकार्य रूप से अधिक कठिन है: यह Red-Black Tree
जटिलता के स्तर पर अधिक है।
अपने वास्तविक कार्य पर निर्भर करता है:
N
बच्चों पाने के लिए चाहते हैं, तो एक Trie सबसे अच्छा विकल्प है क्योंकि आप बस एक बी + ट्री परिदृश्य की तुलना में कम नोड्स की यात्रा है।मैं कोशिश कर रहा प्रयासों की कुछ भिन्नताएं बीटीआर की तुलना में केवल अधिक अंतरिक्ष-कुशल नहीं हैं, बल्कि अधिकांश प्रश्नों (प्रत्यक्ष पहुंच, शब्द पूर्णता, सीमा क्वेरी) के लिए भी तेज़ हैं। –
यदि आप "xx और zz के बीच के सभी शब्द" की तुलना में आपके Trie कार्यान्वयन के बारे में स्मार्ट हैं तो यह मुश्किल नहीं है। यदि आप लेक्सिकोग्राफिकल ऑर्डर में किनारों को संग्रहित कर रहे हैं तो स्ट्रिंग्स लेक्सिकोोग्राफिक ऑर्डर में भी हैं। –
सीमा का फायदा उठाने के लिए यह थोड़ा और मुश्किल है। 'बी + ट्री' में एक सीमा को दो पॉइंटर्स (स्टार्ट/एंड) द्वारा परिभाषित किया जा सकता है और आप उनके माध्यम से एक डेक की तरह पुनरावृत्त कर सकते हैं। एक 'ट्री' में आपको इसे करने में सक्षम होने के लिए पुनरावृत्ति को लागू करना होगा (एक यादृच्छिक सूचक से दूसरे में), यह कम प्राकृतिक है, हालांकि निश्चित रूप से अक्षम नहीं है और मुझे कम कुशलता से डर है। या आप बस किसी अन्य संरचना में रेंज की प्रतिलिपि बना सकते हैं, लेकिन यह महंगा हो सकता है। –
गलती से इसे नीचे वोट दिया, इसे ऊपर उठाना था। मैं इसे अभी वापस नहीं बदल पा रहा हूं :( –