Algoritmi e Strutture Dati

Slides:



Advertisements
Presentazioni simili
Algoritmi e Strutture Dati
Advertisements

Strutture dati per insiemi disgiunti
Ordinamento ottimo Ricerca
Algoritmi e Strutture Dati
Alberi binari Definizione Sottoalberi Padre, figli
Estendere i linguaggi: i tipi di dato astratti
Breath-first search Visita in ampiezza di un grafo Algoritmo Esempio
Alberi binari di ricerca
Breath-first search Visita in ampiezza di un grafo Algoritmo Esempio
Capitolo 3 Strutture dati elementari Algoritmi e Strutture Dati Camil Demetrescu, Irene Finocchi, Giuseppe F. Italiano.
Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Copyright © The McGraw - Hill Companies, srl 1 Stesso approccio.
Capitolo 3 Strutture dati elementari Algoritmi e Strutture Dati.
Algoritmi e Strutture Dati
Algoritmi e Strutture Dati
Capitolo 3 Strutture dati elementari Algoritmi e Strutture Dati.
Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Copyright © The McGraw - Hill Companies, srl 1 Strutture dati per.
Fondamenti di Informatica 2 Ingegneria Informatica Docente: Giovanni Macchia a.a
Esercizi su alberi binari
Alberi binari Definizione della struttura dati: struct tree { };
Algoritmi e strutture Dati - Lezione 7
Il problema del dizionario
Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Capitolo 4 Ordinamento: Heapsort Algoritmi e Strutture Dati.
Algoritmi e Strutture Dati
Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Copyright © The McGraw - Hill Companies, srl Capitolo 6 Il problema.
Algoritmi e Strutture Dati
Visite di grafi Algoritmi e Strutture Dati. Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Copyright © The McGraw.
Capitolo 4 Ordinamento Algoritmi e Strutture Dati.
Capitolo 9 Il problema della gestione di insiemi disgiunti (Union-find) Algoritmi e Strutture Dati.
Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Copyright © The McGraw - Hill Companies, srl Capitolo 6 Il problema.
Interrogazioni su un albero binario di ricerca Search(S,k) – dato un insieme S ed un valore chiave k restituisce un puntatore x ad un elemento in S tale.
Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Copyright © The McGraw - Hill Companies, srl 1 Un albero è un grafo.
tipo astratto, implementazione, algoritmi
Albero: insieme di punti chiamati NODI e linee chiamate EDGES
Algoritmi e Strutture Dati
Algoritmi e Strutture Dati
Algoritmi e Strutture Dati
Algoritmi e Strutture Dati
Algoritmi e Strutture Dati
1 © Alberto Montresor Algoritmi e Strutture Dati Capitolo 7 - Tabelle hash Alberto Montresor Università di Trento This work is licensed under the Creative.
Algoritmi e Strutture Dati
Algoritmi e Strutture Dati
Algoritmi e Strutture Dati
Algoritmi e Strutture Dati
Algoritmi e Strutture Dati
Algoritmi e Strutture Dati
Algoritmi e Strutture Dati
Algoritmi e Strutture Dati
Algoritmi e Strutture Dati
Modello dati ALBERO Albero: Albero: insieme di punti chiamati NODI e linee chiamate EDGES EDGE: linea che unisce due nodi distinti Radice (root): in una.
Modello dati ALBERO Albero: Albero: insieme di punti chiamati NODI e linee chiamate EDGES EDGE: linea che unisce due nodi distinti Radice (root): in una.
Fondamenti di Informatica
RICERCA DI MERCATO PER NON ADDETTI
RB-insert(T, z) // z.left = z.right = T.nil Insert(T, z) z.color = RED // z è rosso. Lunica violazione // possibile delle proprietà degli alberi // rosso-neri.
Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Copyright © The McGraw - Hill Companies, srl 1 K 4 è planare? Sì!
Capitolo 3 Strutture dati elementari Algoritmi e Strutture Dati Camil Demetrescu, Irene Finocchi, Giuseppe F. Italiano.
Riconfigurare il diritto dautore. Lipertesto, una necessità di riconfigurazione. Secondo G. P. Landow, lavvento dellipertesto implica la necessità di.
Lanalisi di settore a cura di Bonucchi & Associati srl Questo documento è di supporto a una presentazione verbale. I contenuti potrebbero non essere correttamente.
Grafi Rappresentazione mediante liste di adiacenza:
Corso di Informatica 2 a.a. 2003/04 Lezione 6
Alberi CORDA – Informatica A. Ferrari Testi da
Esempi di posizionamento prodotti
alberi completamente sbilanciati
Algoritmi e Strutture Dati
Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Copyright © The McGraw - Hill Companies, srl 1 Strutture dati per.
Alberi Alberi radicati : alberi liberi in cui un vertice è stato scelto come radice. Alberi liberi : grafi non orientati connessi e senza cicli. Alberi.
MODULO STRUTTURE DATI FONDAMENTALI: Strutture dinamiche
Capitolo 8 Code con priorità Algoritmi e Strutture Dati Camil Demetrescu, Irene Finocchi, Giuseppe F. Italiano.
Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Copyright © The McGraw - Hill Companies, srl 1 Soluzione esercizio.
Capitolo 11 Visite di grafi Algoritmi e Strutture Dati.
Capitolo 11 Grafi e visite di grafi Algoritmi e Strutture Dati Camil Demetrescu, Irene Finocchi, Giuseppe F. Italiano.
Transcript della presentazione:

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 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. © Alberto Montresor

Albero: definizione informale 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) T es.: radice T con n sottoalberi T1 T2 Tn © Alberto Montresor

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

Livello: l'insieme dei nodi alla stessa profondità 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 p=1 p=2 p=3 Livello 3 Altezza albero: 3 © Alberto Montresor

Alberi? DAG Radice Foresta © Alberto Montresor

Alberi: una possibile specifica © 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 © Alberto Montresor

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

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

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

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

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

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

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

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

Realizzazione con vettore dei padri L'albero è rappresentato da un vettore i cui elementi contengono l'indice del padre Esempio: 0 a T 1 b 1 e a 2 c b e 2 d c d f g 3 f 3 g © Alberto Montresor

Realizzazione con vettore dei padri © 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 © Alberto Montresor

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

Alberi binari: specifica © Alberto Montresor

Alberi binari: realizzazione / / / / / / / / / / Padre Figlio Sinistro Figlio Destro Nodo © 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. © Alberto Montresor

Alberi binari: visite in profondità © 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 qualunque algoritmo di ordinamento richiede Ω(n log n) confronti © 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 © Alberto Montresor