Alberi Bilanciati di Ricerca



Похожие документы
Alberi Binari di Ricerca

Il problema dello zaino

Multi-way search trees

Alberi binari di ricerca

Esercizi di Algoritmi e Strutture Dati

Alberto Montresor Università di Trento

Algoritmi e Strutture Dati

Esercizio 1. E vero che in un AVL il minimo si trova in una foglia o nel penultimo livello? FB = -1. livello 0 FB = -1. livello 1 FB = -1.

Alberi Binari di Ricerca

Alberi rosso-neri. Oltre ad essere alberi binari di ricerca, gli alberi rosso-neri soddisfano le seguenti proprietà:

Algoritmi e Strutture Dati

Lezione 12 Tabelle Hash

In questa lezione Alberi binari di ricerca: la cancellazione

Alberi binari e alberi binari di ricerca

Esercizi su alberi binari

GLI ALBERI BINARI DI RICERCA. Cosimo Laneve

Alberi rosso-neri. Le operazioni sugli alberi binari di ricerca hanno complessità proporzionale all altezza h dell albero.

Alberi Binari di Ricerca

Un albero completamente bilanciato o pieno (full) alberi completamente sbilanciati. Un albero binario completo

Esercizi Capitolo 6 - Alberi binari di ricerca

Tabelle hash. Damiano Macedonio Università Ca' Foscari di Venezia.

Транскрипт:

Alberi Bilanciati di Ricerca Damiano Macedonio Uniersità Ca' Foscari di Venezia mace@unie.it

