Salta al contenuto
Note per Studenti Esercizio 7 · dimostrazioni sulle foglie di un albero binario proprio

Esercizio 7dimostrazioni sulle foglie di un albero binario proprio

In questa pagina 6

Testo (scritti del 05/02/2024, 07/02/2025, 19/09/2023, 04/09/2024 e 09/07/2024; domande ricorrenti di prima parte). Sia TT un albero binario proprio non vuoto con nn nodi, mm foglie e altezza hh.

  1. Dimostrare per induzione sull'altezza che m≤2hm \le 2^h.
  2. Dimostrare per induzione che m≥h+1m \ge h + 1.
  3. Dimostrare che n≥2h+1n \ge 2h + 1, usando (senza dimostrarla) la relazione nota tra numero di nodi interni e foglie.
  4. Dimostrare per induzione su nn che in un albero qualsiasi con n>0n > 0 nodi l'altezza è uguale alla massima profondità di una foglia (scritto del 03/07/2025).

Richiami

Un albero binario è proprio se ogni nodo interno ha esattamente due figli (vedi Alberi binariAlbero binario e albero binario proprio; interfaccia; relazioni tra nodi, foglie e altezza (m = n-m+1, h+1 <= m <= 2^h, 2h+1 <= n <= 2^(h+1)-1) con dimostrazioni; visita inorder; parse tree e valutazione di espressioni; heightSum come esempio di calcolo di un'informazione più ricca.Alberi binari →). L'altezza di un nodo è 00 per le foglie e 1+max⁡1 + \max delle altezze dei figli altrimenti. La relazione nota: il numero di nodi interni è n−m=m−1n - m = m - 1 (le foglie sono una in più dei nodi interni).

1. m≤2hm \le 2^h

Induzione sull'altezza h≥0h \ge 0. Si fissa la proprietà P(h)P(h): ogni albero binario proprio di altezza hh ha al più 2h2^h foglie.

  • Base h=0h = 0: l'albero è una sola foglia (la radice), m=1=20m = 1 = 2^0 ✓.
  • Passo. Sia h≥0h \ge 0 e si assuma P(h′)P(h') per ogni h′≤hh' \le h. Sia TT di altezza h+1≥1h + 1 \ge 1: la radice è un nodo interno con sottoalberi propri T1,T2T_1, T_2 di altezze h1,h2h_1, h_2, con h+1=max⁡{h1,h2}+1h + 1 = \max\{h_1, h_2\} + 1, quindi h1,h2≤hh_1, h_2 \le h. Per ipotesi induttiva m1≤2h1≤2hm_1 \le 2^{h_1} \le 2^h e m2≤2h2≤2hm_2 \le 2^{h_2} \le 2^h. Le foglie di TT sono quelle di T1T_1 e T2T_2, quindi m=m1+m2≤2⋅2h=2h+1m = m_1 + m_2 \le 2 \cdot 2^h = 2^{h+1} ✓.

2. m≥h+1m \ge h + 1

Induzione sull'altezza. P(h)P(h): ogni albero proprio di altezza hh ha almeno h+1h + 1 foglie.

  • Base h=0h = 0: m=1=h+1m = 1 = h + 1 ✓.
  • Passo. TT di altezza h+1h + 1 con sottoalberi T1,T2T_1, T_2: uno dei due, diciamo T1T_1, ha altezza esattamente hh (perché h+1=max⁡{h1,h2}+1h + 1 = \max\{h_1, h_2\} + 1). Per ipotesi m1≥h+1m_1 \ge h + 1. Il sottoalbero T2T_2, essendo non vuoto, ha almeno una foglia, m2≥1m_2 \ge 1. Quindi m=m1+m2≥(h+1)+1=h+2m = m_1 + m_2 \ge (h + 1) + 1 = h + 2, che è il valore richiesto per l'altezza h+1h + 1 ✓.

3. n≥2h+1n \ge 2h + 1

Dalla relazione nota, il numero di nodi interni è n−m=m−1n - m = m - 1, quindi n=2m−1n = 2m - 1. Con il punto 2: n=2m−1≥2(h+1)−1=2h+1n = 2m - 1 \ge 2(h + 1) - 1 = 2h + 1. □\square

Dimostrazione diretta alternativa. Un cammino dalla radice a una foglia di profondità hh contiene hh nodi interni e una foglia. Ogni nodo interno ha due figli, e uno solo sta sul cammino: l'altro è un nodo fuori dal cammino, e questi hh nodi sono tutti distinti. Quindi n≥(h+1)+h=2h+1n \ge (h + 1) + h = 2h + 1.

Il limite è raggiunto da un albero "a pettine" in cui ogni nodo interno ha una foglia come figlio (esempio: h=4h = 4, m=5m = 5, n=9n = 9).

4. Altezza e massima profondità delle foglie (albero qualsiasi)

Induzione su n≥1n \ge 1. Si usa l'induzione "forte": P(n)P(n) vale se per ogni albero con nn nodi height(T)=max⁡f fogliadepth(f)\text{height}(T) = \max_{f \text{ foglia}} \text{depth}(f).

  • Base n=1n = 1: la sola radice è anche l'unica foglia, altezza 00 e profondità 00 ✓.
  • Passo. TT con n+1≥2n + 1 \ge 2 nodi ha radice rr con k≥1k \ge 1 figli e sottoalberi T1,…,TkT_1, \dots, T_k con meno di n+1n + 1 nodi ciascuno. Le foglie di TT sono le foglie dei TiT_i e per ognuna depthT(f)=1+depthTi(f)\text{depth}_T(f) = 1 + \text{depth}_{T_i}(f). Per ipotesi induttiva la massima profondità delle foglie di TiT_i in TiT_i è height(Ti)\text{height}(T_i). Quindi max⁡fdepthT(f)=1+max⁡iheight(Ti)=height(r)=height(T)\max_f \text{depth}_T(f) = 1 + \max_i \text{height}(T_i) = \text{height}(r) = \text{height}(T) per definizione di altezza ✓.

Errori comuni

  • Nella base mettere h=1h = 1 senza dimostrare il caso h=0h = 0.
  • Nel passo scrivere m=2⋅2hm = 2 \cdot 2^h senza specificare che le due altezze sono ≤h\le h (non necessariamente uguali).
  • Nel punto 2 dimenticare di usare che un sottoalbero ha altezza esattamente hh (serve per applicare l'ipotesi con h+1h + 1 foglie).
  • Applicare le relazioni ad alberi non propri.

Versione ripasso

Testo. TT binario proprio con nn nodi, mm foglie, altezza hh: provare (1) m≤2hm \le 2^h, (2) m≥h+1m \ge h + 1 (induzione sull'altezza), (3) n≥2h+1n \ge 2h + 1 usando n−m=m−1n - m = m - 1, (4) in un albero qualsiasi l'altezza è la massima profondità delle foglie (induzione su nn).

Teoria collegata