12

मैं 'परिचय से एल्गोरिदम' से एफ-ढेर सीख रहा हूं, और 'कमी-कुंजी' ऑपरेशन वास्तव में मुझे भ्रमित करता है - इसे 'कैस्केडिंग-कट' क्यों चाहिए?फिबोनाची ढेर को कैस्केडिंग कटौती की आवश्यकता क्यों है?

तो आप इस कार्रवाई निकाल दिया जाता है:

  1. मेकअप ढेर(), सम्मिलित(), न्यूनतम() और संघ() की लागत स्पष्ट रूप से अपरिवर्तित रहता है
  2. निकालने मिनट() अब भी है हे (डी (एन)), क्योंकि ओ (एन (एच)) 'समेकित' ऑपरेशन में, अधिकांश रूट पेड़ों की लागत का भुगतान किया जा सकता है जब उन्हें मूल सूची में जोड़ा गया था, और शेष लागत ओ (डी (एन))
  3. कमी-कुंजी(): स्पष्ट रूप से ओ (1)

डी (एन) के लिए, हालांकि मैं इसे ठीक से समझा नहीं सकता, मुझे लगता है कि यह अभी भी ओ (एलएनजी), cuz बिना 'कैस्केडिंग-कट' है, एक नोड को थोड़ी देर बाद रूट सूची में स्थानांतरित किया जा सकता है , और किसी भी नोड अपने पिता के तहत छुपा दक्षता को प्रभावित नहीं करता है। कम से कम, इससे स्थिति खराब नहीं होगी।

मेरी गरीब अंग्रेज़ी :(

किसी को भी मदद कर सकते हैं? धन्यवाद

+0

महान प्रश्न। यह माता-पिता की स्थिति में मौजूद सभी जानकारी को फेंकने के लिए बहुत ही अनजान लगता है। –

उत्तर

6

व्यापक कटौती का कारण डी (एन) को कम रखने के लिए है के लिए हमें खेद है। ऐसा लगता है कि अगर आप के किसी भी संख्या के लिए अनुमति देते नोड्स को एक पेड़ से काटा जा सकता है, फिर डी (एन) रैखिक होने के लिए बढ़ सकता है, जो हटा देता है और हटा देता है-मिनट रैखिक समय लेता है।

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

आशा है कि इससे मदद मिलती है!

+0

हाँ, आप सही हैं। यह भ्रामक डी (एन) एक समस्या का कारण बनता है, लेकिन यह तब प्रकट नहीं होता है जब डी (एन) बच्चों के माता-पिता निकाले जाते हैं (कारण मैंने लिखा है)। यह प्रतीत होता है ** जब उनके माता-पिता अपने माता-पिता को 'समेकित' के दौरान चुनते हैं - गलत डी() असंतुलन का कारण बनता है। अब विचार करें, अगर, कैस कट के साथ एक कुंजी कम करने के बाद, मैं सभी डी (एन) को बनाए रख सकता हूं जैसे कि मैंने कैस कटौती की है, यानी, डी() बच्चों की मात्रा से छोटी हो सकती है - जटिलता निकालने के लिए-मिनट अभी भी ओ (एलएनजी) है। वास्तव में एक ही डी() को बनाए रखना मुश्किल है, लेकिन मुझे लगता है कि संतुलन को बनाए रखने का एक और तरीका है: – exprosic

+0

प्रत्येक नोड में एस होता है: प्रारंभ में, यह नोड का आकार होता है। जाहिर है, यह 2 का एक्सपोनेंटेशन है - बाइनरी नोटेशन में, 10..000। जब उसके बच्चे को हटा दिया जाता है, और ** इसकी बिट्स की संख्या ** ([लॉग 2 (एस)]) घट गई (1000-> 111, 1011-> 101, आदि), यह अपने माता-पिता के अंतर को रिपोर्ट करती है। जब अंतर माता-पिता [लॉग 2) को कम करने के लिए काफी बड़ा होता है, तो अंतर दादाजी को सूचित किया जाता है, और इसी तरह। – exprosic

+0

एक ही बिंदु माता-पिता को नोड्स की कमी को छिपाना है, लेकिन ओ (1) समय में, और एस के दौरान वास्तविक मात्रा में नोड्स (एस के साथ पेड़ कम से कम एस/2 नोड्स) के बीच संबंध रखें, और दौरान समेकित, संतुलन रखने के लिए एस/डी का उपयोग करें (उसी डी के साथ नोड्स को गठबंधन करें, या वही [लॉग 2 (एस)])। क्या वह सही है? – exprosic

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