La presentazione è in caricamento. Aspetta per favore

La presentazione è in caricamento. Aspetta per favore

Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Copyright © 2004 - The McGraw - Hill Companies, srl Capitolo 6 Il problema.

Presentazioni simili


Presentazione sul tema: "Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Copyright © 2004 - The McGraw - Hill Companies, srl Capitolo 6 Il problema."— Transcript della presentazione:

1 Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Copyright © 2004 - The McGraw - Hill Companies, srl Capitolo 6 Il problema del dizionario Algoritmi e Strutture Dati

2 Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Copyright © 2004 - The McGraw - Hill Companies, srl insert(elem e, chiave k) 1.Crea un nuovo nodo u con elem=e e chiave=k 2.Cerca la chiave k nellalbero, identificando così il nodo v che diventerà padre di u 3.Appendi u come figlio sinistro/destro di v in modo che sia mantenuta la proprietà di ordinamento totale La complessità della procedura considerata è T(n) = O(h), ove h è laltezza del BST

3 Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Copyright © 2004 - The McGraw - Hill Companies, srl 15 618 391720 24 13 10 7 insert(e,8) Se seguo questo schema lelemento e viene posizionato nella posizione giusta. Infatti, per costruzione, ogni antenato di e si ritrova e nel giusto sottoalbero. 8

4 Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Copyright © 2004 - 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 lelemento 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 lelemento minimo del BST).

5 Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Copyright © 2004 - 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 è laltezza del BST

6 Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Copyright © 2004 - The McGraw - Hill Companies, srl 15 618 381720 24 13 9 7 min (r) max (u)

7 Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Copyright © 2004 - 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)

8 Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Copyright © 2004 - The McGraw - Hill Companies, srl La ricerca del successore di un nodo è simmetrica: cambio sinistro con destro e max con min 15 618 381720 24 13 9 7 Cerco il min del sottoalbero destro Cerco lantenato più prossimo di u il cui figlio sinistro è la radice del sottoalbero che contiene u suc (u) Ricerca del successore Complessità: O(h)

9 Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Copyright © 2004 - The McGraw - Hill Companies, srl delete(elem e) Sia u il nodo contenente lelemento e da cancellare; ci sono 3 possibilità: 1) u è una foglia: rimuovila 2) u ha un solo figlio:

10 Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Copyright © 2004 - 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

11 Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Copyright © 2004 - The McGraw - Hill Companies, srl 15 618 391720 24 13 10 7 5 successore di u u v 4 delete (u)

12 Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Copyright © 2004 - The McGraw - Hill Companies, srl In tutte tre i casi, costa T(n)=O(h) Ricapitolando, le operazioni di ricerca, inserimento e cancellazione hanno costo O(h) dove h è laltezza dellalbero Per alberi molto sbilanciati, h= (n) …ma p er alberi molto bilanciati, h=O(log n) Costo delloperazione di cancellazione

13 Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Copyright © 2004 - The McGraw - Hill Companies, srl 15 20 17 27 16 19 30 22... 2 …un albero binario di ricerca molto sbilanciato…

14 Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Copyright © 2004 - The McGraw - Hill Companies, srl 15 620 381727 24 13 7 1619 30 22 …un albero binario di ricerca molto bilanciato…

15 Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Copyright © 2004 - 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 dellABR, poi un altro elemento con chiave ancora minore, e cosi via … Dobbiamo definire un modo per mantenere lalbero 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

16 Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Copyright © 2004 - The McGraw - Hill Companies, srl Alberi AVL (Adelson-Velskii e Landis, 1962)

17 Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Copyright © 2004 - 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

18 Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Copyright © 2004 - The McGraw - Hill Companies, srl 15 620 381727 24 13 7 1619 30 22 …qualche esempio… è il seguente albero AVL? Sì: tutti i nodi hanno fattore di bilanciamento = 0

19 Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Copyright © 2004 - The McGraw - Hill Companies, srl 20 17 27 19 30 22 …qualche esempio… è il seguente albero AVL? NO! Non vale la proprietà sui fattori di bilanciamento! 0 1 2 3 4 5 Convenzione: altezza di un albero vuoto= -1

20 Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Copyright © 2004 - The McGraw - Hill Companies, srl 15 618 381720 24 13 10 7 9 +1 0 0 0 0 00 0 0 25 0 …qualche esempio… è il seguente albero AVL? Sì: proprietà sui fattori di bilanciamento rispettata

21 Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Copyright © 2004 - The McGraw - Hill Companies, srl 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 nn h nodi varrà h=O(log n)

22 Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Copyright © 2004 - 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 laltezza), diventa sbilanciato! intravedete uno schema per generare li-esimo albero di Fibonacci a partire dai precedenti?

23 Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Copyright © 2004 - 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+3 -1. 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+2 -1)+(F h+1 - 1) = F h+3 -1.

24 Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Copyright © 2004 - The McGraw - Hill Companies, srl Teorema: Un albero AVL con n nodi ha altezza O(log n). Dim.: Sia h laltezza dellAVL, e si consideri T h : n n h =F h+3 -1 = ( h ) Ricorda che vale: F k = ( k ) =1.618… sezione aurea h= (log n h ) = (log n h ) = O(log n).


Scaricare ppt "Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Copyright © 2004 - The McGraw - Hill Companies, srl Capitolo 6 Il problema."

Presentazioni simili


Annunci Google