B-alberi e alberi autoaggiustanti

Slides:



Advertisements
Presentazioni simili
Alberi binari di ricerca
Advertisements

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.
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)
Huffman Canonico: approfondimento. Come abbiamo visto, Huffman canonico ci permette di ottenere una decompressione più veloce e con un uso più efficiente.
Prof.ssa Rossella Petreschi Lezione del 29 /10/2014 del Corso di Algoritmica Lezione n°8.
Algoritmi Avanzati a.a.2014/2015 Prof.ssa Rossella Petreschi
Algoritmi e Strutture dati a.a.2010/2011 Prof.ssa Rossella Petreschi
Algoritmi Avanzati a.a.2013/2014 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.
Alberi di ricerca di altezza logaritmica
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 Avanzati a.a.2011/2012 Prof.ssa Rossella Petreschi
Algoritmi e Strutture Dati
Rappresentazione di alberi
Correzione 1° Esonero Lezione n°13
Rappresentazione di alberi binari
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
Algoritmi Avanzati a.a.2011/2012 Prof.ssa Rossella Petreschi
Sulla complessità Lezione n°2
Algoritmi Avanzati Prof.ssa Rossella Petreschi
Algoritmi Avanzati Prof.ssa Rossella Petreschi
Algoritmi Avanzati a.a.2014/2015 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 e Strutture Dati
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
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
concetti ed applicazioni
Insiemi disgiunti.
Algoritmi e Strutture Dati
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
Ricerca 01/08/2019 package.
HeapSort Stesso approccio incrementale del selectionSort Tipo di dato
Transcript della presentazione:

B-alberi e alberi autoaggiustanti Lezione n°6 Prof.ssa Rossella Petreschi Lezione del 22 /10/2012 del Corso di Algoritmi e Strutture Dati Riferimenti: Paragrafo 7.5/7.6 del testo Kingston “Algorithms and data structures” Edizioni: Addison-Wesley Capitolo 18 del testo Cormen, Leiserson, Rivest, Stein “Introduzione agli algoritmi” Edizioni: McGrawHill

Eliminazione di una chiave in un B-albero L’operazione di eliminazione in un B-albero è analoga a quella già vista per un albero binario di ricerca e richiede il controllo del numero di chiavi del nodo su cui si è operato (debbono rimanere almeno t-1 chiavi) Si cerca la chiave da cancellare; se la chiave è in una foglia, la si elimina; se la chiave è in un nodo interno la si sostituisce con il predecessore (o il successore), che è in una foglia, e ci si riconduce al caso precedente Ogni volta che da una foglia si elimina una chiave si deve controllare se il numero di chiavi rimane almeno pari a t-1. Se ciò non accade, bisogna opportunamente rimanipolare la struttura.

Il supporto di un fratello Un nodo y che rimane con meno di t-1 chiavi deve chiedere aiuto ad un fratello, f(y), per effettuare una opportuna ridistribuzione delle chiavi. La ridistribuzione mette in gioco le chiavi presenti nei nodi y e f(y) nonché la loro chiave di separazione presente nel nodo padre. Per effettuare la ridistribuzione, f(y) deve avere almeno t chiavi in modo che al termine della ridistribuzione y e f(y) abbiano almeno t-1 chiavi ciascuno. Se f(y) ha t-1 chiavi, prima di effettuare una ridistribuizione, bisogna fondere y e f(y) in un solo nodo. La fusione consiste nell’eliminare y e nel riportare in f(y) tutte le chiavi di y e la chiave di separazione che era presente nel nodo padre. f(y) avrà quindi 2t-2 nodi ATTENZIONE!!

Decremento dell’altezza L’operazione di fusione sposta da p(y) a f(y) la chiave di separazione fra y e f(y) che era presente nel nodo padre. Questo potrebbe causare la necessità di iterare la fusione fra due nodi. Questo processo può propagare verso l’alto fino ad arrivare alla radice. Se i nodi da fondere sono i due unici figli della radice, il risultato della fusione è una nuova radice mentre si decrementa l’altezza dell’albero La complessità dell’intera operazione di eliminazione (comprensiva delle eventuali fusioni di nodi) rimane dell’ordine di O(t h(T))

B+-tree chiavi solo nelle foglie; nodi interni contengono solo puntatori per indicare la strada verso le foglie; le foglie sono collegate fra loro orizzontalmente.

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 6

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

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 8

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 9

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

Analisi ammortizzata di un singolo passo di splay u fs di p(u) e r = p(u) i= ci+(Ti)-(Ti-1)= per (1,2) = 1+ri(u)+ri(p(u)) -ri-1(u)-ri-1(p(u)) = per (3) = 1+ri(u)+ri(p(u)) -ri-1(u)- ri(u) = = 1+ ri(p(u)) -ri-1(u)≤ ≤ 1+ri(u) -ri-1(u) ≤ ≤ 1 + 3[ri(u) - ri-1(u)] u,p(u) sono gli unici nodi che cambiano il valore di size prima e dopo l’operazione di splay; ci misura il numero di rotazioni; ri-1(p(u)) = ri(u) 11