La presentazione è in caricamento. Aspetta per favore

La presentazione è in caricamento. Aspetta per favore

Fondamenti di Informatica

Presentazioni simili


Presentazione sul tema: "Fondamenti di Informatica"— Transcript della presentazione:

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


Scaricare ppt "Fondamenti di Informatica"

Presentazioni simili


Annunci Google