Alberi di ricerca di altezza logaritmica

Slides:



Advertisements
Presentazioni simili
Algoritmi e Strutture Dati
Advertisements

Capitolo 4 Ordinamento Algoritmi e Strutture Dati.
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 Interrogazioni.
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 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 20 aprile 2001
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 Capitolo 6 Rotazioni.
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 Alberi di ricerca Algoritmi e Strutture Dati Camil Demetrescu, Irene Finocchi, Giuseppe F. Italiano.
Prof.ssa Rossella Petreschi Lezione del 15 /10/2012 del Corso di Algoritmi e Strutture Dati Riferimenti: Paragrafo 7.4 del testo Kingston “Algorithms and.
Prof.ssa Rossella Petreschi Lezione del 17 /10/2014 del Corso di Algoritmica Lezione n°5.
Prof.ssa Rossella Petreschi Lezione del 15 /10/2012 del Corso di Algoritmica B-alberi Lezione n°5.
Prof.ssa Rossella Petreschi Lezione del 29/10/2012 del Corso di Algoritmi e Strutture Dati Riferimenti: Capitolo 19 del testo Cormen, Leiserson, Rivest,
Fondamenti di Informatica A - Massimo Bertozzi ALBERI E ALBERI BINARI DI RICERCA (BST)
Prof.ssa Rossella Petreschi Lezione del 29 /10/2014 del Corso di Algoritmica Lezione n°8.
Algoritmi e Strutture dati a.a.2010/2011 Prof.ssa Rossella Petreschi
Alberi autoaggiustanti
Alberi di ricerca di altezza logaritmica
Algoritmi e Strutture dati a.a.2010/2011 Prof.ssa Rossella Petreschi
Progettare algoritmi veloci usando strutture dati efficienti
Inserzione e Cancellazione
Branch and Bound Lezione n°19 Prof.ssa Rossella Petreschi
Branch and Bound Lezione n°14 Prof.ssa Rossella Petreschi
Progettare algoritmi veloci usando strutture dati efficienti
Dizionari alberi bilanciati.
Analisi di sequenze di operazioni Union-Find
Lezione n°9 Prof.ssa Rossella Petreschi
Algoritmi Avanzati a.a.2014/2015 Prof.ssa Rossella Petreschi
Lezione n°7 Prof.ssa Rossella Petreschi
Alberi binari Definizione Sottoalberi Padre, figli
Algoritmi e Strutture Dati
Rappresentazione di alberi
Correzione 1° Esonero Lezione n°13
Rappresentazione di alberi binari
B-alberi e alberi autoaggiustanti
Algoritmi Avanzati a.a.2011/2012 Prof.ssa Rossella Petreschi
Complessità ammortizzata degli algoritmi Union Find
Lezione n°14 Reti di flusso Prof.ssa Rossella Petreschi
La gestione degli insiemi disgiunti
Algoritmi Avanzati Prof.ssa Rossella Petreschi
Lezione n°4 Prof.ssa Rossella Petreschi
Algoritmi Avanzati a.a.2010/2011 Prof.ssa Rossella Petreschi
Algoritmi e Strutture Dati
Algoritmi e Strutture Dati
Dizionari alberi bilanciati.
Rappresentazione di alberi
Algoritmi per il flusso nelle reti
Lezione n°6 Prof.ssa Rossella Petreschi
Analisi ammortizzata Lezione n°3
Gestione dinamica di tabelle
Algoritmi e Strutture Dati
Progettare algoritmi veloci usando strutture dati efficienti
Automi e stringhe Lezione n°24 Prof.ssa Rossella Petreschi
Estensione di strutture dati e
Algoritmi e Strutture dati a.a.2010/2011 Prof.ssa Rossella Petreschi
Alberi di ricerca Lezione n°4
Algoritmi e Strutture dati a.a.2010/2011 Prof.ssa Rossella Petreschi
Lezione n°7 Splay-Trees e Heaps Prof.ssa Rossella Petreschi
Il problema del flusso nelle reti
Insiemi disgiunti.
Algoritmi e Strutture dati a.a.2010/2011 Prof.ssa Rossella Petreschi
Unione per ranghi compressi
Tabelle dinamiche Lezione n°3
Analisi ammortizzata Lezione n°2
HeapSort Stesso approccio incrementale del selectionSort Tipo di dato
Transcript della presentazione:

