Download - Gli alberi
![Page 1: Gli alberi](https://reader035.vdocuments.site/reader035/viewer/2022081503/56814881550346895db5903a/html5/thumbnails/1.jpg)
Fondamenti di Informatica 1
Gli alberi
• E' un tipo di dato astratto che rappresenta relazioni gerarchiche tra oggetti
• Le relazioni esplicate sono tra:– genitori– figli– fratelli
• Radice, foglie• Alberi binari, N-ari
![Page 2: Gli alberi](https://reader035.vdocuments.site/reader035/viewer/2022081503/56814881550346895db5903a/html5/thumbnails/2.jpg)
Fondamenti di Informatica 2
Gli alberi binari
• Ogni nodo ha al massimo 2 figli • Sui figli è definito un ordinamento• Ogni figlio può essere la radice di
un nuovo albero binario• Vantaggio: migliorare l'efficenza
della visita di una lista
![Page 3: Gli alberi](https://reader035.vdocuments.site/reader035/viewer/2022081503/56814881550346895db5903a/html5/thumbnails/3.jpg)
Fondamenti di Informatica 3
Gli alberi binari
• Metodi:– test_albero_vuoto: alb_bin boolean– costruisci:alb_bin x nodo x alb_bin
alb_bin– radice: alb_bin nodo– sinistro: alb_bin alb_bin– destro: alb_bin alb_bin
![Page 4: Gli alberi](https://reader035.vdocuments.site/reader035/viewer/2022081503/56814881550346895db5903a/html5/thumbnails/4.jpg)
Fondamenti di Informatica 4
Gli alberi binari
• Algoritmi di visita:– visita in preordine
(ABCD)– visita in postordine
(BDECA)– visita simmetrica
(BADCE)
A
B C
D E
![Page 5: Gli alberi](https://reader035.vdocuments.site/reader035/viewer/2022081503/56814881550346895db5903a/html5/thumbnails/5.jpg)
Fondamenti di Informatica 5
Alberi binari: rappr. sequenziale
• Utilizza array di lunghezza predefinita– radice in prima posizione– figli in posizione (2i) e (2i+1)
• Alberi completi• Per gli alberi non completi serve un
tag booleano che indica se il nodo esiste
![Page 6: Gli alberi](https://reader035.vdocuments.site/reader035/viewer/2022081503/56814881550346895db5903a/html5/thumbnails/6.jpg)
Fondamenti di Informatica 6
A
B C
D E
A trueB trueC true0 false0 falseD true
123456
E true7
Alberi binari: rappr. sequenziale
![Page 7: Gli alberi](https://reader035.vdocuments.site/reader035/viewer/2022081503/56814881550346895db5903a/html5/thumbnails/7.jpg)
Fondamenti di Informatica 7
• Svantaggi:– utilizzo elevato memoria– operazioni in inserimento complesse
(richiedono spostamenti nell'array)
• Vantaggi:– accesso semplice (anche per elementi
ad una specifica profondità)
Alberi binari: rappr. sequenziale
![Page 8: Gli alberi](https://reader035.vdocuments.site/reader035/viewer/2022081503/56814881550346895db5903a/html5/thumbnails/8.jpg)
Fondamenti di Informatica 8
Alberi binari:rappresentazione collegata
• Ogni elemento della lista contiene:– un atomo (la radice dell'albero)– una lista (sottoalbero sinistro)– una lista (sottoalbero destro)
( A (B () () ) ( C (D () () ) (E () () ) ) )
![Page 9: Gli alberi](https://reader035.vdocuments.site/reader035/viewer/2022081503/56814881550346895db5903a/html5/thumbnails/9.jpg)
Fondamenti di Informatica 9
Alberi binari:rappr. collegata mediante
array• Array a tre valori:
– indice sottoalbero sinistro– valore del nodo– indice sottoalbero destro
• Serve una variabile inizio per definire l'indice della radice all'interno dell'array
![Page 10: Gli alberi](https://reader035.vdocuments.site/reader035/viewer/2022081503/56814881550346895db5903a/html5/thumbnails/10.jpg)
Fondamenti di Informatica 10
0 D 05 A 31 C 60 0 00 B 00 E 0
123456
Inizio = 2
Alberi binari:rappr. collegata mediante
array
A
B C
D E
![Page 11: Gli alberi](https://reader035.vdocuments.site/reader035/viewer/2022081503/56814881550346895db5903a/html5/thumbnails/11.jpg)
Fondamenti di Informatica 11
Alberi binari: rappr.collegata mediante
puntatori• Ogni nodo viene rappresentato con
tre campi:– l'informazione associata al nodo– un puntatore al sottoalbero di sinistra– un puntatore al sottoalbero di destra
![Page 12: Gli alberi](https://reader035.vdocuments.site/reader035/viewer/2022081503/56814881550346895db5903a/html5/thumbnails/12.jpg)
Fondamenti di Informatica 12
Alberi binari: rappr. collegata mediante
puntatori
A
B C
D E
A
0 B 0
C
0 E 00 D 0
![Page 13: Gli alberi](https://reader035.vdocuments.site/reader035/viewer/2022081503/56814881550346895db5903a/html5/thumbnails/13.jpg)
Fondamenti di Informatica 13
Esercizio
• Data in ingresso una rappresentazione parentetica di un albero, generare l'albero corrispondente utilizzando la rappresentazione collegata sia mediante array che mediante puntatori
![Page 14: Gli alberi](https://reader035.vdocuments.site/reader035/viewer/2022081503/56814881550346895db5903a/html5/thumbnails/14.jpg)
Fondamenti di Informatica 14
Alberi binari di ricerca
• Problema:– memorizzare grosse quantità di dati
soggetti a frequenti operazioni di ricerca
• Soluzione:– utilizzo di alberi di ricerca in cui il valore
di un nodo è per definizione maggiore o uguale di quello dei nodi del sottoalbero sx, e minore del sottoalbero dx
![Page 15: Gli alberi](https://reader035.vdocuments.site/reader035/viewer/2022081503/56814881550346895db5903a/html5/thumbnails/15.jpg)
Fondamenti di Informatica 15
Alberi binari di ricerca
• Vantaggi:– minor complessità
• Requisiti:– profondità ridotta dell'albero– alberi bilanciati– bilanciamento dell'albero
![Page 16: Gli alberi](https://reader035.vdocuments.site/reader035/viewer/2022081503/56814881550346895db5903a/html5/thumbnails/16.jpg)
Fondamenti di Informatica 16
Alberi n-ari
• Non hanno limiti sul numero di figli• Generalmente:
– visita solo preordine e postordine– rappresentazione mediante lista– rappresentazione mediante albero
binario (miglior sfruttamento della memoria)
– rappresentazioni tramate(per ottimizzare certe operazioni)
![Page 17: Gli alberi](https://reader035.vdocuments.site/reader035/viewer/2022081503/56814881550346895db5903a/html5/thumbnails/17.jpg)
Fondamenti di Informatica 17
I grafi
• Strutture che rappresentano relazioni binarie su un insieme di elementi (grafi orientati)
• E' necessario definire politiche di visita (in presenza di cicli è possibile raggiungere nodi già visitati; serve un tag di visita)
![Page 18: Gli alberi](https://reader035.vdocuments.site/reader035/viewer/2022081503/56814881550346895db5903a/html5/thumbnails/18.jpg)
Fondamenti di Informatica 18
Visita in profondità di un grafo
1 3 4 7
56
2
1 3 4 6 5 7 2
Depth first serach: analoga alla visita in preordine
![Page 19: Gli alberi](https://reader035.vdocuments.site/reader035/viewer/2022081503/56814881550346895db5903a/html5/thumbnails/19.jpg)
Fondamenti di Informatica 19
Visita in ampiezza di un grafo
1 3 4 7
56
2
7 5 6 4 2 3 1
Breadth first serach: analoga alla visita in postordine
![Page 20: Gli alberi](https://reader035.vdocuments.site/reader035/viewer/2022081503/56814881550346895db5903a/html5/thumbnails/20.jpg)
Fondamenti di Informatica 20
Rappresentazione dei grafi
• Per rappresentare un grafo esistono diverse possibilità:– matrice delle adiacenze– liste dei successori– lista doppia
![Page 21: Gli alberi](https://reader035.vdocuments.site/reader035/viewer/2022081503/56814881550346895db5903a/html5/thumbnails/21.jpg)
Fondamenti di Informatica 21
Matrice delle adiacenze
• La matrice è così definita:– tante righe e colonne quanti sono i
nodi del grafo– gli elementi della matrice sono di tipo
booleano
– il generico elemento ei,j è definito:
• true, se esiste un arco tra il nodo i e il nodo j
• false, altrimenti
![Page 22: Gli alberi](https://reader035.vdocuments.site/reader035/viewer/2022081503/56814881550346895db5903a/html5/thumbnails/22.jpg)
Fondamenti di Informatica 22
Matrice delle adiacenze
1 2 3 4 5 6 7
1 0 0 1 0 0 0 02 1 0 1 0 0 0 03 0 1 0 1 0 0 0 4 0 0 0 0 0 1 15 0 0 0 0 0 0 0 6 0 0 1 1 1 0 07 1 0 0 0 0 0 0
1 3 4 7
56
2
![Page 23: Gli alberi](https://reader035.vdocuments.site/reader035/viewer/2022081503/56814881550346895db5903a/html5/thumbnails/23.jpg)
Fondamenti di Informatica 23
Matrice delle adiacenze
• Se i valori dei nodi non sono numerici, serve una corrispondenza tra nodi (ad es. stringhe) con gli indici
• "Vettore dei nodi"
A S R V K P E 1 2 3 4 5 6 7
A E V K
PR
S
![Page 24: Gli alberi](https://reader035.vdocuments.site/reader035/viewer/2022081503/56814881550346895db5903a/html5/thumbnails/24.jpg)
Fondamenti di Informatica 24
Matrice delle adiacenze
• Se anche gli archi sono etichettati, gli elementi della matrice non saranno booleani, ma del tipo usato per le etichette
![Page 25: Gli alberi](https://reader035.vdocuments.site/reader035/viewer/2022081503/56814881550346895db5903a/html5/thumbnails/25.jpg)
Fondamenti di Informatica 25
Matrice delle adiacenze
• Vantaggi:– semplice– accesso diretto alle informazioni sugli
archi (meccanismi di accesso ad una matrice)
• Svantaggi:– numero massimo di nodi del grafo
– occupazione in memoria pari a N2
– l'analisi di un nodo richiede una scansione
![Page 26: Gli alberi](https://reader035.vdocuments.site/reader035/viewer/2022081503/56814881550346895db5903a/html5/thumbnails/26.jpg)
Fondamenti di Informatica 26
Matrice delle adiacenze:rappresentazione
compatta• Generalmente la matrice delle
adiacenze è sparsa, quindi si può usare:– la rappresentazione compatta usata per le
matrici sparse – una nuova rappresentazione che evidenzia
solo gli archi
nodo di part: 1 2 2 3 3 4 4 6 6 6 7nodo di arr: 3 1 3 2 4 6 7 3 4 5 1
![Page 27: Gli alberi](https://reader035.vdocuments.site/reader035/viewer/2022081503/56814881550346895db5903a/html5/thumbnails/27.jpg)
Fondamenti di Informatica 27
Liste di successori
• Si associa ad ogni nodo una lista semplice, realizzata mediante rappresentazione collegata
• In ogni lista si memorizza l'insieme dei successori del nodo senza un ordinamento particolare
• I nodi sono in corrispondenza con gli archi per cui si possono memorizzare anche evenuali etichette
![Page 28: Gli alberi](https://reader035.vdocuments.site/reader035/viewer/2022081503/56814881550346895db5903a/html5/thumbnails/28.jpg)
Fondamenti di Informatica 28
Liste di successori
1 3 4 7
56
2
3 0
1
2
6
0
3
1 0
3 0
4 0
7 0
4 5 0
1
2
3
4
5
6
7
![Page 29: Gli alberi](https://reader035.vdocuments.site/reader035/viewer/2022081503/56814881550346895db5903a/html5/thumbnails/29.jpg)
Fondamenti di Informatica 29
Liste di successori
• Vantaggi:– migliore occupazione della memoria:
proporzionale a N+M– più efficiente determinare la lista dei
successori
• Svantaggi:– verifica di un arco tra i e j è poco
agevole– l'utilizzo di un vettore per le info sui nodi
![Page 30: Gli alberi](https://reader035.vdocuments.site/reader035/viewer/2022081503/56814881550346895db5903a/html5/thumbnails/30.jpg)
Fondamenti di Informatica 30
Liste doppie
• Si utilizza una lista per memorizzare le informazioni dei nodi
• Vantaggi:– il numero di nodi non ha un limite
massimo
• Svantaggi:– l'accesso ai nodi è più complesso
![Page 31: Gli alberi](https://reader035.vdocuments.site/reader035/viewer/2022081503/56814881550346895db5903a/html5/thumbnails/31.jpg)
Fondamenti di Informatica 31
Percorso minimo in un grafo
• Problema:– dato un grafo con archi etichettati con
valore interi positivi, si trovi il percorso più breve tra due nodi
• Soluzione:– proposta da Dijkstra