Algoritmi e Strutture Dati

Slides:



Advertisements
Presentazioni simili
Algoritmi e Strutture Dati
Advertisements

Algoritmi e Strutture Dati
Algoritmi e Strutture Dati
Algoritmi e Strutture Dati
Algoritmi e Strutture Dati
Algoritmi e Strutture Dati
Algoritmi e Strutture Dati
Frontespizio Economia Monetaria Anno Accademico
Algoritmi e Strutture Dati
RB-alberi (Red-Black trees)
Alberi binari di ricerca
Capitolo 3 Strutture dati elementari Algoritmi e Strutture Dati Camil Demetrescu, Irene Finocchi, Giuseppe F. Italiano.
Algoritmi e Strutture Dati
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.
Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Copyright © The McGraw - Hill Companies, srl 1 Ordinamenti ottimi.
Capitolo 4 Ordinamento Algoritmi e Strutture Dati.
Capitolo 8 Code con priorità Algoritmi e Strutture Dati.
Algoritmi e Strutture Dati
Algoritmi e Strutture Dati Capitolo 2 Modelli di calcolo e metodologie di analisi.
Algoritmi e Strutture Dati
Capitolo 4 Ordinamento Algoritmi e Strutture Dati Camil Demetrescu, Irene Finocchi, Giuseppe F. Italiano.
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 Stesso approccio.
Capitolo 8 Code con priorità Algoritmi e Strutture Dati.
Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Copyright © The McGraw - Hill Companies, srl 1 Strutture dati per.
Algoritmi e Strutture Dati Capitolo 2 Modelli di calcolo e metodologie di analisi.
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 1 Stesso approccio.
Algoritmi e Strutture Dati Capitolo 2 Modelli di calcolo e metodologie di analisi.
Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Copyright © The McGraw - Hill Companies, srl Capitolo 4 Ordinamento:
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 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 8 Code con.
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.
Capitolo 7 Tavole hash Algoritmi e Strutture Dati.
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.
Algoritmi e Strutture Dati
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 Usa la tecnica del.
Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Copyright © The McGraw - Hill Companies, srl 1 Un albero è un grafo.
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
Capitolo 4 Ordinamento Algoritmi e Strutture Dati.
Algoritmi e Strutture Dati 20 aprile 2001
Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Copyright © The McGraw - Hill Companies, srl 1 K 4 è planare? Sì!
Algoritmi e Strutture Dati
Algoritmi e Strutture Dati
Capitolo 6 Alberi di ricerca 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 Rotazioni.
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 9 Union-find Algoritmi e Strutture Dati.
Capitolo 8 Code con priorità Algoritmi e Strutture Dati.
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.
Capitolo 6 Alberi di ricerca Algoritmi e Strutture Dati Camil Demetrescu, Irene Finocchi, Giuseppe F. Italiano.
Transcript della presentazione:

Algoritmi e Strutture Dati Capitolo 6 Alberi di ricerca

Dizionari Gli alberi di ricerca sono usati per realizzare in modo efficiente il tipo di dato dizionario Copyright © 2004 - The McGraw - Hill Companies, srl

Alberi binari di ricerca (BST = binary search tree) Copyright © 2004 - The McGraw - Hill Companies, srl

Definizione Albero binario che soddisfa le seguenti proprietà ogni nodo v contiene un elemento elem(v) cui è associata una chiave chiave(v) presa da un dominio totalmente ordinato le chiavi nel sottoalbero sinistro di v sono ≤ chiave(v) le chiavi nel sottoalbero destro di v sono ≥ chiave(v) Copyright © 2004 - The McGraw - Hill Companies, srl

Esempi Albero binario di ricerca Albero binario non di ricerca Copyright © 2004 - The McGraw - Hill Companies, srl

…ancora un esempio… Ordinamento decrescente Ordinamento crescente 15 Ordinamento crescente 6 18 3 7 17 20 massimo 2 4 13 minimo 9 Copyright © 2004 - The McGraw - Hill Companies, srl

Visita simmetrica di un BST Che succede se eseguo una visita in ordine simmetrico di un BST? Visita in ordine simmetrico – dato un nodo x, elenco prima il sotto-albero sinistro di x (in ordine simmetrico), poi il nodo x, poi il sotto-albero destro (in ordine simmetrico) visito i nodi dell’ABR in ordine crescente rispetto alla chiave! Copyright © 2004 - The McGraw - Hill Companies, srl

