2011-05-05 11 views
13

http://en.wikipedia.org/wiki/Heap_%28data_structure%29#Comparison_of_theoretic_bounds_for_variants के अनुसार, यह कमी-कुंजी ऑपरेशन करने के लिए Θ (लॉगन) (जो ओ (लॉगन) में अनुवाद करता है) लेता है। हालांकि, ऐसी कोई साइट नहीं है जिसमें कमी-कुंजी ऑपरेशन के साथ बाइनरी हीप कार्यान्वयन शामिल है।क्या बाइनरी हीप कमी-कुंजी ऑपरेशन का समर्थन करता है?

इसलिए वेब पर कार्यान्वयन की कमी को देखते हुए, क्या बाइनरी ढेर में कमी-कुंजी ऑपरेशन करना संभव है?

+3

मुझे लगता है कि यह एक पूरी तरह से वैध सवाल वह पूछ रहा है है ... – Patrik

+0

[मैं इसे जावास्क्रिप्ट में कार्यान्वित] (https://github.com/mhluska/Snakeception/blob/master/src/binaryheap.coffee)। –

+0

आपको [फिबोनाची ढेर] (https://en.wikipedia.org/wiki/Fibonacci_heap) में रुचि हो सकती है जिसमें 'Θ (1)' 'कमी-कुंजी 'संचालन –

उत्तर

10

मैं इस पता लगा:

  • आदेश ओ (logn) में कमी कुंजी प्रदर्शन करने के लिए, हम पहले से इसी तत्व के स्थान पता करने के लिए की है। एक हैश नक्शा और एक अच्छा हैश फ़ंक्शन ओ (1) अमूर्त समय की गारंटी दे सकता है। प्रत्येक संशोधन के बाद, हमें हैश मैप अपडेट करना होगा, जो ओ (लॉगऑन) लेता है।
  • हमारे तत्व का स्थान निर्धारित करने के बाद, हम अपने तत्व को अपने माता-पिता से अधिक प्राथमिकता देते हैं (उसी तरह सम्मिलित करने के लिए) या नीचे अगर उसके बच्चों में से एक की तुलना में कम प्राथमिकता है (एक में हटाने के समान तरीके) और हैश मानचित्र में संशोधित तत्वों के स्थानों को अपडेट करें।
+1

है, मुझे लगता है कि यह दूसरी तरफ है। हैश मैप का अद्यतन ओ (1) लेता है जबकि कमी-कुंजी ओ (एलजी (एन) लेता है)। –

+1

हैश मैप अपडेट करें ओ (लॉग एन) है क्योंकि आपको इसे प्रत्येक 'स्वैप (पैरेंट, चाइल्ड)' ऑपरेशन के लिए अपडेट करना होगा। 'कमीशन' ऑपरेशन में ओ (लॉग एन) ऐसे ऑपरेशन हैं। –

संबंधित मुद्दे