Alberi di ricerca di altezza logaritmica Lezione n°6 Prof.ssa Rossella Petreschi Lezione del 27/10/2011 del Corso di Algoritmi e Strutture Dati Riferimenti: Paragrafi 6.1-6.3 del testo Demetrescu, Finocchi, Italiano “Algoritmi e Strutture Dati” Edizioni: McGraw-Hill Capitolo 14 del testo Cormen, Leiserson, Rivest “Introduzione agli Algoritmi” Edizioni: Jackson Libri Paragraf 7.5 del testo Kingston “Algorithms and data structures” Edizioni: Addison-Wesley ASD 2011/2012

Alberi AVL Si associ ad ogni nodo u di AR un valore intero fb(u) dato dalla differenza fra le altezze dei suoi sottoalberi. Albero AVL è un albero di ricerca 1-bilanciato, ovvero -1≤ fb(u) ≤1 per ogni u Vale: l’altezza di una albero AVL è logaritmica nel numero dei suoi nodi ASD 2011/2012

Altezza di un AVL Alberi di Fibonacci: alberi AVL con il minor numero di nodi a parità di altezza n0 = 1; n1 = 2; nh = 1+ nh-1+ nh-2 (n(h):minimo numero di nodi di un albero AVL di altezza h) Vale: nh = Fh+3-1 si dimostra per induzione Passo base n0 = 1= F3-1=2-1 Ipotesi induttiva nk = Fk+3-1, per ogni k < h Prova nh = 1+ nh-1+ nh-2 = 1 + Fh+2-1+ Fh+1-1 = Fh+3-1 Th: Un albero AVL con n nodi ha altezza O(logn) Prova: n ≥ nh = Fh+3-1 ≥ h+1-1 ASD 2011/2012 3

Alberi Red/Black Albero Red/Black: albero RB tale che ad ogni nodo u è associato un colore (rosso o nero); ogni foglia ha colore nero; se un nodo ha colore rosso, entrambi i suoi figli hanno colore nero; ogni cammino semplice da un nodo x(non incluso) ad una foglia contiene lo stesso numero di nodi neri, bh(x) Vale: l’altezza di un albero RB è logaritmica nel numero dei suoi nodi ASD 2011/2012 4

Altezza di un albero Red/Black Il sottoalbero radicato in x,SA(x), contiene almeno 2bh(x)-1 nodi Prova (per induzione su h) Passo base: se h=0, x è una foglia 2bh(x)-1 =1-1 = 0 Ipotesi induttiva 2bh(y)-1 per ogni y con h(y) < h(x) Prova: SA(x) = x+ SA(fs(x))+ SA(fd(x)) Nodi interni di SA(x) ≤ (2bh(x)-1-1)+ (2bh(x)-1-1)+1≤ 2bh(x)-1 Th: Un albero Red/Black con n nodi ha altezza O(logn) Prova: per (*) almeno metà dei nodi su un qualunque cammino dalla radice ad una foglia (esclusa la radice)devono essere neri (bh(x) ≥ h/2) e quindi n ≥ 2bh(x)-1≥ 2h/2-1 (*) se un nodo ha colore rosso, entrambi i suoi figli hanno colore nero. ASD 2011/2012 5

Rotazioni Rotazione destra Rotazione sinistra/destra ASD 2011/2012 6