r u v chiave(u) ≤ chiave(r) ≤ chiave(v) Verifica di correttezza – Supponiamo,per semplicità, che l’albero sia completo. Indichiamo con h l’altezza dell’albero. Vogliamo mostrare che la visita in ordine simmetrico restituisce la sequenza ordinata Per induzione sull’altezza dell’ABR: h=1 r u v NIL NIL NIL NIL chiave(u) ≤ chiave(r) ≤ chiave(v) Copyright © 2004 - The McGraw - Hill Companies, srl

r Verifica correttezza (continua …) h = generico (ipotizzo che la procedura sia corretta per h-1) r Albero di altezza h-1. Tutti i suoi elementi sono maggiori o uguali della radice Albero di altezza h-1. Tutti i suoi elementi sono minori o uguali della radice Copyright © 2004 - The McGraw - Hill Companies, srl

search(chiave k) -> elem Traccia un cammino nell’albero partendo dalla radice: su ogni nodo, usa la proprietà di ricerca per decidere se proseguire nel sottoalbero sinistro o destro Copyright © 2004 - The McGraw - Hill Companies, srl

search(7) 15 6 20 3 8 17 27 2 4 7 13 16 19 22 30 Copyright © 2004 - The McGraw - Hill Companies, srl

insert(elem e, chiave k) Crea un nuovo nodo u con elem=e e chiave=k Cerca la chiave k nell’albero, identificando così il nodo v che diventerà padre di u Appendi u come figlio sinistro/destro di v in modo che sia mantenuta la proprietà di ricerca Copyright © 2004 - The McGraw - Hill Companies, srl

insert(e,8) 15 6 18 3 9 17 20 2 4 7 13 8 10 Se seguo questo schema l’elemento e viene posizionato nella posizione giusta. Infatti, per costruzione, ogni antenato di e si ritrova e nel giusto sottoalbero. Copyright © 2004 - The McGraw - Hill Companies, srl

Ricerca del massimo Nota: è possibile definire una procedura min(nodo u) in maniera del tutto analoga Copyright © 2004 - The McGraw - Hill Companies, srl

15 min (r) 6 max (u) 18 3 8 17 20 2 4 7 13 9 Copyright © 2004 - The McGraw - Hill Companies, srl

predecessore e successore il predecessore di un nodo u in un BST è il nodo v nell’albero avente massima chiave  chiave(u) il successore di un nodo u in un BST è il nodo v nell’albero avente minima chiave  chiave(u) Come trovo il predecessore/successore di un nodo in un BST? Copyright © 2004 - The McGraw - Hill Companies, srl

Ricerca del predecessore Copyright © 2004 - The McGraw - Hill Companies, srl

Nota: la ricerca del successore di un nodo è simmetrica 15 suc(u) 6 18 Cerco il min del sottoalbero destro 3 8 17 20 suc(v) 2 4 7 13 Cerco l’antenato più prossimo di v il cui figlio sinistro è la radice del sottoalbero che contiene v 9 Copyright © 2004 - The McGraw - Hill Companies, srl

delete(elem e) Sia u il nodo contenente l’elemento e da cancellare: 1) u è una foglia: rimuovila 2) u ha un solo figlio: Copyright © 2004 - The McGraw - Hill Companies, srl

delete(elem e) 3) u ha due figli: sostituiscilo con il predecessore (o successore) (v) e rimuovi fisicamente il predecessore (o successore) (che ha un solo figlio) Copyright © 2004 - The McGraw - Hill Companies, srl

delete (u) u v successore di u 15 6 18 4 3 9 17 20 2 4 7 13 10 5 Copyright © 2004 - The McGraw - Hill Companies, srl

Costo delle operazioni Tutte le operazioni hanno costo O(h) dove h è l’altezza dell’albero O(n) nel caso peggiore (alberi molto sbilanciati e profondi) Copyright © 2004 - The McGraw - Hill Companies, srl

…un albero binario di ricerca bilanciato… h=O(log n) 15 6 20 3 8 17 27 2 4 7 13 16 19 22 30 Copyright © 2004 - The McGraw - Hill Companies, srl

