Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Copyright © The McGraw - Hill Companies, srl Capitolo 6 Il problema del dizionario Algoritmi e Strutture Dati
Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Copyright © The McGraw - Hill Companies, srl Riepilogo Tipo dato Dizionario: Insieme di coppie (elem(v), chiave(v)), in cui la chiave appartiene ad un dominio totalmente ordinato, sul quale eseguire operazioni di search, insert e delete. Albero binario di ricerca: ogni nodo v contiene un elemento del dizionario, con la proprietà che: –le chiavi nel sottoalbero sinistro di v sono < chiave(v) –le chiavi nel sottoalbero destro di v sono > chiave(v) Operazioni di search ed insert sul BST costano O(h), ove h è l’altezza dell’albero.
Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Copyright © The McGraw - Hill Companies, srl Interrogazioni ausiliarie su un BST max (nodo u) – dato un nodo u di un BST, restituisce il nodo del BST che discende da u avente chiave più grande min (nodo u) – dato un nodo u di un BST, restituisce il nodo del BST che discende da u avente chiave più piccola successor (nodo u) – dato un nodo u di un BST, restituisce il nodo del BST con chiave immediatamente più grande di quella associata ad u (o NULL se u contiene l’elemento massimo del BST). predecessor (nodo u) – dato un nodo u di un BST, restituisce il nodo del BST con chiave immediatamente più piccola di quella associata ad u (o NULL se u contiene l’elemento minimo del BST).
Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Copyright © The McGraw - Hill Companies, srl Ricerca del massimo/minimo La procedura min (nodo u) si definisce in maniera del tutto analoga cambiando “destro” con “sinistro” La complessità della procedura considerata è T(n) = O(h), ove h è l’altezza del BST
Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Copyright © The McGraw - Hill Companies, srl min (r) max (u)
Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Copyright © The McGraw - Hill Companies, srl Ricerca del predecessore max del sottoalbero sinistro Antenato più prossimo di u il cui figlio destro è la radice del sottoalbero che contiene v Complessità: O(h)
Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Copyright © The McGraw - Hill Companies, srl La ricerca del successore di un nodo è simmetrica: cambio “sinistro” con “destro” e “max” con “min” Cerco il min del sottoalbero destro Cerco l’antenato più prossimo di u il cui figlio sinistro è la radice del sottoalbero che contiene u suc (u) Ricerca del successore Complessità: O(h)
Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Copyright © The McGraw - Hill Companies, srl delete(elem e) Sia u il nodo contenente l’elemento e da cancellare; ci sono 3 possibilità: 1) u è una foglia: rimuovila 2) u ha un solo figlio:
Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Copyright © The McGraw - Hill Companies, srl delete(elem e) 3) u ha due figli: sostituiscilo con il predecessore (o indifferentemente, il successore), e rimuovi fisicamente il predecessore (o il successore), che per definizione ha al più un solo figlio (vedi 2) )
Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Copyright © The McGraw - Hill Companies, srl pred. di u u v delete (u) 5
Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Copyright © The McGraw - Hill Companies, srl Nei casi 1) e 2) T(n)=O(1), mentre nel caso 3) T(n)=O(h) Ricapitolando, le operazioni di ricerca, inserimento e cancellazione hanno costo O(h) dove h è l’altezza dell’albero Per alberi molto “sbilanciati”, h= (n) …ma p er alberi molto “bilanciati”, h=O(log n) Costo dell’operazione di cancellazione
Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Copyright © The McGraw - Hill Companies, srl …un albero binario di ricerca molto “sbilanciato”…
Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Copyright © The McGraw - Hill Companies, srl …un albero binario di ricerca molto “bilanciato”…
Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Copyright © The McGraw - Hill Companies, srl Analisi critica dei BST Le operazioni di inserimento e cancellazione descritte possono “linearizzare” un BST. Es. - Supponiamo di introdurre un elemento con chiave minore della chiave minima dell’ABR, poi un altro elemento con chiave ancora minore, e cosi via … Dobbiamo definire un modo per mantenere l’albero “bilanciato” (vogliamo cioè che per ogni nodo interno, le “dimensioni” dei sottoalberi sinistro e destro associati rimangano approssimativamente uguali) Innanzitutto dobbiamo formalizzare il concetto di bilanciamento
Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Copyright © The McGraw - Hill Companies, srl Alberi AVL (Adel’son-Vel’skii e Landis, 1962)
Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Copyright © The McGraw - Hill Companies, srl Formalizzazione del bilanciamento Alberi AVL = alberi binari di ricerca bilanciati in altezza Un albero si dice bilanciato in altezza se ogni nodo v ha fattore di bilanciamento in valore assoluto ≤ 1 Fattore di bilanciamento (v) di un nodo v = altezza del sottoalbero sinistro di v – altezza del sottoalbero destro di v Generalmente (v) mantenuto come informazione addizionale nel record relativo a v
Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Copyright © The McGraw - Hill Companies, srl …qualche esempio… è il seguente albero AVL? Sì: tutti i nodi hanno fattore di bilanciamento = 0
Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Copyright © The McGraw - Hill Companies, srl …qualche esempio… è il seguente albero AVL? NO! Non vale la proprietà sui fattori di bilanciamento! Convenzione: altezza di un albero vuoto= -1
Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Copyright © The McGraw - Hill Companies, srl …qualche esempio… è il seguente albero AVL? Sì: proprietà sui fattori di bilanciamento rispettata
Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Copyright © The McGraw - Hill Companies, srl Delimitazione superiore all’altezza di alberi AVL Idea della dimostrazione: considerare, tra tutti gli AVL di altezza h, quelli con il minimo numero di nodi n h (alberi di Fibonacci) Si può dimostrare che un albero AVL con n nodi ha altezza O(log n) Intuizione: se per gli alberi di Fibonacci di altezza h vale h=O(log n h ), allora per tutti gli alberi AVL di altezza h con n≥n h nodi varrà h=O(log n)
Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Copyright © The McGraw - Hill Companies, srl …Alberi di Fibonacci per piccoli valori di altezza… T h (albero di Fibonacci di altezza h): albero AVL di altezza h con il minimo numero di nodi devo massimizzare ad 1 il fattore di bilanciamento di ogni nodo interno T0T0 T1T1 T2T2 T3T3 T4T4 Nota: se a T h tolgo una qualsiasi foglia (esclusa quella che ne caratterizza l’altezza), diventa sbilanciato! intravedete uno schema per generare l’i-esimo albero di Fibonacci a partire dai precedenti?
Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Copyright © The McGraw - Hill Companies, srl T0T0 T1T1 T2T2 T3T3 T4T4 Lo schema Lemma Sia n h il numero di nodi di T h. Risulta n h =F h Dim.: Per induzione su h: h=0: n 0 =1 F h+3 -1=F 3 -1=2-1=1 h generico: n h =1+n h-1 +n h-2 =1+(F (h-1)+3 -1)+(F (h-2)+3 -1) = 1+(F h+2 -1)+ (F h+1 -1) = F h+3 -1.
Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Copyright © The McGraw - Hill Companies, srl Teorema: Un albero AVL con n nodi ha altezza O(log n). Dim.: Sia h l’altezza dell’AVL, e si consideri T h : n ≥ n h =F h+3 -1 = ( h ) Ricorda che vale: F h = ( h ) =1.618… sezione aurea h= (log n h ) = (log n h ) = O(log n).
Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Copyright © The McGraw - Hill Companies, srl Delimitazione inferiore all’altezza di alberi AVL Idea della dimostrazione: considerare, tra tutti gli AVL di altezza h, quelli con il massimo numero di nodi n h (alberi binari completi) Si può anche dimostrare che un albero AVL con n nodi ha altezza Ω (log n) Ma per tali alberi, n h =2 h+1 -1, cioè h= Ω (log n), e quindi per tutti gli alberi AVL di altezza h con n ≤ n h nodi varrà h= Ω (log n)
Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Copyright © The McGraw - Hill Companies, srl Altezza di alberi AVL Conclusione: Un albero AVL con n nodi ha altezza Θ(log n).