संभावित समारोह बाइनरी हीप एक्स्ट्रेक्ट ओ (1)


10

मुझे अधिकतम ढेर के लिए संभावित फ़ंक्शन का पता लगाने में मदद की आवश्यकता है ताकि निकालने का अधिकतम समय में पूरा हो जाए । मुझे यह जोड़ना चाहिए कि मुझे संभावित विधि की अच्छी समझ नहीं है।O(1)

मुझे पता है कि डालने समारोह चाहिए "भुगतान" आदेश निकासी की लागत को कम करने के लिए, और इस ढेर की ऊंचाई के संबंध में होने के लिए (यदि है में और अधिक ढेर की ऊंचाई देता है चाहिए डालें या )log(n)2log(n)k=1n2log(k)

जवाबों:


13

निम्नलिखित का प्रयास करें:

वजन एक तत्व की मैं ढेर में एच इसी द्विआधारी संरचना में उसकी गहराई है। तो जड़ में तत्व का वजन शून्य है, इसके दो बच्चों का वजन 1 है और इसी तरह। आप संभावित फ़ंक्शन के रूप में परिभाषित करते हैंwiiH

Φ(H)=iH2wi.

अब हम ढेर के संचालन का विश्लेषण करते हैं। के लिए डालने आप एक नए तत्व जोड़ गहराई जोड़ने ज्यादा से ज्यादा लॉग ( एन ) । इससे क्षमता में 2 d की वृद्धि होती है , और O ( 1 ) समय में किया जा सकता है । फिर आप ढेर-संपत्ति को आश्वस्त करने के लिए नए ढेर तत्व को "बबल अप" करते हैं। यह लेता है हे ( लॉग एन ) समय और पत्तियों Φ ( एच ) में कोई बदलाव नहीं। इस प्रकार डालने के लिए खर्च कर रहे हैं हे ( लॉग ( एन ) + Δ ( Φ (dlog(n)2dO(1)O(logn)Φ(H)O(log(n)+Δ(Φ(H)))=O(logn)

अब एक्सट्रैक्टिन पर विचार करें । आप रूट को बाहर निकालते हैं और इसे अंतिम तत्व से ढेर में बदल देते हैं। यह की क्षमता को कम कर देता है , इस प्रकार आप ढेर संपत्ति की मरम्मत कर सकते हैं, और इसलिए परिशोधन लागत अब ( 1 ) है2log(n)O(1)

यदि आपके पास संभावित फ़ंक्शन के लिए एक सामान्य प्रश्न है, तो आपको इसे एक अलग प्रश्न के रूप में प्रस्तुत करना चाहिए।


मुझे यकीन है कि आप सही हैं लेकिन मैं प्रविष्टि को नहीं समझ पाया। क्यों है में कोई बदलाव नहीं? क्षमा करें यदि उत्तर स्पष्ट है, लेकिन क्या आप कृपया Δ का विस्तार कर सकते हैं ? मैं यह नहीं देख सकता कि आपके पास वहां नकारात्मक संख्या क्यों होगीΔ(Φ(H)))Δ
andrei

संभावित अंतर को संदर्भित करता - पहले और डालने के बाद। यह अधिकतम 2 लॉग ( एन ) में डालने के मामले में है। जब आप ढेर (बबल-अप या बबल-डाउन) में दो तत्वों का आदान-प्रदान करते हैं, तो एक भार +1 प्राप्त होता है, और दूसरे में -1 परिवर्तन होता है, इस प्रकार क्षमता (सभी भार का योग) समान रहता है। Δ(Φ(H))2log(n)
शूलज

ओ (1) की मरम्मत कैसे की जाती है? ढेर की मरम्मत में संभावित फ़ंक्शन का उपयोग क्या है? क्या आप स्पष्ट कर सकते हैं
सोहैब

O(logn)O(1)

@ A.Schulz तो सार में इसका मतलब यह है कि यह बताया गया है कि निकालने का काम n की संख्या से कई बार किया जाता है क्योंकि हर बार संभावित फ़ंक्शन 2logn से घट जाएगा (मरम्मत के समय समान रूप से बढ़ सकता है या नहीं)। इस तरह की चीज के लिए समग्र जटिलता निरंतर समय होगी क्योंकि अंततः पेड़ में कोई नोड नहीं होगा। क्या मैं सही हू?
सोहेब
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.