एक द्विआधारी पेड़ की औसत ऊंचाई क्या है?


10

क्या बाइनरी ट्री की औसत ऊंचाई के बारे में कोई औपचारिक परिभाषा है?

मेरे पास निम्नलिखित दो विधियों का उपयोग करके एक बाइनरी ट्री की औसत ऊँचाई खोजने के बारे में एक ट्यूटोरियल प्रश्न है:

  1. प्राकृतिक समाधान जड़ से पत्ती तक सभी संभव पथों की औसत लंबाई लेना हो सकता है, अर्थात्

    avh1(T)=1# leaves in Tv leaf of Tdepth(v)

  2. एक अन्य विकल्प इसे पुनरावर्ती रूप से परिभाषित करना है, जो कि नोड के लिए औसत ऊंचाई है, औसत से अधिक की औसत ऊंचाई प्लस एक है, अर्थात

    avh2(N(l,r))=avh2(l)+avh2(r)2+1

    with लीफ़्स के लिए और खाली स्लॉट्स के लिए।avh2(l)=1lavh2(_)=0

मेरी वर्तमान समझ के आधार पर, उदाहरण के लिए पेड़ की औसत ऊँचाईT

    1    
   / \
  2   3
 /
4

is दूसरी विधि द्वारा, जो पुनरावृत्ति का उपयोग कर रहा है।avh2(T)=1.25

हालाँकि, मुझे अभी भी यह समझ में नहीं आया है कि पहले वाले को कैसे करना है। सही नहीं है।avh1(T)=(1+2)/2=1.5


1
क्या आप कुछ संदर्भ प्रदान कर सकते हैं? "सही" गणितीय परिभाषा जैसी कोई चीज नहीं है; हालाँकि आप "बाइनरी ट्री की औसत ऊँचाई" को परिभाषित कर सकते हैं। (की औसत क्या खत्म हो गया क्या वितरण ?) लेकिन अलग अलग परिभाषा और अधिक या कम होगा उपयोगी विभिन्न अनुप्रयोगों के लिए।
जेफ

@ जेफ़े "यह तुरंत स्पष्ट नहीं है कि एक द्विआधारी पेड़ की औसत ऊंचाई को कैसे परिभाषित किया जाए। शायद सबसे प्राकृतिक समाधान हो सकता है कि जड़ से पत्ती तक संभव पथों की औसत लंबाई हो। एक सरल (शायद और भी सरल) समाधान। यह कहना है कि नोड के लिए औसत ऊंचाई उपप्रकारों की औसत ऊंचाइयों के साथ-साथ औसत एक है। आपको इस विकल्प को कोड करना आसान लगता है। क्या आप अंतर प्रदर्शित करने के लिए उदाहरण दे सकते हैं? "
टाइमलेस

मैंने दो वेरिएंट की सटीक परिभाषा देकर आपके पोस्ट को और अधिक स्पष्ट करने की कोशिश की। कृपया जाँच लें कि मैंने आपके पाठ की सही व्याख्या की है। विशेष रूप से, आप दूसरे संस्करण के लिए एंकर को याद कर रहे थे; चाहे आप एक या शून्य की ऊँचाई वाले पत्तों को लें, इससे फर्क पड़ता है।
राफेल

जवाबों:


3

यह मानने का कोई कारण नहीं है कि दोनों परिभाषाएं एक ही उपाय का वर्णन करती हैं। आप पुनरावर्ती रूप से भी लिख सकते हैं:avh1

avh1(N(l,r))=lv(l)(avh1(l)+1)+lv(r)(avh1(r)+1)lv(l)+lv(r)

साथ पत्तियों के लिए । यदि आपको विश्वास नहीं है कि यह समान है, तो दाहिने हाथ की ओर की परिभाषा को प्रकट करें , या एक इंडक्शन प्रूफ निष्पादित करें।l avh 1avh1(l)=0lavh1

अब हम देखते हैं कि से काफी अलग तरीके से काम करता है । जबकि एक नोड बच्चों की पुनरावर्ती ऊंचाइयों को समान रूप से तौलता है (जोड़कर और दो से विभाजित), पत्तियों की संख्या के अनुसार उनका वजन होता है। तो वे पत्ती-संतुलित पेड़ों के लिए एक ही (modulo the anchor) हैं, यह इस अर्थ में संतुलित है कि भाई-बहनों के पेड़ों में समान रूप से कई पत्ते होते हैं। आप की पुनरावर्ती प्रपत्र को आसान बनाने, तो साथ इस तुरंत स्पष्ट है। असंतुलित पेड़ों पर, हालांकि, वे अलग हैं।avh 2 avh 2 avh 1 avh 1 lv ( l ) = lv ( r)avh1avh2avh2avh1avh1lv(l)=lv(r)

आपकी गणना वास्तव में सही है (आपकी परिभाषा दी गई है); ध्यान दें कि उदाहरण पेड़ पत्ती-संतुलित नहीं है।


क्या के लिए कार्यान्वयन कोड दिखाना संभव है , मुझे यह पता नहीं है कि इसे कैसे पुनरावृत्ति किया जाएavh1
Timeless

@ उत्तर: क्षमा करें, मुझे यह प्रश्न समझ में नहीं आया। क्या आपका मतलब है कि यह साबित करने के लिए कि की पुनरावर्ती परिभाषा बराबर है? avh1
राफेल

मैं कार्यान्वयन कोड का उपयोग कर प्रत्यावर्तन मतलब
टाइमलेस

@null: आप सूत्र को लगभग शाब्दिक रूप से कॉपी कर सकते हैं , बशर्ते आप आधार मामले को शामिल करें। यह कैसे करें कि आपकी प्रोग्रामिंग भाषा और पेड़ कार्यान्वयन पर सटीक रूप से निर्भर करता है। मेरा सुझाव है कि स्टैक ओवरफ्लो की पुनरावृत्ति को लें यदि कार्यान्वयन आपके लिए एक बाधा है।
राफेल

2

संपादित करें: जेफ़े अपनी टिप्पणी के ऊपर एक अच्छा बिंदु बनाता है। आपको "सुविधाजनक / संगत बनाम असंगत" के रूप में निम्नलिखित उत्तर में "सही बनाम गलत" पढ़ना चाहिए।

ऐसा लगता है कि आपकी दूसरी गणना गलत है। एक नोड (यानी एक पत्ती) के साथ एक सबट्री की ऊँचाई 0. होने दें: तब सबट्री रूट की ऊँचाई निम्न पर होगी:

  • 4 पर ऊंचाई 0 है
  • 3 पर ऊंचाई 0 है
  • 2 की ऊंचाई 3 + 1 = 0 + 1 = 1 की औसत ऊंचाई है
  • 1 पर ऊंचाई 2 और 3 = (0 + 1) / 2 + 1 = 1.5 पर ऊंचाइयों का औसत है

मुझे लगता है कि आप पहली गणना सही तरीके से कर रहे हैं, और 1.5 सही उत्तर है।


विचार 1 की ऊंचाई के साथ शून्य नोड है, 2 दृष्टिकोण के आधार पर, एक नोड की औसत ऊंचाई उपप्रकार प्लस 1 का औसत है, नोड 4 की औसत ऊंचाई ((-1) + (- 1)) / 2 + 1 = 0 है। , नोड 2 की औसत ऊंचाई है (0 + (- 1)) / 2 + 1 = 0.5, और इसलिए रूट की औसत ऊंचाई 1.25 है।
टाइमलेस

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