Alberi CORDA – Informatica A. Ferrari Testi da

Slides:



Advertisements
Presentazioni simili
Algoritmi e Strutture Dati
Advertisements

Alberi binari Definizione Sottoalberi Padre, figli
Estendere i linguaggi: i tipi di dato astratti
Lez. 91 Universita' di Ferrara Facolta' di Scienze Matematiche, Fisiche e Naturali Laurea Specialistica in Informatica Algoritmi Avanzati Alberi di ricerca.
RB-alberi (Red-Black trees)
Alberi binari di ricerca
Code con priorità Ordinamento
Capitolo 3 Strutture dati elementari Algoritmi e Strutture Dati Camil Demetrescu, Irene Finocchi, Giuseppe F. Italiano.
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.
Fondamenti di Informatica II Ingegneria Informatica / Automatica (A-I) Meccanica Prof. M.T. PAZIENZA a.a – 3° ciclo.
Fondamenti di Informatica 2 Ingegneria Informatica Docente: Giovanni Macchia a.a
Esercizi su alberi binari
Alberi binari Definizione della struttura dati: struct tree { };
Algoritmi Paralleli e Distribuiti a.a. 2008/09 Lezione del 22/05/2009 Prof. ssa ROSSELLA PETRESCHI a cura del Dott. SAVERIO CAMINITI.
Algoritmi Paralleli e Distribuiti a.a. 2008/09 Lezione del 19/05/2009 Prof. ssa ROSSELLA PETRESCHI a cura del Dott. SAVERIO CAMINITI.
Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Copyright © The McGraw - Hill Companies, srl Capitolo 6 Interrogazioni.
Il problema del dizionario
Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Copyright © The McGraw - Hill Companies, srl Capitolo 8 Code con.
Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Copyright © The McGraw - Hill Companies, srl Capitolo 6 Il problema.
Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Copyright © The McGraw - Hill Companies, srl Capitolo 6 Il problema.
Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Copyright © The McGraw - Hill Companies, srl Alberi AVL (Adelson-Velskii.
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 Alberi AVL (Adelson-Velskii.
Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Copyright © The McGraw - Hill Companies, srl Capitolo 6 Rotazioni.
Algoritmi e Strutture Dati Alberi Binari di Ricerca.
Algoritmi e Strutture Dati (Mod. A)
Algoritmi e Strutture Dati
Algoritmi e strutture dati
Algoritmi e Strutture Dati 20 aprile 2001
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.
Esercizi su alberi binari
Fondamenti di Informatica
Fibonacci Heaps e il loro utilizzo nell’algoritmo di Prim
Vediamo cos’è di preciso l’Heap (in italiano Pila) di Fibonacci.
Ispezione lineare La funzione hash h(k,i) si ottiene da una funzione hash ordinaria h'(k) ponendo L’esplorazione inizia dalla cella h(k,0) = h'(k) e continua.
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.
Capitolo 3 Strutture dati elementari Algoritmi e Strutture Dati Camil Demetrescu, Irene Finocchi, Giuseppe F. Italiano.
Algoritmi Paralleli e Distribuiti a.a. 2008/09 Lezione del 08/05/2009 Prof. ssa ROSSELLA PETRESCHI a cura del Dott. SAVERIO CAMINITI.
Esercizi su alberi binari di ricerca
Alberi binari Definizione della struttura dati: struct tree { };
Corso di Informatica 2 a.a. 2003/04 Lezione 6
ALGORITMI a.
Corso di Algoritmi e Strutture Dati con Laboratorio A.A. 2014/15 Alberi bilanciati (rif. Algoritmi in Java, di R. Sedgewick)
Array (ordinamento) CORDA – Informatica A. Ferrari.
Ordinamento e Operazioni su Strutture Dati Fabio Massimo Zanzotto.
alberi completamente sbilanciati
AlgoLab - Code unificabili Code unificabili con alberi binomiali Laboratorio di Algoritmi 02/03 Prof. Ugo de’ Liguoro.
Algoritmi per liste CORDA – Informatica A. Ferrari Testi da Marco Bernardo Edoardo Bontà Dispense del Corso di Algoritmi e Strutture Dati.
Algoritmi e Strutture Dati
Heap concetti ed applicazioni. maggio 2002ASD - Heap2 heap heap = catasta condizione di heap 1.albero binario perfettamente bilanciato 2.tutte le foglie.
Capitolo 6 Alberi di ricerca Algoritmi e Strutture Dati.
Alberi Alberi radicati : alberi liberi in cui un vertice è stato scelto come radice. Alberi liberi : grafi non orientati connessi e senza cicli. Alberi.
Capitolo 9 Il problema della gestione di insiemi disgiunti (Union-find) Algoritmi e Strutture Dati.
Algoritmi e Strutture Dati Strutture Dati Elementari.
MODULO STRUTTURE DATI FONDAMENTALI: Strutture dinamiche
Grammatiche Grammatiche libere da contesto Grammatiche regolari
Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Copyright © The McGraw - Hill Companies, srl 1 Soluzione esercizio.
Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Copyright © The McGraw - Hill Companies, srl 1 Soluzione esercizio.
Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Copyright © The McGraw - Hill Companies, srl Capitolo 6 Il problema.
Capitolo 6 Il problema del dizionario Algoritmi e Strutture Dati.
Università degli Studi di Cagliari FACOLTA’ DI INGEGNERIA
Capitolo 6 Alberi di ricerca Algoritmi e Strutture Dati Camil Demetrescu, Irene Finocchi, Giuseppe F. Italiano.
Parsing ricorsivo discendente Il parsing ricorsivo discendente (recursive descent parsing) è un metodo di tipo top-down che può essere facilmente codificato.
Prof.ssa Rossella Petreschi Lezione del 17 /10/2014 del Corso di Algoritmica Lezione n°5.
Prof.ssa Rossella Petreschi Lezione del 15 /10/2012 del Corso di Algoritmica B-alberi Lezione n°5.
Transcript della presentazione:

Alberi CORDA – Informatica A. Ferrari Testi da Marco Bernardo Edoardo Bontà Dispense del Corso di Algoritmi e Strutture Dati

Albero - definizione

Albero

Figli, fratelli, nodi, foglie

Grado, livello, altezza, larghezza

Albero binario

Trasformazione da albero ad albero binario

Rappresentazione

Esercizio Definire una struttura dati che permetta di rappresentare un albero binario Per semplicità l’informazione associata ad ogni nodo si considera che sia un numero intero

Algoritmi di visita La visita consiste nell’accesso una e una sola volta a tutti i nodi dell’albero. Per gli alberi binari sono possibili più algoritmi di visita che generano sequenze diverse (per ordine) di nodi visita in ordine anticipato visita in ordine simmetrico visita in ordine posticipato (differito)

Visita in ordine anticipato Visita la radice Visita il sottoalbero sinistro in ordine anticipato Visita il sottoalbero destro in ordine anticipato Lista dei nodi:

Visita in ordine simmetrico Visita il sottoalbero sinistro in ordine simmetrico Visita la radice Visita il sottoalbero destro in ordine simmetrico Lista dei nodi:

Visita in ordine posticipato Visita il sottoalbero sinistro in ordine posticipato Visita il sottoalbero destro in ordine posticipato Visita la radice Lista dei nodi:

Alberi ed espressioni Ogni nodo che contiene un operatore è radice di un sottoalbero Ogni foglia contiene un valore costante o una variabile

Esercizio Definire la sequenza di nodi che si ottiene visitando l’albero in ordine Anticipato Simmetrico Differito

alberi – espressioni – algoritmi di visita - matematica – informatica ??? Jan Łukasiewicz http://it.wikipedia.org/wiki/Jan_%C5%81ukasiewicz Notazione polacca http://it.wikipedia.org/wiki/Notazione_polacca

Algoritmi di ricerca Con opportune modifiche si può adattare un qualunque algoritmo di visita per ottenere un algoritmo di ricerca Nel caso pessimo la ricerca attraverserà tutti nodi dell’albero quindi avrà complessità O(n)

Alberi binari di ricerca Un albero binario di ricerca è un albero binario tale che: per ogni nodo che contiene una chiave di valore k ogni nodo del suo sottoalbero sinistro contiene una chiave di valore ≤ k ogni nodo del suo sottoalbero destro contiene una chiave di valore ≥ k

Ricerca in alberi binari di ricerca Non è necessario visitare tutti i nodi Basta fare un unico percorso tra quelli che partono dalla radice, scendendo ad ogni nodo incontrato che non contiene il valore dato a sinistra o a destra a seconda che il valore dato sia minore o maggiore, rispettivamente, della chiave contenuta nel nodo La complessità della ricerca dipende quindi dalla profondità dell’albero

Esercizio Implementare (in Java) la struttura dati che permetta di implementare un albero binario di ricerca Implementare gli algoritmi di inserimento visita in ordine anticipato, simmetrico, differito ricerca (dato il valore dell’informazione restituire il Nodo) eliminazione di un nodo (vedi suggerimenti)

Eliminazione di un nodo L’algoritmo di rimozione di un valore da un albero binario di ricerca deve garantire che l’albero binario ottenuto a seguito della rimozione sia ancora di ricerca. Se il nodo contenente il valore da rimuovere è una foglia, basta eliminarlo. Se il nodo contenente il valore da rimuovere ha un solo figlio, basta eliminarlo collegando suo padre direttamente a suo figlio. Se il nodo contenente il valore da rimuovere ha ambedue i figli, si procede sostituendone il valore con quello del nodo più a destra del suo sottoalbero sinistro, in quanto tale nodo contiene la massima chiave minore di quella del nodo da rimuovere (in alternativa, si può prendere il nodo più a sinistra del sottoalbero destro)

B-Albero (B-Tree) Struttura dati che permette la rapida localizzazione dei file (Records o keys) Deriva dagli alberi di ricerca, in quanto ogni chiave appartenente al sottoalbero sinistro di un nodo è di valore inferiore rispetto a ogni chiave appartenente ai sottoalberi alla sua destra E’ garantito il bilanciamento: per ogni nodo, le altezze dei sottoalberi destro e sinistro differiscono al più di una unità Utilizzati spesso nell'ambito dei database, in quanto permettono di accedere ai nodi in maniera efficiente sia nel caso essi siano disponibili in memoria centrale o in memoria di massa

B-Tree