Fondamenti di Informatica A - Massimo Bertozzi ALBERI E ALBERI BINARI DI RICERCA (BST)

Slides:



Advertisements
Presentazioni simili
Alberi binari di ricerca
Advertisements

Algoritmi e Strutture Dati
Algoritmi e Strutture Dati
Capitolo 6 Alberi di ricerca Algoritmi e Strutture Dati.
Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Copyright © The McGraw - Hill Companies, srl Capitolo 6 Interrogazioni.
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.
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.
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.
Capitolo 6 Alberi di ricerca Algoritmi e Strutture Dati.
Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Copyright © The McGraw - Hill Companies, srl Capitolo 6 Rotazioni.
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 Alberi di ricerca Algoritmi e Strutture Dati Camil Demetrescu, Irene Finocchi, Giuseppe F. Italiano.
Prof.ssa Rossella Petreschi Lezione del 29/10/2012 del Corso di Algoritmi e Strutture Dati Riferimenti: Capitolo 19 del testo Cormen, Leiserson, Rivest,
Prog21 Alberi binari (radicati e ordinati) Il figlio destro della radice La radice Il figlio sinistro della radice Il padre del nodo 5.
Huffman Canonico: approfondimento. Come abbiamo visto, Huffman canonico ci permette di ottenere una decompressione più veloce e con un uso più efficiente.
Alberi Bilanciati di Ricerca Moreno Marzolla Dip. di Scienze dell'Informazione Università di Bologna
Fondamenti di Informatica A - Massimo Bertozzi LE RAPPRESENTAZIONI CONCATENATE.
Alberi. Gli alberi sono una generalizzazione delle liste che consente di modellare delle strutture gerarchiche come questa: Largo Fosco Dora Drogo Dudo.
Algoritmi e Strutture dati a.a.2010/2011 Prof.ssa Rossella Petreschi
Esercitazioni di Prog. II (esercizi su alberi ennari)
Alberi autoaggiustanti
Alberi di ricerca di altezza logaritmica
Progettare algoritmi veloci usando strutture dati efficienti
Inserzione e Cancellazione
Progettare algoritmi veloci usando strutture dati efficienti
Dizionari alberi bilanciati.
Alberi di ricerca di altezza logaritmica
Lezione n°9 Prof.ssa Rossella Petreschi
Algoritmi Avanzati a.a.2014/2015 Prof.ssa Rossella Petreschi
Lezione n°7 Prof.ssa Rossella Petreschi
Alberi binari Definizione Sottoalberi Padre, figli
Algoritmi e Strutture Dati
Rappresentazione di alberi
Correzione 1° Esonero Lezione n°13
B-alberi e alberi autoaggiustanti
Algoritmi Avanzati a.a.2011/2012 Prof.ssa Rossella Petreschi
Algoritmi Avanzati Prof.ssa Rossella Petreschi
Algoritmi Avanzati a.a.2011/2012 Prof.ssa Rossella Petreschi
Algoritmi Avanzati Prof.ssa Rossella Petreschi
Lezione n°4 Prof.ssa Rossella Petreschi
Algoritmi Avanzati a.a.2010/2011 Prof.ssa Rossella Petreschi
Algoritmi e Strutture Dati
K4 è planare? E K3,3 e K5 sono planari? Sì!
Algoritmi e Strutture Dati
per rappresentare grafi
Algoritmi e Strutture Dati
Dizionari alberi bilanciati.
Lezione n°6 Prof.ssa Rossella Petreschi
Introduzione agli Algoritmi e alle Strutture Dati
Alberi n-ary Lezioni di C.
Algoritmi e Strutture Dati
Progettare algoritmi veloci usando strutture dati efficienti
APPUNTI SUL LINGUAGGIO C Implementazioni di Liste Concatenate
Algoritmi e Strutture Dati
Alberi di ricerca Lezione n°4
APPUNTI SUL LINGUAGGIO C Alberi Binari – primi esercizi
Esercizio Dato un albero binario, definiamo altezza minimale di un nodo v la minima distanza di v da una delle foglie del suo sottoalbero, definiamo invece.
Algoritmi e Strutture dati a.a.2010/2011 Prof.ssa Rossella Petreschi
Lezione n°7 Splay-Trees e Heaps Prof.ssa Rossella Petreschi
Verifica bilanciamento nel numero dei nodi: definizioni.
concetti ed applicazioni
Algoritmi e Strutture Dati
Algoritmi e Strutture dati a.a.2010/2011 Prof.ssa Rossella Petreschi
HeapSort Stesso approccio incrementale del selectionSort Tipo di dato
Transcript della presentazione:

