La presentazione è in caricamento. Aspetta per favore

La presentazione è in caricamento. Aspetta per favore

1 © Alberto Montresor Algoritmi e Strutture Dati Capitolo 5 - Alberi Alberto Montresor Università di Trento This work is licensed under the Creative Commons.

Presentazioni simili


Presentazione sul tema: "1 © Alberto Montresor Algoritmi e Strutture Dati Capitolo 5 - Alberi Alberto Montresor Università di Trento This work is licensed under the Creative Commons."— Transcript della presentazione:

1 1 © Alberto Montresor Algoritmi e Strutture Dati Capitolo 5 - Alberi Alberto Montresor Università di Trento This work is licensed under the Creative Commons Attribution-NonCommercial-ShareAlike License. To view a copy of this license, visit or send a letter to Creative Commons, 543 Howard Street, 5th Floor, San Francisco, California, 94105, USA.

2 2 © Alberto Montresor Alberi radicati Albero: definizione informale E' un insieme dinamico i cui elementi hanno relazioni di tipo gerarchico Albero: definizione ricorsiva Insieme vuoto di nodi, oppure Una radice T e 0 o più sottoalberi, con la radice di ogni sottoalbero collegata a T da un arco (orientato) T1T1 T2T2 TnTn T es.: radice T con n sottoalberi

3 3 © Alberto Montresor Alberi ordinati T jk a Radice (root) Sottoalbero Figlio (child) di T Figlio di T Radice del proprio sottoalbero Foglie (leaf) Nodi fratelli (figli di a ) Nodi interni = Nodi - Foglie... Padre (parent) dei nodi j e k

4 4 © Alberto Montresor Alberi: definizioni In un albero Profondità di un nodo: la lunghezza del percorso dalla radice al nodo (i.e., numero archi attraversati) Livello : l'insieme dei nodi alla stessa profondità Altezza dell'albero: massimo livello delle sue foglie p=0 Altezza albero: 3 p=1 p=2 p=3 Livello 3

5 5 © Alberto Montresor Alberi? DAG Radice Foresta

6 6 © Alberto Montresor Alberi: una possibile specifica

7 7 © Alberto Montresor Algoritmi di visita degli alberi Visita (o attraversamento) di un albero: Algoritmo per visitare tutti i nodi di un albero In profondità (depth-first search, a scandaglio): DFS Vengono visitati i rami, uno dopo laltro Tre varianti In ampiezza (breadth-first search, a ventaglio): BFS A livelli, partendo dalla radice

8 8 © Alberto Montresor Visita alberi: in profondità in ordine anticipato (previsita) a be cdf g Sequenza: a b c d e f g T

9 9 © Alberto Montresor Visita alberi: in profondità in ordine posticipato (postvisita) a be cdf g T Sequenza: c d b f g e a

10 10 © Alberto Montresor Visita alberi: in profondità in ordine simmetrico (invisita) a be cdf g T Sequenza (i=1): c b d a f e g

11 11 © Alberto Montresor Visita alberi: in ampiezza a be cdf g T Sequenza: a b e c d f g

12 12 © Alberto Montresor Realizzazione con vettore dei figli // / / / / / / Nodo Padre Array di Figli / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / Rischio di sprecare memoria se molti nodi hanno grado minore del grado massimo k.

13 13 © Alberto Montresor Realizzazione con puntatori padre/primo-figlio/fratello / / / / / / / / / / / / / / / / Nodo Primo Figlio Padre Fratello Soluzione: usare una lista di figli (fratelli).

14 14 © Alberto Montresor Realizzazione con puntatori padre/primo-figlio/fratello

15 15 © Alberto Montresor Realizzazione con puntatori padre/primo-figlio/fratello

16 16 © Alberto Montresor Realizzazione con vettore dei padri a be cdf g T L'albero è rappresentato da un vettore i cui elementi contengono l'indice del padre Esempio: 0 a1 b1 e2 c2 d3 f3 g

17 17 © Alberto Montresor Realizzazione con vettore dei padri

18 18 © Alberto Montresor Alberi binari Definizione Un albero binario è un albero ordinato in cui ogni nodo ha al più due figli e si fa distinzione tra il figlio sinistro ed il figlio destro di un nodo. Nota: due alberi T e U aventi gli stessi nodi, gli stessi figli per ogni nodo e la stessa radice, sono distinti qualora un nodo u sia designato come figlio sinistro di un nodo v in T e come figlio destro del medesimo nodo in U

19 19 © Alberto Montresor Alberi binari jk a Radice Sottoalbero destro Sottoalbero sinistro Figlio sinistro Radice del sottoalbero sinistro Figlio destro Radice del sottoalbero destro j.parent() Padre del nodo j (e k ) a.left() a.right()

20 20 © Alberto Montresor Alberi binari: specifica

21 21 © Alberto Montresor Alberi binari: realizzazione / / / / / / / / / / Nodo Figlio Sinistro Padre Figlio Destro

22 22 © Alberto Montresor Alberi binari: realizzazione Per motivi di spazio, le operazioni parent (), left (), right (), read () e write () non sono mostrate; semplicemente, restituiscono il valore della variabile corrispondente.

23 23 © Alberto Montresor Alberi binari: visite in profondità

24 24 © Alberto Montresor Limite inferiore complessità ordinamento Albero delle scelte in algoritmi di ordinamento Sequenze di confronti (a due alternative) rappresentabile come albero binario Nodi interni confronti, foglie soluzioni del problema Percorso radice-foglia: insieme di confronti per individuare una soluzione Limite inferiore ordinamento Sia n la dimensione del vettore Numero di possibili soluzioni: n! Altezza minima albero: log 2 n! Da cui deriva che qualunque algoritmo di ordinamento richiede Ω(n log n) confronti

25 25 © Alberto Montresor Semplici esercizi basati su visite Es Dato un albero radicato T, calcolare la sua altezza Dato un albero radicato T, calcolare il numero totale di nodi Dato un albero radicato T, stampare tutti i nodi a profondità h


Scaricare ppt "1 © Alberto Montresor Algoritmi e Strutture Dati Capitolo 5 - Alberi Alberto Montresor Università di Trento This work is licensed under the Creative Commons."

Presentazioni simili


Annunci Google