एक बाइनरी हीप साबित करना पत्ते है


16

मैं यह साबित करने की कोशिश कर रहा हूं कि नोड्स के साथ एक बाइनरी हीप में बिल्कुल पत्ते हैं, यह देखते हुए कि हीप को निम्न तरीके से बनाया गया है:nn2

प्रत्येक नए नोड को percolate up के माध्यम से डाला जाता है । इसका मतलब है कि प्रत्येक नया नोड अगले उपलब्ध बच्चे पर बनाया जाना चाहिए। मेरे कहने का मतलब यह है कि बच्चे लेवल-डाउन भरे हुए हैं, और दाएं से बाएं। उदाहरण के लिए, निम्नलिखित ढेर:

    0
   / \
  1   2

होता है इस क्रम में बनाया गया था: 0, 1, 2. (संख्या, बस अनुक्रमित रहे हैं वे उस नोड में आयोजित वास्तविक डेटा का कोई संकेत नहीं देते हैं।)

इसके दो महत्वपूर्ण निहितार्थ हैं:

  1. स्तर पर कोई नोड नहीं हो सकता है बिना स्तर पूरी तरह से भरा हुआ हैk+1k

  2. क्योंकि बच्चों को दाएं से बाएं बनाया गया है, स्तर पर नोड्स के बीच कोई "रिक्त स्थान" नहीं हो सकता है , या निम्नलिखित जैसी स्थितियां: k+1

        0
       / \
      1   2
     / \   \
    3  4    6
    

(यह मेरी परिभाषा के अनुसार एक अवैध ढेर होगा।) इस प्रकार, इस ढेर के बारे में सोचने का एक अच्छा तरीका ढेर का एक सरणी कार्यान्वयन है, जहां सरणी के इंडोल में कोई "कूद" नहीं हो सकता है।

इसलिए, मैं सोच रहा था कि इंडक्शन संभवत: ऐसा करने का एक अच्छा तरीका होगा ... शायद एन के लिए एक विषम मामलों से निपटने के लिए कुछ हो। उदाहरण के लिए, कुछ इस तथ्य का उपयोग करते हुए कि इस तरह से बनाए गए ढेर में एक एन के लिए एक बच्चे के साथ एक आंतरिक नोड होना चाहिए, और विषम एन के लिए ऐसा कोई नोड नहीं है। विचार?


@DaveClarke: बिलकुल नहीं; जुड़ा हुआ प्रश्न हमारे संपादकों के उन हिस्सों पर गलतफहमी का परिणाम है जो संदर्भ के लिए वहां छोड़ दिए गए हैं।
राफेल

क्या आपने नोड संख्या सम्मान पर प्रेरण की कोशिश की है । सम्मिलन की संख्या?
राफेल

@DaveClarke: क्यों? यह अपने आप में एक वैध प्रश्न है, इम्हो।
राफेल

BTW, सवाल का ढेर से कोई लेना-देना नहीं है। दावा किसी भी पूर्ण बाइनरी ट्री के लिए है
Ran G.

जवाबों:


8

यदि मैं आपके प्रश्न को सही ढंग से प्राप्त करता हूं, तो प्राप्त हीप केवल एक ऑर्डर किया गया बाइनरी-ट्री है, जहां ऑर्डर में मेरा मतलब है कि के स्तर पूरी तरह से भरे जाने के बाद ही वें स्तर पर कब्जा किया जा सकता है , और प्रत्येक स्तर को बाईं ओर से कब्जा कर लिया गया है सही करने के लिए, लंघन के बिना।kk1

फिर प्रमाण ऐसे ही जाता है।

  1. गहराई का एक उत्तम वृक्ष ठीक नोड्स है।k2k+11
  2. मान लें कि ढेर गहराई तक पहुँच जाता है । इस प्रकार k
    1. स्तर तक वृक्ष परिपूर्ण है (और वहां नोड हैं)k12k1
    2. अंतिम स्तर पर, बिल्कुल नोड्स हैं, जो सभी पत्तियां हैं।n2k+1
  3. वें स्तर पर प्रत्येक पत्ती में एक अभिभावक होता है। इसके अलावा, प्रत्येक दो लगातार पत्तों में एक ही पिता होता है (शायद अंतिम नोड को छोड़कर, जिनके पिता का केवल एक बच्चा है)k
  4. इस प्रकार, स्तर में नोड्स से बाहर , माता-पिता हैं, और बाकी पत्ते हैं।2k1k1n2k+122k1n2k+12
  5. पत्तियों की कुल मात्रा जो आपको देता है आप की जरूरत है।
    n2k+1+2k1n2k+12

1
ध्यान दें कि पूर्ण से अलग हैं पूरा से अलग हैं आदर्श द्विआधारी पेड़। दुर्भाग्यपूर्ण, अस्पष्ट और असंगत शब्दों का विकल्प है, लेकिन आप इसके बारे में क्या कर सकते हैं। मुझे लगता है कि विकिपीडिया की परिभाषा से चिपके रहना समझ में आता है, क्योंकि सबसे पहले वहाँ दिखेगा?
राफेल

ओह, वाह, मैं भी इन शर्तों को नहीं जानता था। इस पर ध्यान दिलाने के लिए धन्यवाद।
रैन जी।

"स्तर k the 1 तक वृक्ष परिपूर्ण है (और वहां 2 ^ k - 1 नोड्स हैं") और "इस प्रकार, 2 ^ (k) 1) स्तर k के स्तर पर नोड्स" 1 "परस्पर विरोधी कथन प्रतीत होते हैं, या क्या मैं कुछ न कुछ भूल रहा हूं?
एड्रियन h।

@adrianh। ( ) पूरे उप-वर्ग में नोड्स, 2 k - 1 नोड्स केवल अंतिम स्तर पर (इस प्रकार पूरे सबट्री में नोड्स हैं ।)2k12k12k1+2k2+...
रैन जी।

आह तुम पूरी तरह से सही हो, स्पष्टीकरण के लिए बहुत बहुत धन्यवाद!
एड्रियन h।

11

यहाँ एक सरल तार्किक प्रमाण है।

nthn/2n/2+1)thn/2

(n/2)(n/2)


1
काफी सहज और स्पष्ट व्याख्या। धन्यवाद।
श्वेतहाट
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.