Bir ikili ağacın ortalama yüksekliği nedir?


10

İkili bir ağacın ortalama yüksekliği hakkında resmi bir tanım var mı?

Aşağıdaki iki yöntemi kullanarak ikili bir ağacın ortalama yüksekliğini bulmak hakkında bir öğretici soru var:

  1. Doğal çözüm, kökten bir yaprağa olan tüm olası yolların ortalama uzunluğunu almak olabilir, yani

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

  2. Başka bir seçenek, özyinelemeli olarak tanımlamaktır, yani bir düğümün ortalama yüksekliği, alt ağaçların artı birlerinin ortalama yüksekliklerinin ortalamasıdır, yani

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

    ile yapraklar için ve boş alanlar için.avh2(l)=1lAVH2(_)=0

Mevcut anlayışım temelinde, örneğin ağacının ortalama yüksekliğiT

    1    
   / \
  2   3
 /
4

olduğu özyineleme kullanarak ikinci yöntemi ile.avh2(T)=1.25

Ancak, ilkini nasıl yapacağımı hala tam olarak anlayamıyorum. doğru değil.avh1(T)=(1+2)/2=1.5


1
Biraz bağlam sağlayabilir misiniz? "Doğru" bir matematiksel tanım diye bir şey yoktur; "ikili ağacın ortalama yüksekliğini" istediğiniz gibi tanımlayabilirsiniz. (Ortalama Ne üzerinde ne dağılımı ?) Ama farklı tanımları az ya da çok olacak kullanışlı farklı uygulamalar için.
JeffE

@JeffE "İkili bir ağacın ortalama yüksekliğinin nasıl tanımlanacağı hemen belli değildir. Belki de en doğal çözüm, kökten bir yaprağa olan olası yolların ortalama uzunluğuna sahip olmak olabilir. Daha basit (belki de basit) bir çözüm bir düğümün ortalama yüksekliğinin, alt ağaçların artı birinin ortalama yüksekliklerinin ortalaması olduğu anlamına gelir. Doldurun, bu alternatifi kodlamayı daha kolay bulabilirsiniz. Farkı göstermek için örnekler verebilir misiniz? "
Zamansız

İki varyantın kesin tanımlarını vererek yazınızı daha net hale getirmeye çalıştım. Lütfen metninizi doğru yorumladığımı kontrol edin. Özellikle, ikinci varyantın çapasını kaçırdınız; yaprakları bir veya sıfır yüksekliğe götürürseniz fark yaratır.
Raphael

Yanıtlar:


3

Her iki tanımın da aynı ölçüyü tanımladığına inanmak için hiçbir neden yoktur. tekrar tekrar yazabilirsiniz :AVH1

AVH1(N-(l,r))=lv(l)(birvh1(l)+1)+lv(r)(birvh1(r)+1)lv(l)+lv(r)

ile yaprak için l . Bunun aynı olduğuna inanmıyorsanız , sağ tarafta avh 1 tanımını açın veya bir indüksiyon kanıtı uygulayın.AVH1(l)=0lAVH1

Şimdi avh 2'den oldukça farklı çalıştığını görüyoruz . Birlikte AVH 2 , bir düğüm çocuk yinelemeli yükseklikleri ağırlığında eşit (ekleme ve iki ile bölünmesi), AVH 1 içerdikleri yaprak sayısı göre bunları ağırlığındadır. Yani yaprak dengeli ağaçlar için aynıdır (çapa modulo), bu da kardeş ağaçların eşit sayıda yaprağa sahip olması anlamında dengelidir. Avh 1'in özyinelemeli biçimini lv ( l ) = lv ( r ) ile basitleştirirsenizAVH1AVH2AVH2AVH1AVH1lv(l)=lv(r)bu hemen belirgindir. Ancak dengesiz ağaçlarda farklıdırlar.

Hesaplamalarınız gerçekten doğrudur (tanımınız dikkate alındığında); örnek ağacın yaprak dengeli olmadığını unutmayın.


Bu, için uygulama kodunu göstermek mümkün mü, yinelemeli olarak nasıl yapılacağı hakkında bir fikrim yokAVH1
Timeless

AVH1

Yani özyineleme kullanarak uygulama kodu
Zamansız

@null: Temel durumu dahil etmeniz koşuluyla formülü neredeyse kelimenin tam anlamıyla kopyalayabilirsiniz . Bunu tam olarak nasıl yapacağınız programlama dilinize ve ağaç uygulamanıza bağlıdır. Uygulama sizin için bir engelse, Yığın Taşması yinelemesini almanızı öneririm .
Raphael

2

Edit: Jeffe yukarıdaki yorumunda iyi bir noktaya değiniyor. Muhtemelen aşağıdaki cevapta "doğru vs yanlış" ı "uygun / tutarlı vs tutarsız" olarak okumalısınız.

Görünüşe göre ikinci hesaplamanız yanlış. Tek bir düğüme (yani bir yaprağa) sahip bir alt ağacın yüksekliğini 0 olsun. Sonra alt ağaç kökünün yüksekliği:

  • 4'teki yükseklik 0
  • 3'teki yükseklik 0
  • 2'deki yükseklik 3 + 1'deki ortalama yükseklik = 0 + 1 = 1
  • 1'deki yükseklik 2 ve 3'teki yüksekliklerin ortalamasıdır = (0 + 1) / 2 + 1 = 1.5

Bence ilk hesaplamayı doğru yapıyorsunuz ve 1.5 doğru cevap.


fikir, 2. yaklaşıma dayanarak -1 yüksekliği olan boş düğümdür, bir düğümün ortalama yüksekliği alt ağaçların ortalaması artı 1'dir, düğüm 4'ün ortalama yüksekliği ((-1) + (- 1)) / 2 + 1 = 0 , düğüm 2'nin ortalama yüksekliği (0 + (- 1)) / 2 + 1 = 0,5'tir ve dolayısıyla kökün ortalama yüksekliği 1,25'tir.
Zamansız

@null Eğer ısrar ederseniz bu şekilde tanımlayabilirsiniz, ancak o zaman iki tanım tutarlı olmayacaktır.
Joe
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.