1 © alberto montresor algoritmi e strutture dati capitolo 5 - alberi alberto montresor università...
TRANSCRIPT
![Page 1: 1 © Alberto Montresor Algoritmi e Strutture Dati Capitolo 5 - Alberi Alberto Montresor Università di Trento This work is licensed under the Creative Commons](https://reader035.vdocuments.mx/reader035/viewer/2022062701/5542eb58497959361e8c2ce7/html5/thumbnails/1.jpg)
1© Alberto Montresor
Algoritmi e Strutture DatiCapitolo 5 - Alberi
Alberto MontresorUniversità di Trento
This work is licensed under the Creative Commons Attribution-NonCommercial-ShareAlike License. To view a copy of this license, visit http://creativecommons.org/licenses/by-nc-sa/2.5/ or send a letter to Creative Commons, 543 Howard Street, 5th Floor, San Francisco, California, 94105, USA.
![Page 2: 1 © Alberto Montresor Algoritmi e Strutture Dati Capitolo 5 - Alberi Alberto Montresor Università di Trento This work is licensed under the Creative Commons](https://reader035.vdocuments.mx/reader035/viewer/2022062701/5542eb58497959361e8c2ce7/html5/thumbnails/2.jpg)
2© Alberto Montresor
Alberi radicatiAlberi 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)
T1 T2 Tn
T
es.: radice T con n sottoalberi
![Page 3: 1 © Alberto Montresor Algoritmi e Strutture Dati Capitolo 5 - Alberi Alberto Montresor Università di Trento This work is licensed under the Creative Commons](https://reader035.vdocuments.mx/reader035/viewer/2022062701/5542eb58497959361e8c2ce7/html5/thumbnails/3.jpg)
3© Alberto Montresor
Alberi ordinatiAlberi ordinati
T
j k
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
![Page 4: 1 © Alberto Montresor Algoritmi e Strutture Dati Capitolo 5 - Alberi Alberto Montresor Università di Trento This work is licensed under the Creative Commons](https://reader035.vdocuments.mx/reader035/viewer/2022062701/5542eb58497959361e8c2ce7/html5/thumbnails/4.jpg)
4© Alberto Montresor
Alberi: definizioniAlberi: 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
![Page 5: 1 © Alberto Montresor Algoritmi e Strutture Dati Capitolo 5 - Alberi Alberto Montresor Università di Trento This work is licensed under the Creative Commons](https://reader035.vdocuments.mx/reader035/viewer/2022062701/5542eb58497959361e8c2ce7/html5/thumbnails/5.jpg)
5© Alberto Montresor
Alberi?Alberi?
DAG Radice
Foresta
![Page 6: 1 © Alberto Montresor Algoritmi e Strutture Dati Capitolo 5 - Alberi Alberto Montresor Università di Trento This work is licensed under the Creative Commons](https://reader035.vdocuments.mx/reader035/viewer/2022062701/5542eb58497959361e8c2ce7/html5/thumbnails/6.jpg)
6© Alberto Montresor
Alberi: una possibile specifica
![Page 7: 1 © Alberto Montresor Algoritmi e Strutture Dati Capitolo 5 - Alberi Alberto Montresor Università di Trento This work is licensed under the Creative Commons](https://reader035.vdocuments.mx/reader035/viewer/2022062701/5542eb58497959361e8c2ce7/html5/thumbnails/7.jpg)
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 l’altro
✦Tre varianti
✦In ampiezza (breadth-first search, a ventaglio): BFS
✦A livelli, partendo dalla radice
![Page 8: 1 © Alberto Montresor Algoritmi e Strutture Dati Capitolo 5 - Alberi Alberto Montresor Università di Trento This work is licensed under the Creative Commons](https://reader035.vdocuments.mx/reader035/viewer/2022062701/5542eb58497959361e8c2ce7/html5/thumbnails/8.jpg)
8© Alberto Montresor
Visita alberi: in profondità in ordine anticipato (previsita)Visita alberi: in profondità in ordine anticipato (previsita)
a
b e
c d f g
Sequenza: a b c d e f g
T
![Page 9: 1 © Alberto Montresor Algoritmi e Strutture Dati Capitolo 5 - Alberi Alberto Montresor Università di Trento This work is licensed under the Creative Commons](https://reader035.vdocuments.mx/reader035/viewer/2022062701/5542eb58497959361e8c2ce7/html5/thumbnails/9.jpg)
9© Alberto Montresor
Visita alberi: in profondità in ordine posticipato (postvisita)Visita alberi: in profondità in ordine posticipato (postvisita)
a
b e
c d f g
T
Sequenza: c d b f g e a
![Page 10: 1 © Alberto Montresor Algoritmi e Strutture Dati Capitolo 5 - Alberi Alberto Montresor Università di Trento This work is licensed under the Creative Commons](https://reader035.vdocuments.mx/reader035/viewer/2022062701/5542eb58497959361e8c2ce7/html5/thumbnails/10.jpg)
10
© Alberto Montresor
Visita alberi: in profondità in ordine simmetrico (invisita)Visita alberi: in profondità in ordine simmetrico (invisita)
a
b e
c d f g
T
Sequenza (i=1): c b d a f e g
![Page 11: 1 © Alberto Montresor Algoritmi e Strutture Dati Capitolo 5 - Alberi Alberto Montresor Università di Trento This work is licensed under the Creative Commons](https://reader035.vdocuments.mx/reader035/viewer/2022062701/5542eb58497959361e8c2ce7/html5/thumbnails/11.jpg)
11
© Alberto Montresor
Visita alberi: in ampiezzaVisita alberi: in ampiezza
a
b e
c d f g
T
Sequenza: a b e c d f g
![Page 12: 1 © Alberto Montresor Algoritmi e Strutture Dati Capitolo 5 - Alberi Alberto Montresor Università di Trento This work is licensed under the Creative Commons](https://reader035.vdocuments.mx/reader035/viewer/2022062701/5542eb58497959361e8c2ce7/html5/thumbnails/12.jpg)
12
© Alberto Montresor
Realizzazione con vettore dei figliRealizzazione con vettore dei figli
/ /
/
/ / / /
/
Nodo
Padre
Array di Figli
/
/ /
/ ///////// / /
// / /
// / /
// / / // / /
/ / /
Rischio di sprecare memoria se molti nodi hanno grado minore del grado massimo k.
![Page 13: 1 © Alberto Montresor Algoritmi e Strutture Dati Capitolo 5 - Alberi Alberto Montresor Università di Trento This work is licensed under the Creative Commons](https://reader035.vdocuments.mx/reader035/viewer/2022062701/5542eb58497959361e8c2ce7/html5/thumbnails/13.jpg)
13
© Alberto Montresor
Realizzazione con puntatori padre/primo-figlio/fratelloRealizzazione con puntatori padre/primo-figlio/fratello
/ /
/
/ /
/
/ / / /
/ / / /
//
NodoPrimoFiglio
Padre
Fratello
Soluzione: usare una lista di figli (fratelli).
![Page 14: 1 © Alberto Montresor Algoritmi e Strutture Dati Capitolo 5 - Alberi Alberto Montresor Università di Trento This work is licensed under the Creative Commons](https://reader035.vdocuments.mx/reader035/viewer/2022062701/5542eb58497959361e8c2ce7/html5/thumbnails/14.jpg)
14
© Alberto Montresor
Realizzazione con puntatori padre/primo-figlio/fratello
![Page 15: 1 © Alberto Montresor Algoritmi e Strutture Dati Capitolo 5 - Alberi Alberto Montresor Università di Trento This work is licensed under the Creative Commons](https://reader035.vdocuments.mx/reader035/viewer/2022062701/5542eb58497959361e8c2ce7/html5/thumbnails/15.jpg)
15
© Alberto Montresor
Realizzazione con puntatori padre/primo-figlio/fratello
![Page 16: 1 © Alberto Montresor Algoritmi e Strutture Dati Capitolo 5 - Alberi Alberto Montresor Università di Trento This work is licensed under the Creative Commons](https://reader035.vdocuments.mx/reader035/viewer/2022062701/5542eb58497959361e8c2ce7/html5/thumbnails/16.jpg)
16
© Alberto Montresor
Realizzazione con vettore dei padriRealizzazione con vettore dei padri
a
b e
c d f g
T
✦L'albero è rappresentato da un vettore i cui elementi contengono l'indice del padre
✦Esempio: 0 a
1 b
1 e
2 c
2 d
3 f
3 g
![Page 17: 1 © Alberto Montresor Algoritmi e Strutture Dati Capitolo 5 - Alberi Alberto Montresor Università di Trento This work is licensed under the Creative Commons](https://reader035.vdocuments.mx/reader035/viewer/2022062701/5542eb58497959361e8c2ce7/html5/thumbnails/17.jpg)
17
© Alberto Montresor
Realizzazione con vettore dei padri
![Page 18: 1 © Alberto Montresor Algoritmi e Strutture Dati Capitolo 5 - Alberi Alberto Montresor Università di Trento This work is licensed under the Creative Commons](https://reader035.vdocuments.mx/reader035/viewer/2022062701/5542eb58497959361e8c2ce7/html5/thumbnails/18.jpg)
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
![Page 19: 1 © Alberto Montresor Algoritmi e Strutture Dati Capitolo 5 - Alberi Alberto Montresor Università di Trento This work is licensed under the Creative Commons](https://reader035.vdocuments.mx/reader035/viewer/2022062701/5542eb58497959361e8c2ce7/html5/thumbnails/19.jpg)
19
© Alberto Montresor
Alberi binari Alberi binari
j k
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()
![Page 20: 1 © Alberto Montresor Algoritmi e Strutture Dati Capitolo 5 - Alberi Alberto Montresor Università di Trento This work is licensed under the Creative Commons](https://reader035.vdocuments.mx/reader035/viewer/2022062701/5542eb58497959361e8c2ce7/html5/thumbnails/20.jpg)
20
© Alberto Montresor
Alberi binari: specifica
![Page 21: 1 © Alberto Montresor Algoritmi e Strutture Dati Capitolo 5 - Alberi Alberto Montresor Università di Trento This work is licensed under the Creative Commons](https://reader035.vdocuments.mx/reader035/viewer/2022062701/5542eb58497959361e8c2ce7/html5/thumbnails/21.jpg)
21
© Alberto Montresor
Alberi binari: realizzazioneAlberi binari: realizzazione
/ / / / /
/ /
/
/ /
NodoFiglio
Sinistro
Padre
FiglioDestro
![Page 22: 1 © Alberto Montresor Algoritmi e Strutture Dati Capitolo 5 - Alberi Alberto Montresor Università di Trento This work is licensed under the Creative Commons](https://reader035.vdocuments.mx/reader035/viewer/2022062701/5542eb58497959361e8c2ce7/html5/thumbnails/22.jpg)
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.
![Page 23: 1 © Alberto Montresor Algoritmi e Strutture Dati Capitolo 5 - Alberi Alberto Montresor Università di Trento This work is licensed under the Creative Commons](https://reader035.vdocuments.mx/reader035/viewer/2022062701/5542eb58497959361e8c2ce7/html5/thumbnails/23.jpg)
23
© Alberto Montresor
Alberi binari: visite in profondità
![Page 24: 1 © Alberto Montresor Algoritmi e Strutture Dati Capitolo 5 - Alberi Alberto Montresor Università di Trento This work is licensed under the Creative Commons](https://reader035.vdocuments.mx/reader035/viewer/2022062701/5542eb58497959361e8c2ce7/html5/thumbnails/24.jpg)
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:log2 n!
✦Da cui deriva che qualunquealgoritmo di ordinamentorichiede Ω(n log n) confronti
![Page 25: 1 © Alberto Montresor Algoritmi e Strutture Dati Capitolo 5 - Alberi Alberto Montresor Università di Trento This work is licensed under the Creative Commons](https://reader035.vdocuments.mx/reader035/viewer/2022062701/5542eb58497959361e8c2ce7/html5/thumbnails/25.jpg)
25
© Alberto Montresor
Semplici esercizi basati su visite
✦Es. 5.1 - 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
www.xkcd.com