Scaricare la presentazione
La presentazione è in caricamento. Aspetta per favore
1
Fondamenti di Informatica
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 Fondamenti di Informatica
2
Fondamenti di Informatica
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 Fondamenti di Informatica
3
Fondamenti di Informatica
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 Fondamenti di Informatica
4
Fondamenti di Informatica
Gli alberi binari Algoritmi di visita: visita in preordine (ABCD) visita in postordine (BDECA) visita simmetrica (BADCE) A B C D E 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 Fondamenti di Informatica
6
Alberi binari: rappr. sequenziale
1 A true 2 B true A 3 C true 4 false B C 5 false 6 D true D E 7 E true Fondamenti di Informatica
7
Alberi binari: rappr. sequenziale
Svantaggi: utilizzo elevato memoria operazioni in inserimento complesse (richiedono spostamenti nell'array) Vantaggi: accesso semplice (anche per elementi ad una specifica profondità) 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 () () ) ) ) 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 Fondamenti di Informatica
10
Alberi binari: rappr. collegata mediante array
1 D A 2 5 A 3 3 1 C 6 B C 4 5 B 6 E D E Inizio = 2 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 Fondamenti di Informatica
12
Alberi binari: rappr. collegata mediante puntatori
B B C C D E D E Fondamenti di Informatica
13
Fondamenti di Informatica
Esercizio Data in ingresso una rappresentazione parentetica di un albero, generare l'albero corrispondente utilizzando la rappresentazione collegata sia mediante array che mediante puntatori 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 Fondamenti di Informatica
15
Alberi binari di ricerca
Vantaggi: minor complessità Requisiti: profondità ridotta dell'albero alberi bilanciati bilanciamento dell'albero Fondamenti di Informatica
16
Fondamenti di Informatica
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) Fondamenti di Informatica
17
Fondamenti di Informatica
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) Fondamenti di Informatica
18
Visita in profondità di un grafo
Depth first serach: analoga alla visita in preordine 2 1 3 4 7 6 5 Fondamenti di Informatica
19
Visita in ampiezza di un grafo
Breadth first serach: analoga alla visita in postordine 2 1 3 4 7 6 5 Fondamenti di Informatica
20
Rappresentazione dei grafi
Per rappresentare un grafo esistono diverse possibilità: matrice delle adiacenze liste dei successori lista doppia 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 Fondamenti di Informatica
22
Matrice delle adiacenze
1 3 4 7 5 6 2 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 A E V K P R S 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 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 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: nodo di arr: Fondamenti di Informatica
27
Fondamenti di Informatica
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 Fondamenti di Informatica
28
Fondamenti di Informatica
Liste di successori 1 3 0 2 1 3 0 1 3 4 7 5 6 2 3 2 4 0 4 6 7 0 5 6 3 4 5 0 7 1 0 Fondamenti di Informatica
29
Fondamenti di Informatica
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 Fondamenti di Informatica
30
Fondamenti di Informatica
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 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 Fondamenti di Informatica
Presentazioni simili
© 2024 SlidePlayer.it Inc.
All rights reserved.