Notare: Tsearch(n) = O(h) in entrambi i casi Però: 30 Ma anche questo è un BST 27 22 20 19 17 16 Notare: Tsearch(n) = O(h) in entrambi i casi Però: BST completo  h = (log(n)) BST “linearizzato”  h = (n) 15 ... 2 Copyright © 2004 - The McGraw - Hill Companies, srl

(Adel’son-Vel’skii e Landis) Alberi AVL (Adel’son-Vel’skii e Landis) Copyright © 2004 - The McGraw - Hill Companies, srl

Definizioni Fattore di bilanciamento (v) di un nodo v = altezza del sottoalbero sinistro di v - altezza del sottoalbero destro di v Un albero si dice bilanciato in altezza se ogni nodo v ha fattore di bilanciamento in valore assoluto ≤ 1 Alberi AVL = alberi binari di ricerca bilanciati in altezza Generlemente (v) mantenuto come informazione addizionale nel record relativo a v Copyright © 2004 - The McGraw - Hill Companies, srl

è il seguente albero AVL? …qualche esempio… è il seguente albero AVL? 15 6 20 3 8 17 27 2 4 7 13 16 19 22 30 Sì: tutti i nodi hanno fattore di bilanciamento = 0 Copyright © 2004 - The McGraw - Hill Companies, srl

è il seguente albero AVL? …qualche esempio… è il seguente albero AVL? 5 30 4 3 27 Convenzione: altezza di un albero vuoto= -1 22 2 20 1 19 17 NO! Non vale la proprietà sui fattori di bilanciamento! Copyright © 2004 - The McGraw - Hill Companies, srl

è il seguente albero AVL? …qualche esempio… è il seguente albero AVL? +1 15 -1 -1 6 18 -1 -1 3 8 17 20 25 2 4 7 10 9 13 Sì: proprietà sui fattori di bilanciamento rispettata Copyright © 2004 - The McGraw - Hill Companies, srl

Altezza di alberi AVL Si può dimostrare che un albero AVL con n nodi ha altezza O(log n) Idea della dimostrazione: considerare, tra tutti gli AVL di altezza h, quelli con il minimo numero di nodi nh (alberi di Fibonacci) Intuizione: se gli alberi di Fibonacci hanno altezza O(log n), allora gli alberi AVL hanno altezza O(log n) Copyright © 2004 - The McGraw - Hill Companies, srl

…Alberi di Fibonacci per piccoli valori di altezza… Ti: albero di Fibonacci di altezza i (albero AVL di altezza i con il minimo numero di nodi) T0 T1 T2 T3 T4 Nota che: se a Ti tolgo un nodo, o diventa sbilanciato, o cambia la sua altezza Inoltre: ogni nodo ha fattore di bilanciamento pari (in valore assoluto) a 1 intravedete uno schema per generare l’i-esimo albero di Fibonacci a partire dai precedenti? Copyright © 2004 - The McGraw - Hill Companies, srl

Sia nh il numero di nodi di Th. Risulta nh=1+nh-1+nh-2=Fh+3-1 Lo schema Lemma Sia nh il numero di nodi di Th. Risulta nh=1+nh-1+nh-2=Fh+3-1 dim per induzione su h Copyright © 2004 - The McGraw - Hill Companies, srl

Un albero AVL con n nodi ha altezza h=O(log n) Corollario Un albero AVL con n nodi ha altezza h=O(log n) dim nh =Fh+3 -1 = ( h) Ricorda che vale: Fk = ( k)  =1.618… sezione aurea h=(log nh) corollario segue da n  nh Copyright © 2004 - The McGraw - Hill Companies, srl

come implemento Insert(14)? Posso usare un albero AVL per implementare un dizionario? +1 15 -1 -1 6 18 -1 -1 3 8 17 20 25 2 4 7 10 9 13 come implemento Insert(14)? …e delete(25)? Copyright © 2004 - The McGraw - Hill Companies, srl

Implementazione delle operazioni L’operazione search procede come in un BST Ma inserimenti e cancellazioni potrebbero sbilanciare l’albero Manteniamo il bilanciamento tramite opportune rotazioni Copyright © 2004 - The McGraw - Hill Companies, srl

Rotazione di base Mantiene la proprietà di ricerca Richiede tempo O(1) Copyright © 2004 - The McGraw - Hill Companies, srl

