La presentazione è in caricamento. Aspetta per favore

La presentazione è in caricamento. Aspetta per favore

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

Presentazioni simili


Presentazione sul tema: "Fondamenti di Informatica A - Massimo Bertozzi ALBERI E ALBERI BINARI DI RICERCA (BST)"— Transcript della presentazione:

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

2 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.

3 Fondamenti di Informatica A - Massimo Bertozzi Esempio

4 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à

5 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

6 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

7 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:

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

9 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;

10 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!

11 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

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

13 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;

14 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

15 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.

16 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!

17 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!

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

19 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

20 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:

21 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

22 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

23 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).

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

25 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.

26 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

27 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

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

29 Fondamenti di Informatica A - Massimo Bertozzi Alberi 2-3-4 ✗ Gli alberi 2-3-4 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,...

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

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

32 Fondamenti di Informatica A - Massimo Bertozzi Confronto operazioni

33 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


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

Presentazioni simili


Annunci Google