Appunti per il modulo di algoritmi e strutture dati - Sezione di ...
Appunti per il modulo di algoritmi e strutture dati - Sezione di ...
Appunti per il modulo di algoritmi e strutture dati - Sezione di ...
Create successful ePaper yourself
Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.
Dato un albero con ra<strong>di</strong>ce p e sottoalberi A1, . . . , An,<br />
• p è padre della ra<strong>di</strong>ce <strong>di</strong> ogni Ai;<br />
• la ra<strong>di</strong>ce <strong>di</strong> ogni Ai è l’i-esimo figlio <strong>di</strong> p;<br />
• un nodo che non ha sottoalberi è una foglia;<br />
Si noti che in un albero generico l’or<strong>di</strong>ne tra i figli <strong>di</strong> ciascun nodo è significativo. Le definizioni <strong>di</strong><br />
antecedente, <strong>di</strong>scendente e livello sono uguali a quelle <strong>per</strong> gli alberi binari. Da ora in poi considereremo<br />
solo alberi generici etichettati. Un esempio <strong>di</strong> albero generico è mostrato in figura 6.<br />
Anche le proprietà degli alberi generici e dei programmi che li manipolano possono essere <strong>di</strong>mostrati<br />
con l’induzione strutturale:i casi base sono gli alberi composti da un solo nodo; Il passo induttivo suppone<br />
vera la proprietà sugli alberi A1, . . . , An e la <strong>di</strong>mostra vera sull’albero composto da un nodo e A1, . . . , An<br />
come sottoalberi.<br />
Esempio 7.1 (induzione strutturale su alberi generici)<br />
Dimostriamo che in un albero <strong>il</strong> numero dei no<strong>di</strong> è uguale ad uno più la somma dei gra<strong>di</strong> dei no<strong>di</strong>, dove<br />
<strong>il</strong> grado <strong>di</strong> un nodo è <strong>il</strong> numero dei suoi figli. Dato un albero A, in<strong>di</strong>chiamo con N(A) <strong>il</strong> numero dei suoi<br />
no<strong>di</strong>, con G(A) la somma dei gra<strong>di</strong> dei suoi no<strong>di</strong> e con G(p) <strong>il</strong> grado <strong>di</strong> un nodo p. Vogliamo <strong>di</strong>mostrare<br />
che, <strong>per</strong> ogni A, N(A) = G(A) + 1.<br />
• Base. Se l’albero è formato da un solo nodo, questo ha grado 0 e quin<strong>di</strong> la proprietà è verificata.<br />
• Induzione. Consideriamo un albero A con ra<strong>di</strong>ce p e sottoalberi della ra<strong>di</strong>ce A1, . . . , An. Ipotesi:<br />
Per ogni 1 ≤ i ≤ n, N(Ai) = G(Ai) + 1.<br />
Tesi: N(A) = G(A) + 1.<br />
Dim. N(A) = N(A1) + . . . + N(An) + 1<br />
= G(A1) + 1 + . . . + G(An) + 1 + 1 <strong>per</strong> ipotesi induttiva<br />
= G(A1) + . . . + G(An) + n + 1<br />
= G(A1) + . . . + G(An) + G(p) + 1 <strong>per</strong>chè G(p) = n<br />
= G(A) + 1 <strong>per</strong> definizione <strong>di</strong> grado<br />
✓✏<br />
✟<br />
A<br />
✟<br />
✒✑ ❍<br />
❍❍❍❍<br />
✟<br />
✓✏ ✟<br />
✓✏ ✓✏<br />
B C D<br />
✒✑ ✒✑ ✒✑<br />
✁ ❆<br />
✓✏ ✁ ✓✏ ❆ ✓✏<br />
E F G<br />
✒✑ ✒✑ ✒✑<br />
Figura 6: Esempio <strong>di</strong> albero<br />
È importante notare come un albero binario non sia un caso particolare <strong>di</strong> albero generico, ma un tipo<br />
<strong>di</strong> dato strutturalmente <strong>di</strong>verso. Questo, <strong>per</strong> esempio, vuol <strong>di</strong>re che con due no<strong>di</strong> A e B possono essere<br />
costruiti due alberi generici <strong>di</strong>fferenti, mostrati in figura 7.a), mentre possono essere costruiti quattro<br />
34