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

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
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
Algoritmi e Strutture Dati
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.
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.
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 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 Copyright © The McGraw - Hill Companies, srl 1 Capitolo 1 Unintroduzione.
Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Capitolo 4 Ordinamento: Heapsort 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
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.
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.
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 Alberi AVL (Adelson-Velskii.
Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Copyright © The McGraw - Hill Companies, srl Capitolo 6 Rotazioni.
Capitolo 7 Tavole hash Algoritmi e Strutture Dati.
Algoritmi e Strutture Dati
Capitolo 4 Ordinamento Algoritmi e Strutture Dati.
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 13 Cammini minimi: Ordinamento topologico Algoritmi e Strutture Dati.
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 Capitolo 8 Code con.
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.
Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Copyright © The McGraw - Hill Companies, srl Capitolo 4 Ordinamento:
Capitolo 8 Code con priorità Algoritmi e Strutture Dati.
Algoritmi e Strutture Dati
Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Copyright © The McGraw - Hill Companies, srl 1 Soluzione esercizio.
Capitolo 13 Cammini minimi: Algoritmo di ordinamento topologico, di Dijkstra, e di Floyd e Warshall Algoritmi e Strutture Dati.
Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Capitolo 4 Ordinamento: Heapsort Algoritmi e Strutture Dati.
Il problema della ricerca Algoritmi e Strutture Dati.
Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Copyright © The McGraw - Hill Companies, srl 1 Progettare algoritmi.
Capitolo 6 Il problema del dizionario Algoritmi e Strutture Dati.
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 1 Capitolo 1 Un’introduzione.
Capitolo 6 Alberi di ricerca Algoritmi e Strutture Dati Camil Demetrescu, Irene Finocchi, Giuseppe F. Italiano.
Capitolo 8 Code con priorità Algoritmi e Strutture Dati.
Algoritmi e Strutture Dati
Transcript della presentazione:

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