Ribilanciamento tramite rotazioni Le rotazioni sono effettuate su nodi sbilanciati Sia v un nodo con fattore di bilanciamento (v) ± 2 Esiste un sottoalbero T di v che lo sbilancia A seconda della posizione di T si hanno 4 casi: (v)=+2 (v)=-2 I quattro casi sono simmetrici a coppie Copyright © 2004 - The McGraw - Hill Companies, srl

Rotazione SS (v)=+2 e altezza di T1 è h+1 Applicare una rotazione semplice verso destra su v Due sottocasi: (i) altezza di T2 è h, allora altezza albero coinvolto nella rotazione passa da h+3 a h+2 (ii) altezza di T2 è h+1 Aggiungendo una foglia a un albero bilanciato si può verificare solo caso (i) 0/-1 Copyright © 2004 - The McGraw - Hill Companies, srl

Rotazione SD (v)=+2 e altezza di T1 = h Allora sottoalbero destro di z ha altezza h+1 e (z)=-1 Applicare due rotazioni semplici: una verso sinistra sul figlio del nodo critico (nodo z), l’altra verso destra sul nodo critico (nodo v) L’altezza dell’albero coinvolto nella rotazione passa da h+3 a h+2 Nota che ci sono due sottocasi: altezza di T2 è h o h-1 h+1 h+1 Copyright © 2004 - The McGraw - Hill Companies, srl

…i due sottocasi del caso SD… +1 Copyright © 2004 - The McGraw - Hill Companies, srl

insert(elem e, chiave k) Crea un nuovo nodo u con elem=e e chiave=k Inserisci u come in un BST Ricalcola i fattori di bilanciamento dei nodi nel cammino dalla radice a u: sia v il più profondo nodo con fattore di bilanciamento pari a ±2 (nodo critico) Esegui una rotazione opportuna su v Oss.: una sola rotazione è sufficiente, poiché l’altezza dell’albero coinvolto diminuisce di 1 Copyright © 2004 - The McGraw - Hill Companies, srl

insert (10,e) caso SD +1 +2 15 -1 -1 -2 6 18 -1 -1 -2 3 8 17 20 +1 +2 -1 -2 3 8 17 20 +1 +2 25 2 4 7 13 caso SD -1 9 10 Copyright © 2004 - The McGraw - Hill Companies, srl

insert (10,e) +1 +2 15 -1 -1 -2 6 18 -1 -1 -2 3 8 17 20 +1 +2 25 2 4 7 13 -1 10 9 Copyright © 2004 - The McGraw - Hill Companies, srl

insert (10,e) +1 +2 15 -1 -1 -2 6 18 -1 -1 -2 3 8 17 20 -1 25 2 4 7 10 +1 +2 9 13 Copyright © 2004 - The McGraw - Hill Companies, srl

delete(elem e) Cancella il nodo come in un BST Ricalcola i fattori di bilanciamento dei nodi nel cammino dalla radice al padre del nodo eliminato fisicamente (che potrebbe essere il predecessore del nodo contenente e) Ripercorrendo il cammino dal basso verso l’alto, esegui l’opportuna rotazione semplice o doppia sui nodi sbilanciati Oss.: potrebbero essere necessarie O(log n) rotazioni Copyright © 2004 - The McGraw - Hill Companies, srl

delete (18) caso SD successore di 18 +2 +1 15 -1 -1 6 20 18 -1 -1 3 8 -1 -1 6 20 18 -1 -1 3 8 17 20 +1 successore di 18 25 2 4 7 13 9 Copyright © 2004 - The McGraw - Hill Companies, srl

delete (18) +2 +1 15 +1 -1 20 8 +1 +1 6 17 13 25 3 7 9 2 4 Copyright © 2004 - The McGraw - Hill Companies, srl

delete (18) 8 +1 6 15 +1 3 7 13 20 9 17 25 2 4 Copyright © 2004 - The McGraw - Hill Companies, srl

Cancellazione con rotazioni a cascata Copyright © 2004 - The McGraw - Hill Companies, srl

Classe AlberoAVL Copyright © 2004 - The McGraw - Hill Companies, srl

Costo delle operazioni Tutte le operazioni hanno costo O(log n) poché l’altezza dell’albero è O(log n) e ciascuna rotazione richiede solo tempo costante Copyright © 2004 - The McGraw - Hill Companies, srl