Fondamenti di Informatica A - Massimo Bertozzi ALBERI E ALBERI BINARI DI RICERCA (BST)

Fondamenti di Informatica A - Massimo Bertozzi Definizione ✗ Si definisce albero una struttura dati costituita da un insieme finito di nodi tali che: ✗ Esiste un nodo speciale chiamato radice (root); ✗ I restanti nodi sono suddivisi in n insiemi disgiunti T 0, T 1,...,T n-1 ciascuno dei quali è un albero.

Fondamenti di Informatica A - Massimo Bertozzi Esempio

Fondamenti di Informatica A - Massimo Bertozzi Glossario ✗ Nodo ✗ Ramo ✗ Grado di un nodo ✗ Grado di un albero ✗ Foglia ✗ Padre ✗ Figlio ✗ Fratelli ✗ Livello ✗ Altezza o profondità

Fondamenti di Informatica A - Massimo Bertozzi Alberi binari ✗ Noi tratteremo solo alberi binari! ✗ Si definisce albero binario un insieme (anche vuoto) formato da un nodo radice e da due alberi binari disgiunti detti sottoalbero sinistro e sottoalbero destro ✗ Piú semplicemente un albero binario è un albero avente grado 2

Fondamenti di Informatica A - Massimo Bertozzi Numero massimo di nodi per livello ✗ In un albero binario il numero massimo dei nodi di livello i è pari a 2 i-1 con i>=1: ✗ Si dimostra per induzione su i. Infatti per la radice è immediato. Dato che ogni nodo può avere al massimo due figli per il livello i il numero massimo dei nodi è pari a 2 volte il numero massimo di nodi del livello i-1

Fondamenti di Informatica A - Massimo Bertozzi Numero massimo nodi per albero ✗ Il numero massimo di nodi di un albero di profondità k è 2 k - 1 con k>=1:

Fondamenti di Informatica A - Massimo Bertozzi Albero pieno ✗ Un albero di profondità k si dice pieno quando è formato da 2 k -1 nodi

Fondamenti di Informatica A - Massimo Bertozzi Albero binario: rappresentazione collegata ✗ In C/C++ è possibile rappresentare un albero binario mediante una rappresentazione collegata:  struct nodo{  miodato dato;  struct nodo *sinistra;  struct nodo *destra;  }  struct nodo *radice=NULL;

Fondamenti di Informatica A - Massimo Bertozzi Attraversamento di un albero ✗ Una delle operazioni piú comuni è la visita di tutti i nodi dell'albero. 4 possibilità: 1. Inorder (SVD); 2. Postorder (SDV); 3. Preorder (VSD); 4. Di livello (richiede l'utilizzo di una coda). ✗ Vedere nel codice di esempio anche le operazioni di copia e controllo equivalenza!

Fondamenti di Informatica A - Massimo Bertozzi Alberi binari di ricerca (BST) ✗ Un albero binario si definisce albero binario di ricerca se: ✗ Ogni nodo è caratterizzato da una chiave univoca; ✗ Per ogni nodo le chiavi dei nodi appartenenti al sottoalbero di destra sono piú grandi di quella del padre ✗ Per ogni nodo e chiavi dei nodi appartenenti al sottoalbero di sinistra sono piú piccole di quella del padre

Fondamenti di Informatica A - Massimo Bertozzi Esempio di Binary Search Tree

Fondamenti di Informatica A - Massimo Bertozzi Albero binario di ricerca: rappresentazione collegata ✗ Nel caso dei BST è opportuna una rappresentazione piú mnemonica:  struct nodo{  miodato dato;  tipo_chiave chiave;  struct nodo *maggiori;  struct nodo *minori;  }  struct nodo *radice=NULL;

Fondamenti di Informatica A - Massimo Bertozzi BST: operazioni specifiche ✗ Le operazioni viste per gli alberi binari sono valide anche per i BST ad eccezione dell'equivalenza. ✗ Gli attraversamenti di tipo inorder permettono la scansione ordinata dei dati! ✗ Operazioni specifiche (vedere codice): ✗ inserimento ✗ cancellazione ✗ ricerca ✗ selezione

Fondamenti di Informatica A - Massimo Bertozzi Inserimento in foglia ✗ È il piú semplice ✗ Adatto ad essere implementato sia ricorsivamente che iterativamente ✗ Si traversa l'albero confrontando la chiave del nodo da inserire con la chiave del nodo che si sta visitando e ci si sposta di conseguenza. ✗ Se non c'è il figlio inserisco.

Fondamenti di Informatica A - Massimo Bertozzi Ricerca ✗ Analoga all'inserimento in foglia. ✗ Il numero di passi necessario per trovare il nodo avente la chiave ricercata è legato alla profondità dell'albero. ✗ In un albero pieno questa è log 2 n con n numero dei nodi ✗ Nel caso peggiore può essere n!

