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 ...
You also want an ePaper? Increase the reach of your titles
YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.
caso particolare <strong>di</strong> induzione ben fondata (ve<strong>di</strong> Appen<strong>di</strong>ce 1) . L’insieme degli alberi binari può essere<br />
visto come un insieme ben fondato prendendo come relazione <strong>di</strong> or<strong>di</strong>namento la relazione <strong>di</strong> sottoalbero<br />
(sottostruttura) fra due alberi. Il minimo è l’albero vuoto ed è quin<strong>di</strong> la base dell’induzione. Il passo<br />
induttivo suppone vera la proprietà su Bs, e Bd, e <strong>di</strong>mostra che è vera <strong>per</strong> un nodo con sottoalberi sinistro<br />
e destro rispettivamente Bs e Bd.<br />
Esempio 6.1 (Induzione strutturale su alberi binari)<br />
Dimostriamo che in un albero binario <strong>il</strong> numero dei sottoalberi vuoti è uguale al numero dei no<strong>di</strong> più 1.<br />
Dato un albero B, in<strong>di</strong>chiamo con N(B) <strong>il</strong> numero dei suoi no<strong>di</strong> e con con V (B) <strong>il</strong> numero <strong>di</strong> sottoalberi<br />
vuoti <strong>di</strong> B. Vogliamo <strong>di</strong>mostrare che, <strong>per</strong> ogni B, V (B) = N(B) + 1.<br />
• Base. Se l’albero è vuoto N(B) = 0, V (B) = 1 e la proprietà è verificata.<br />
• Induzione. Consideriamo un albero B con ra<strong>di</strong>ce p e sottoalberi sinistro e destro Bs e Bd. Ipotesi:<br />
V (Bs) = N(Bs) + 1 e V (Bd) = N(Bd) + 1.<br />
Tesi: V (B) = N(B) + 1.<br />
Dim. . V (B) = V (Bs) + V (Bd) <strong>per</strong>chè B non è vuoto<br />
= N(Bs) + 1 + N(Bd) + 1 <strong>per</strong> ipotesi induttiva<br />
= N(B) + 1 <strong>per</strong>chè N(B) = N(Bs) + N(Bd) + 1<br />
Le o<strong>per</strong>azioni più comuni sugli alberi sono quelle <strong>di</strong> linearizzazione, ricerca, inserimento, e cancellazione<br />
<strong>di</strong> no<strong>di</strong>. Una linearizzazione <strong>di</strong> un albero è una sequenza contenente i nomi dei suoi no<strong>di</strong>. Esistono<br />
<strong>di</strong>versi tipi <strong>di</strong> linearizzazione. Le più comuni linearizzazioni, dette visite, degli alberi binari sono tre:<br />
or<strong>di</strong>ne anticipato (preorder), or<strong>di</strong>ne <strong>di</strong>fferito (postorder) e or<strong>di</strong>ne simmetrico (inorder), definite nel modo<br />
seguente:<br />
{<br />
}<br />
{<br />
}<br />
{<br />
}<br />
or<strong>di</strong>ne anticipato:<br />
se l’albero binario non e’ vuoto {<br />
esamina la ra<strong>di</strong>ce;<br />
visita <strong>il</strong> sottoalbero sinistro;<br />
visita <strong>il</strong> sottoalbero destro;<br />
}<br />
or<strong>di</strong>ne <strong>di</strong>fferito:<br />
se l’albero binario non e’ vuoto {<br />
visita <strong>il</strong> sottoalbero sinistro;<br />
visita <strong>il</strong> sottoalbero destro;<br />
esamina la ra<strong>di</strong>ce;<br />
}<br />
or<strong>di</strong>ne simmetrico:<br />
se l’albero binario non e’ vuoto {<br />
visita <strong>il</strong> sottoalbero sinistro;<br />
esamina la ra<strong>di</strong>ce;<br />
visita <strong>il</strong> sottoalbero destro;<br />
}<br />
28