Inserzione Si inserisce x come in un qualunque albero di ricerca e poi AVL : si ricalcolano i fattori di bilanciamento dei nodi nel cammino da x a r. Sia v il nodo più profondo con fb = +/-2. Con perno nei nodi con fb = +/-2, a partire da v e risalendo alla radice, si eseguano opportune rotazioni. R/B: x si colora di rosso e si vede se si viola (*) quando si viola (*) si tende a spostare la violazione verso l’alto iterando i seguenti passi: lo zio di x, z(x), è rosso allora commuta i colori di p(x), z(x),p(p(x)) lo zio di x, z(x), è nero allora esegui una rotazione la radice si mantiene sempre nera (*) se un nodo ha colore rosso, entrambi i suoi figli hanno colore nero. ASD 2011/2012 7

Cancellazione Si cancella x come in un qualunque albero di ricerca e poi AVL : si ricalcolano i fattori di bilanciamento dei nodi nel cammino da x a r. Sia v il nodo più profondo con fb = +-2. Con perno nei nodi con fb = +-2, a partire da v e risalendo alla radice, si eseguano opportune rotazioni. R/B: se x era nero la (*) è stata violata. Si assegni nero ad y,figlio di x eliminato. y era rosso o y è la radice. Fine. y era già nero allora sposto il nero di x verso la radice a seconda che il fratello di y,w, sia rosso(r) o nero(n): se (r), lo riconduco al caso (n) scambiando i colore fra w e p(x) e ruoto a sx; se (n), ho ancora 3 casi a seconda del colore di figli di w: nn,rn (nr),rr (ogni caso si effettua tramite scambi di colore e rotazioni) (*) ogni cammino semplice da un nodo x(non incluso) ad una foglia contiene lo stesso numero di nodi neri, bh(x) ASD 2011/2012 8

Alberi autoaggiustanti Un albero bilanciato mantiene esplicitamente una condizione di bilanciamento (basata sul fattore di bilanciamento dei nodi) in modo da ottenere un tempo di esecuzione logaritmico nel caso peggiore per tutte le operazioni. Un albero autoaggiustante garantisce tempo di esecuzione AMMORTIZZATO logaritmico su una sequenza di operazioni senza mantenere alcuna condizione esplicita di bilanciamento ASD 2011/2012 9

L’operazione di SPLAY Operazione splay(u): consiste nel partire da u e risalire alla radice dell’albero tramite una sequenza di rotazioni. A meno di simmetrie si ha se p(u) = r e u è fs, u diviene nuova radice e r fd (rotazione destra) se u è fs di p(u) e p(u) è fs di p(p(u)) allora u prende il posto di p(p(u)) con fd p(u) che a sua volta ha p(p(u)) come fd (doppia rotazione destra) se u è fs di p(u) e p(u) è fd di p(p(u)) allora u prende il posto di p(p(u)) che diviene suo fs mentre p(u) diviene suo fd (rotazione destra/sinistra) Ovviamente ad ogni passo si debbono mantenere le proprietà di un albero di ricerca. ASD 2011/2012 10

L’euristica Per rendere un albero binario di ricerca auto-aggiustante,si itera splay(u) in corrispondenza di ogni operazione di accesso o di modifica dell’albero (da cui splay tree) . Quindi u inizialmente sarà: chiave trovata o foglia su cui ci si ferma (operazione di ricerca) elemento inserito (operazione di inserimento) padre dell’elemento v eliminato (operazione di cancellazione) L’euristica prosegue fino alla radice e pertanto in ogni caso è proporzionale alla lunghezza del cammino su cui lo splay procede ASD 2011/2012 11

La funzione potenziale (T) =  r(x) =  log size(x), per ogni x nello splay tree. Il valore del potenziale è tanto più piccolo quanto più l’albero è bilanciato (T)= log5+ log3+ 3log1≈ 3.9 (T)= log5+ log4+ …+log1≈ 5.9 ASD 2011/2012 12

Analisi ammortizzata su splay tree Il tempo totale ammortizzato di una sequenza di  operazioni (di ricerca, di inserimento e di cancellazione) su uno splay-tree è data da ( logn), con n massimo numero di nodi che l’albero raggiunge durante la sequenza. Il tempo ammortizzato di una singola operazione di splay è pari (logm), con m numero di nodi dell’albero su cui si effettua l’operazione. ASD 2011/2012 13