सूचियों के बजाय खोज पेड़ों का उपयोग करना


11

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

  1. insert,
  2. find तथा
  3. delete

सम्मान के लायक है। औसत मामला। क्या वे सूचियों के संबंध में सुधार करते हैं?


यदि आपके पास रैखिक चेनिंग (यानी रैखिक सूची) के साथ हैश टेबलों के रनटाइम के कठोर विश्लेषण तक पहुंच है, तो उस हिस्से को प्रतिस्थापित करें जहां रैखिक सूची पर औसत लागत एक संतुलित खोज ट्री कार्यान्वयन के औसत परिणाम के साथ प्लग की जाती है। बाकी यांत्रिकी है। (जाहिर है, यह मदद करता है।)
राफेल

जवाबों:


4

सूचियों के लिए, प्रविष्टि, ढूँढें और हटाएं क्रमशः , O ( n ) , O ( n ) में हैं । क्रमबद्ध सूची बदतर हैं। बाइनरी खोज स्वयं सॉर्ट किए गए सरणियों के लिए है, जिसमें संचालन ( एन ) , ( लॉग एन ) , ( एन ) में हैं । यदि आप "सम्मिलन" और "हटाएं" ऑपरेशन चाहते हैं तो आपको बस द्विआधारी खोज से अधिक की आवश्यकता है।O(1)O(n)O(n)O(n)O(logn)O(n)

आप शायद बाइनरी सर्च ट्री जैसा कुछ चाहते हैं । उचित शब्दावली होने के बाद इसके बारे में संदर्भ खोजना बहुत आसान है। ये ऑपरेशन सबसे खराब स्थिति वाले समय में हैं, उदाहरण के लिए एवीएल पेड़ों और लाल-काले पेड़ों का उपयोग कर कार्यान्वयन के लिए ।O(logn)


1
यह सब सही है, लेकिन मैं यह नहीं देखता कि यह सवाल का जवाब कैसे देता है।
rgrig

यह वही सवाल नहीं था सब पर समय में। (यहां तक ​​कि संपादित इतिहास में मूल प्रश्न नहीं है। अजीब।) मैं अपना उत्तर अपडेट कर सकता था लेकिन यह गिल्स के साथ बेमानी हो जाएगा।
jmad

4

सबसे खराब स्थिति में, यदि आप एक ही हैश वैल्यू वाले तत्वों को स्टोर करने के लिए होते हैं, तो एक हैश टेबल उसी बाल्टी में प्रत्येक तत्व को स्टोर करता है। आप एक बाल्टी के तत्वों स्टोर करने के लिए सूची का उपयोग करते हैं, तो देखने है सबसे खराब स्थिति में (जहां n तालिका में तत्वों की संख्या है - अधिक आम तौर पर, n तत्वों की संख्या सबसे बड़ा बाल्टी में है), क्योंकि आपको पूरी सूची को ट्रेस करने की आवश्यकता है यदि आप एक ऐसा तत्व देख रहे हैं जो तालिका में नहीं है। सकारात्मक लुकअप (जहां आप जानते हैं कि तत्व मौजूद है) में एक ही जटिलता है: आपको n - 1 = Θ ( n ) की आवश्यकता हैहे(n)nnn-1=Θ(n)यदि आप सूची का अंतिम तत्व देख रहे हैं। विलोपन की एक ही जटिलता है ( यदि आपको अंतिम तत्व को हटाने के लिए लुकअप की आवश्यकता है )। प्रविष्टि भी O ( n ) है यदि आपको किसी मौजूदा तत्व की जाँच करने की आवश्यकता है, या O ( 1 ) यदि आप डुप्लिकेट की अनुमति देते हैं (जिस स्थिति में आप सूची की शुरुआत में तत्व सम्मिलित कर सकते हैं)।n-1हे(n)हे(1)

साथ संतुलित द्विआधारी खोज के पेड़, बुरी से बुरी हालत जटिलता को कम हो जाता है , क्योंकि एक संतुलित खोज पेड़ की गहराई संतुलन की परिभाषा से पेड़ के आकार में लघुगणकीय बढ़ता है।हे(लॉगn)

हे(1)

nn/2Θ(n)Θ(लॉगn)


2
"डेटा के औसत वितरण के साथ" एक पर्याप्त यादृच्छिक हैश फ़ंक्शन के साथ "पढ़ना चाहिए"
जेफई
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.