30.05.2013 Views

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 ...

SHOW MORE
SHOW LESS

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

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!