Fondamenti di Informatica A - Massimo Bertozzi Inserimento in radice ✗ Nei casi reali è frequente che l'elemento ricercato sia fra quelli piú recentemente inseriti. ✗ Inserimento in foglia svantaggioso!

Fondamenti di Informatica A - Massimo Bertozzi Rotazioni ✗ L'inserimento in radice è complesso e richiede l'utilizzo di modifiche strutturali all'albero dette rotazioni

Fondamenti di Informatica A - Massimo Bertozzi Esempio di inserimento in radice  Per inserire in radice si effettua un inserimento in foglia seguito da rotazioni per riportare l'elemento verso l'alto

Fondamenti di Informatica A - Massimo Bertozzi Inserimento in radice: crescita ✗ Crescita di un albero in cui vengono inseriti in radice gli elementi A, S, E, R, C e H:

Fondamenti di Informatica A - Massimo Bertozzi Selezione di un nodo ✗ Se considero i nodi ordinati secondo la chiave posso immaginarli come numerati da 0 a n. ✗ La selezione è l'operazione che mi permette dato un indice k di recuperare il nodo corrispondente. ✗ Si contano i nodi di uno dei sottoalberi e ci si sposta di conseguenza

Fondamenti di Informatica A - Massimo Bertozzi Partizione di un BST ✗ La partizione di un albero binario di ricerca consiste nel portare in radice il nodo di indice desiderato ✗ Se k è l'indice del nodo in radice il sottoalbero di sinistra contiene k nodi e il sottoalbero di destra n-k ✗ Combinazione di selezioni e rotazioni

Fondamenti di Informatica A - Massimo Bertozzi Cancellazione di un nodo ✗ Operazione complessa, 3 possibilità: ✗ foglia: semplicemente elimino. ✗ nodo con solo un figlio: elimino e collego al padre l'unico figlio. ✗ nodo con due figli: lo elimino e lo sostituisco con l'elemento avente chiave maggiore fra quelli del sottoalbero dei nodi con chiave minore (grado sempre <=1).

Fondamenti di Informatica A - Massimo Bertozzi Albero degenere ✗ L'inserimento di nodi ordinati può portare a situazioni degeneri ✗ Situazione frequente!

Fondamenti di Informatica A - Massimo Bertozzi Inserimento casuale ✗ Una possibile soluzione alla creazione di alberi degeneri è mescolare inserimento in foglia e inserimento in radice. ✗ Inserimento casuale. ✗ L'inserimento casuale riduce i problemi ma non li risolve completamente.

Fondamenti di Informatica A - Massimo Bertozzi Bilanciamento di un BST ✗ Il partizionamento permette di bilanciare un albero partizionando ricorsivamente tramite l'elemento di mezzo. ✗ Soluzione onerosa (O(n)) ✗ Non adeguato in tutte le condizioni

Fondamenti di Informatica A - Massimo Bertozzi Alberi AVL ✗ Un albero si dice bilanciato quando i due sottoalberi della radice hanno un differenza di profondità <=1 e sono a loro volta bilanciati. ✗ Gli alberi AVL sono alberi le cui operazioni di inserimento mantengono l'albero bilanciato. ✗ Inserimento in foglia con rotazioni che bilanciano

Fondamenti di Informatica A - Massimo Bertozzi Inserimento in alberi AVL ✗ 4 tipi di rotazione SS, DD, SD, DS:

Fondamenti di Informatica A - Massimo Bertozzi Alberi ✗ Gli alberi sono alberi di ricerca NON binari aventi 3 tipi di nodi: ✗ nodi 2: analoghi a quelli dei BST. ✗ nodi 3: tre figli e due chiavi, i valori delle chiavi dei sottoalberi sono suddivisi in funzione delle chiavi del padre. ✗ nodi 4: quattro figli e tre chiavi,...

Fondamenti di Informatica A - Massimo Bertozzi Alberi 2-3-4: esempio ✗ Gli alberi possono essere perfettamente bilanciati

Fondamenti di Informatica A - Massimo Bertozzi Alberi rosso-neri ✗ La complessità di gestione degli alberi può essere ridotta introducendo collegamenti colorati:

Fondamenti di Informatica A - Massimo Bertozzi Confronto operazioni

Fondamenti di Informatica A - Massimo Bertozzi Miglioramenti ✗ Fra le strutture dati esaminate durante il corso l'albero binari di ricerca permette di ottenere le prestazioni maggiori. ✗ Si può migliorare: ✗ radix search ✗ tecniche di hash