Alberi Bilanciati di Ricerca



Documenti analoghi
Algoritmi e Strutture Dati

Algoritmi e strutture dati

Algoritmi e Strutture Dati

Alberi di ricerca. Dizionari. Definizione. Alberi binari di ricerca (BST = binary search tree) Algoritmi e Strutture Dati

Alberi di ricerca. Alberi binari di ricerca. F. Damiani - Alg. & Lab. 04/05 (da C. Demetrescu et al - McGraw-Hill)

Un esempio: l ADT Dizionario (mutabile) Definizione. Alberi binari di ricerca (BST = binary search tree) search(chiave k) -> elem

Algoritmi e Strutture Dati

Algoritmi e Strutture di Dati

Algoritmi e Strutture Dati. Alberi di Ricerca Alberi Bilanciati I (Alberi AVL)

Code con priorità. Moreno Marzolla Dip. di Scienze dell'informazione Università di Bologna.

Algoritmi e Strutture Dati. Alberi di Ricerca Alberi Bilanciati I (Alberi AVL)

dizionari dizionari introduzione al bilanciamento dizionari/2 alberi bilanciati ! ADT che supportano le seguenti operazioni

Binari di Ricerca Binary. Alberi. Trees. Search. Damiano Macedonio Università Ca' Foscari di Venezia.

Alberi Binari di Ricerca

Il problema dello zaino

dizionari alberi bilanciati

Cammini minimi. Damiano Macedonio

Teoria della NP-completezza. Damiano Macedonio

Multi-way search trees

Dipartimento di Elettronica, Informazione e Bioingegneria API 2013/4

Algoritmi e Strutture di Dati

ABR di altezza logaritmica

Alberi binari di ricerca

Ordinamento. Lorenzo Donatiello,Moreno Marzolla Dip. di Scienze dell'informazione Università di Bologna

Esercizi di Algoritmi e Strutture Dati

Alberto Montresor Università di Trento

Algoritmi e Strutture Dati. Alberi Bilanciati: Alberi Red-Black

Alberi binari: definizione e alcune proprietà

Algoritmi e Strutture Dati

Ricerca con una chiave k Assumiamo l esistenza di un descrittore albero con i campi: albero.radice (=null per l albero vuoto) albero.dimensione (=0 pe

ESERCITAZIONI DI INTRODUZIONE AGLI ALGORITMI (A.A. 08/09)

Alberi di ricerca binari

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.

Dizionari. Dizionari con gli alberi. Alberi binari di ricerca. Realizzazione con alberi binari di ricerca. Alberi rosso-neri.

d. Cancellazione del valore 5 e. Inserimento del valore 1

Algoritmi e Strutture Dati. Capitolo 6 Il problema del dizionario

Alberi Binari di Ricerca

Esercizi BST - AVL. E. Fachini

Algoritmi e Strutture di Dati

Alberi Binari di Ricerca e Alberi Rosso-Neri

Testing, correttezza e invarianti

Algoritmi e Strutture Dati. Alberi binari di ricerca

Alberi rosso neri. API a.a. 2013/2014 Gennaio 23, 2014 Flavio Mutti, PhD

Algoritmi e Strutture Dati. Alberi Bilanciati: Alberi Red-Black

algoritmi e strutture di dati

Alberi ed Alberi Binari di Ricerca

Un esempio di mutua ricorsione

Alberi binari e alberi binari di ricerca

Informatica 3. LEZIONE 27: Strutture ad albero avanzate. Modulo 1: Trie Modulo 2: Alberi bilanciati Modulo 3: Strutture dati spaziali

Algoritmo di ordinamento sul posto che ha tempo di esecuzione :

Alberi binari e alberi binari di ricerca

Valutazione delle prestazioni di programmi paralleli

La cancellazione in un AVL

In questa lezione. Costruire un max-heap. [CLRS01] cap. 6 par Prof. E. Fachini - Intr. Alg.

ADT Dizionario. Ordered search table. Supponiamo che sia definita una relazione d'ordine totale sulle chiavi del dizionario D:

Fondamenti teorici e programmazione

Alberi. CORDA Informatica. A. Ferrari. Testi da. Marco Bernardo Edoardo Bontà. Dispense del Corso di. Algoritmi e Strutture Dati

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

Tecniche di analisi degli algoritmi

Algoritmi e Strutture Dati

QuickSort Università degli Studi di Milano

Code a priorità. Progettazione di Algoritmi Matricole congrue a 1. Docente: Annalisa De Bonis

Algoritmi e Strutture Dati

Dizionari. Realizzazione con alberi binari di ricerca. Alberi rosso-neri. Ugo de' Liguoro - Algoritmi e Seprimentazioni 03/04 Lez.

Lezione 12 Tabelle Hash

Esame di Algoritmi e Strutture Dati Corso di Laurea in Ingegneria Informatica Canali A-L, M-Z

In questa lezione Alberi binari di ricerca: la cancellazione

Alberi. Se x è il genitore di y, allora y è un figlio di x. Un albero binario è un albero in cui ogni nodo ha al massimo due figli.

Alberi binari di ricerca

Alberi binari e alberi binari di ricerca

Introduzione agli algoritmi Prova di esame del 30/6/2016 Prof.sse E. Fachini - R. Petreschi

ALBERI : introduzione SOMMARIO ALBERI ALBERI. ALBERI: introduzione ALBERI BINARI: introduzione VISITE RICORSIVE DI ALBERI

ALBERI BINARI DI RICERCA

Esercizi su alberi binari

GLI ALBERI BINARI DI RICERCA. Cosimo Laneve

Il numero dei nodi al livello i è 1, per 0 i altezza L altezza h di un albero completamente sbilanciato con n nodi è h = n-1

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

Alberi Binari di Ricerca

alberi completamente sbilanciati

Algoritmi e Strutture di Dati

Prova di Algoritmi e s.d. (1o anno) 17 Settembre TESTO e RISPOSTE

Prova di Algoritmi e s.d. (1o anno) 7 Febbraio TESTO e RISPOSTE

Algoritmi e Strutture Dati

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

Gli heap. Sommario. Algoritmi e Programmazione Avanzata. Fulvio CORNO - Matteo SONZA REORDA Dip. Automatica e Informatica Politecnico di Torino

In questa lezione Alberi binari di ricerca

Esercizio Per quali valori di t l albero in figura è un B-Albero legale?

Strutture Merge-Find

carattere a b c d e f cod. var

Tecniche di analisi degli algoritmi

Laboratorio 26 Aprile 2012

Esercizi Capitolo 6 - Alberi binari di ricerca

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

ricerca di un elemento, verifica dell appartenenza di un elemento

ESERCIZI DI ALGORITMI E STRUTTURE DATI 2 Parte 2. Livio Colussi Dipartimento di Matematica Pura ed Applicata Università di Padova

Algoritmi e Strutture Dati

Informatica 3. Informatica 3. LEZIONE 27: Strutture ad albero avanzate. Lezione 27 - Modulo 1. Trie (1) Trie binario

Transcript:

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