Copyright 2009, 2010 Moreno Marzolla, Uniersità di Bologna (http://www.moreno.marzolla.name/teaching/asd2010/) Modifications Copyright c 2012, Damiano Macedonio, Uniersità Ca' Foscari di Venezia This work is licensed under the Creatie Commons Attribution-NonCommercial- ShareAlike License. To iew a copy of this license, isit http://creatiecommons.org/licenses/by-nc-sa/3.0/ or send a letter to Creatie Commons, 543 Howard Street, 5th Floor, San Francisco, California, 94105, USA. Algoritmi e Strutture Dati 2

Introduzione Abbiamo isto che in un ABR è possibile inserire, rimuoere e indiiduare nodi data la corrispondente chiae in tempo O(h) con h=altezza dell'albero Un albero binario completo con n nodi ha altezza h=θ(log n) Tuttaia, inserimenti e rimozioni di nodi possono sbilanciare l'albero Domanda: indiiduare una sequenza di n inserimenti in un ABR inizialmente uoto tali che al termine, l'albero risultante abbia altezza Θ(n) Il nostro obbiettio: mantenere bilanciato un ABR, anche a seguito di inserimenti/rimozioni di nodi Algoritmi e Strutture Dati 3

Alberi AVL Un albero AVL è un albero di ricerca (quasi) bilanciato Un albero AVL con n nodi supporta le operazioni insert(), delete(), lookup() con costo O(log n) nel caso pessimo Adelson-Velskii, G.; E. M. Landis (1962). "An algorithm for the organization of information". Proceedings of the USSR Academy of Sciences 146: 263 266 Georgy Maximoich Adelson-Velsky (1922 ) http://chessprogramming.wikispaces.com/georgy+adelson-velsky Algoritmi e Strutture Dati 4 Egenii Mikhailoich Landis (1921 1997) http://en.wikipedia.org/wiki/yegeniy_landis

Alcune definizioni Fattore di bilanciamento Il fattore di bilanciamento β() di un nodo è dato dalla differenza tra l'altezza del sottoalbero sinistro e del sottoalbero destro di : β() = altezza(sin()) altezza(des()) Bilanciamento in altezza Un albero si dice bilanciato in altezza se le altezze dei sottoalberi sinistro e destro di ogni nodo differiscono al più di uno In altre parole, un albero è bilanciato in altezza se per ogni suo nodo, si ha β() 1 Definizione: un albero AVL è un ABR bilanciato in altezza Algoritmi e Strutture Dati 5

Esempio β()=0 β()=-3 Algoritmi e Strutture Dati 6

Esempio β()=0 β(t)=2 t Algoritmi e Strutture Dati 7

Altezza di un albero AVL Per alutare l'altezza di un albero AVL, consideriamo gli alberi più sbilanciati che si possano costruire Alberi di Fibonacci T 0 T 1 T 2 T 3 T n T n-1 T n-2 Algoritmi e Strutture Dati 8

Altezza di un albero Fibonacci Consideriamo un albero di Fibonacci di altezza h. Sia n h il numero dei nodi Per costruzione si ha Dimostriamo che n h =n h 1 n h 2 1 n h =F h 3 1 oe F n è l'n-esimo numero di Fibonacci Algoritmi e Strutture Dati 9

Altezza di un albero Fibonacci Base: h=0 n 0 = 1 F 3 = 2 Passo induttio T 0 n h =F h 3 1 n h = n h 1 n h 2 1 = F h 2 1 F h 1 1 1 = F h 2 F h 1 1 = F h 3 1 Algoritmi e Strutture Dati 10

Altezza di un albero di Fibonacci Quindi ricapitolando: un albero di Fibonacci di altezza h ha F h+3 1 nodi Ricordiamo che da cui otteniamo F h = h, 1.618 n h =F h 3 1= h e possiamo quindi concludere che h= logn h Algoritmi e Strutture Dati 11

Conclusione Poiché... l'albero di Fibonacci con n nodi è quello che tra tutti gli alberi AVL con n nodi ha altezza massima; l'altezza di un albero di Fibonacci con n nodi è proporzionale a (log n)...si conclude che: l'altezza di un albero AVL con n nodi è O(log n) Algoritmi e Strutture Dati 12

Mantenere il bilanciamento La ricerca in un albero AVL iene effettuata come in un generico ABR Inserimenti e rimozioni inece richiedono di essere modificati per mantenere il bilanciamento dell'albero Esempio 9 Inserimento del alore 6 9 8 13 8 13 7 7 β() > 1 6 Algoritmi e Strutture Dati 13

Rotazioni L'operazione fondamentale per ribilanciare l'albero è la rotazione semplice Domanda: dimostrare che la rotazione semplice presera la proprietà d'ordine degli ABR Uso come perno u u T3 Uso u come perno T1 T1 T2 T2 T3 Algoritmi e Strutture Dati 14

Rotazioni Supponiamo che a seguito di un inserimento o cancellazione, una parte dell'albero sia sbilanciata Abbiamo quattro casi (simmetrici due a due) SS (Sinistro-Sinistro) SD (Sinistro-Destro) DD (Destro-Destro) DS (Destro-Sinistro) Algoritmi e Strutture Dati 15

Ribilanciamento: rotazione SS Si applica una rotazione semplice erso destra su Ha costo O(1) +2 0 u u h+2 T3 h h+1 T1 h+1 T1 T2 T2 T3 Algoritmi e Strutture Dati 16

Ribilanciamento: rotazione SD (non funziona!) Non si ribilancia! +2-2 u u h+2 T3 h h T1 h+2 T1 T2 T2 T3 Algoritmi e Strutture Dati 17

Ribilanciamento: rotazione SD primo passo z w w T4 z T4 T1 T2 T3 T1 T2 T3 Algoritmi e Strutture Dati 18

Ribilanciamento: rotazione SD secondo passo w w z T1 z T2 T3 T4 T1 T2 T3 T4 Algoritmi e Strutture Dati 19

Ribilanciamento: rotazione SD -1 z +2 caso 1 Rotazione doppia: la prima a sinistra con perno z, la seconda a destra con perno w T4 h 0 w h T1 T2 h-1 T3 0 z -1 h T1 h-1 T2 T3 T4 h Algoritmi e Strutture Dati 20

Ribilanciamento: rotazione SD caso 2-1 z +2 Rotazione doppia: la prima a sinistra con perno z, la seconda a destra con perno w T4 h 0 w h T1 T2 h-1 T3 1 z 0 h T1 h-1 T2 T3 T4 h Algoritmi e Strutture Dati 21

Alberi AVL: Inserimento Si inserisce il nuoo alore come per gli ABR Si ricalcolano tutti i fattori di bilanciamento mutati Al più il ricalcolo riguarderà un cammino dalla foglia appena inserita fino alla radice, quindi ha costo O(log n) Se un nodo presenta fattore di bilanciamento ±2 (nodo critico), occorre ribilanciare l'albero mediante una delle rotazioni iste Nota: in caso di inserimento, il nodo critico è unico Costo complessio: O( log n ) Algoritmi e Strutture Dati 22

Alberi AVL: Rimozione Si rimuoe il nodo come per gli ABR Si ricalcolano tutti i fattori di bilanciamento mutati Al più il ricalcolo riguarderà un cammino dal padre del nodo eliminato fino alla radice, quindi ha costo O(log n) Per ogni nodo con fattore di bilanciamento ±2, occorre ribilanciare l'albero mediante una delle rotazioni iste Nota: nel caso della rimozione, possono comparire più nodi con fattori di bilanciamento ±2 Costo complessio: O( log n ) Algoritmi e Strutture Dati 23

Esempio: cancellazione con rotazioni a cascata 8 3 2 5 13 11 16 1 4 6 9 12 14 19 7 10 15 17 20 18 Algoritmi e Strutture Dati 24

Applicare rotazione a sinistra su 3 8 3 2 5 13 11 16 4 6 9 12 14 19 7 10 15 17 20 18 Algoritmi e Strutture Dati 25

Applicare rotazione a sinistra su 8 8 5 13 3 6 11 16 2 4 7 9 12 14 19 10 15 17 20 18 Algoritmi e Strutture Dati 26

Albero ribilanciato 13 8 16 5 11 14 19 3 6 9 12 15 17 20 2 4 7 10 18 Algoritmi e Strutture Dati 27

Alberi AVL: Riassunto search( Key k ) O( log n ) nel caso peggiore insert( Key k, Item t ) O( log n ) nel caso peggiore delete( Key k ) O( log n ) nel caso peggiore Algoritmi e Strutture Dati 28