Alberi Bilanciati di Ricerca

Dimensione: px
Iniziare la visualizzazioe della pagina:

Download "Alberi Bilanciati di Ricerca"

Transcript

1 Alberi Bilanciati di Ricerca Damiano Macedonio Uniersità Ca' Foscari di Venezia

2 Copyright 2009, 2010 Moreno Marzolla, Uniersità di Bologna ( 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 or send a letter to Creatie Commons, 543 Howard Street, 5th Floor, San Francisco, California, 94105, USA. Algoritmi e Strutture Dati 2

3 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

4 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: Georgy Maximoich Adelson-Velsky (1922 ) Algoritmi e Strutture Dati 4 Egenii Mikhailoich Landis ( )

5 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

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

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

8 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

9 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

10 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 = F h 2 F h 1 1 = F h 3 1 Algoritmi e Strutture Dati 10

11 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, n h =F h 3 1= h e possiamo quindi concludere che h= logn h Algoritmi e Strutture Dati 11

12 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

13 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 β() > 1 6 Algoritmi e Strutture Dati 13

14 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

15 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

16 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

17 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

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

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

20 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

21 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

22 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

23 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

24 Esempio: cancellazione con rotazioni a cascata Algoritmi e Strutture Dati 24

25 Applicare rotazione a sinistra su Algoritmi e Strutture Dati 25

26 Applicare rotazione a sinistra su Algoritmi e Strutture Dati 26

27 Albero ribilanciato Algoritmi e Strutture Dati 27

28 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

Alberi Binari di Ricerca

Alberi Binari di Ricerca Alberi Binari di Ricerca Damiano Macedonio Università Ca' Foscari di Venezia [email protected] Original work Copyright Alberto Montresor, University of Trento (http://www.dit.unitn.it/~montreso/asd/index.shtml)

Dettagli

Il problema dello zaino

Il problema dello zaino Il problema dello zaino (knapsack problem) Damiano Macedonio [email protected] Copyright 2010 2012 Moreno Marzolla, Università di Bologna (http://www.moreno.marzolla.name/teaching/asd2011b/) This work is licensed

Dettagli

Multi-way search trees

Multi-way search trees Multi-way search trees GT. 10.4 1 Argomenti Multi-way search trees Multi-way searching 9 (2,4) Trees 2 5 7 10 14 2 1 Alberi Binari di Ricerca Bilanciati n numero di chiavi (entry(key,elem)) AVL tree log(

Dettagli

Alberi binari di ricerca

Alberi binari di ricerca Alberi binari di ricerca Ilaria Castelli [email protected] Università degli Studi di Siena Dipartimento di Ingegneria dell Informazione A.A. 2009/20010 I. Castelli Alberi binari di ricerca, A.A. 2009/20010

Dettagli

Esercizi di Algoritmi e Strutture Dati

Esercizi di Algoritmi e Strutture Dati Esercizi di Algoritmi e Strutture Dati Moreno Marzolla [email protected] Ultimo aggiornamento: 29 novembre 2010 1 Rotazioni semplici in ABR Si consideri l operazione di rotazione semplice applicata

Dettagli

Alberto Montresor Università di Trento

Alberto Montresor Università di Trento !! Algoritmi e Strutture Dati! Capitolo 5 - Alberi!!! Alberto Montresor Università di Trento!! This work is licensed under the Creative Commons Attribution-NonCommercial-ShareAlike License. To view a copy

Dettagli

Algoritmi e Strutture Dati

Algoritmi e Strutture Dati Algoritmi e Strutture Dati Capitolo 5 - Alberi Alberto Montresor Università di Trento This work is licensed under the Creative Commons Attribution-NonCommercial-ShareAlike License. To view a copy of this

Dettagli

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.

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. 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 FB = -1 livello 1 FB = -1 livello 2 livello 3 L altezza è 3, il minimo si trova nel

Dettagli

Alberi Binari di Ricerca

Alberi Binari di Ricerca Alberi Binari di Ricerca Prof. G. M. Farinella [email protected] www.dmi.unict.it/farinella Riferimenti Bibliografici Cormen T.H., Leiserson C.E., Rivest R.L Introduction to Algorithms, Third Edition,

Dettagli

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

Alberi rosso-neri. Oltre ad essere alberi binari di ricerca, gli alberi rosso-neri soddisfano le seguenti proprietà: Alberi rosso-neri Gli alberi rosso-neri sono alberi binari di ricerca in cui le operaioni Insert e Delete sono opportunamente modificate in modo tale da garantire un altea dell albero h = O(log n). A tale

Dettagli

Algoritmi e Strutture Dati

Algoritmi e Strutture Dati Algoritmi e Strutture Dati Capitolo 8 Code con priorità: Heap binomiali Riepilogo Array non ord. Array ordinato Lista non ordinata Lista ordinata Find Min Insert Delete DelMin Incr. Key Decr. Key merge

Dettagli

Lezione 12 Tabelle Hash

Lezione 12 Tabelle Hash Lezione 12 Tabelle Hash Rossano Venturini [email protected] Pagina web del corso http://didawiki.cli.di.unipi.it/doku.php/informatica/all-b/start Esercizio 2 ABR: Visita Scrivere un programma che legga

Dettagli

In questa lezione Alberi binari di ricerca: la cancellazione

In questa lezione Alberi binari di ricerca: la cancellazione In questa leione Alberi binari di ricerca: la cancellaione 1 L algoritmo di Hibbard per cancellare (1962) Sia il nodo da cancellare: 1) è una foglia: si rimuove 2) ha un solo figlio x: si rende x figlio

Dettagli

Alberi binari e alberi binari di ricerca

Alberi binari e alberi binari di ricerca Alberi binari e alberi binari di ricerca Violetta Lonati Università degli studi di Milano Dipartimento di Scienze dell Informazione Laboratorio di algoritmi e strutture dati Corso di laurea in Informatica

Dettagli

Esercizi su alberi binari

Esercizi su alberi binari Esercizi su alberi binari Esercizi svolti: Determinazione nodi contenti verifica completezza verifica quasi completezza lunghezza del cammino interno determinazione ultima foglia in un quasi completo verifica

Dettagli

GLI ALBERI BINARI DI RICERCA. Cosimo Laneve

GLI ALBERI BINARI DI RICERCA. Cosimo Laneve GLI ALBERI BINARI DI RICERCA Cosimo Laneve argomenti 1. alberi binari di ricerca 2. la ricerca di elementi e la complessità computazionale 3. operazione di cancellazione di elementi 4. esempi/esercizi

Dettagli

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

Alberi rosso-neri. Le operazioni sugli alberi binari di ricerca hanno complessità proporzionale all altezza h dell albero. Alberi rosso-neri Le operazioni sugli alberi binari di ricerca hanno complessità proporzionale all altezza h dell albero. Gli alberi rosso-neri sono alberi binari di ricerca in cui le operazioni Insert

Dettagli

Alberi Binari di Ricerca

Alberi Binari di Ricerca Alberi Binari di Ricerca Algoritmi su gli alberi binari: visite Dato un puntatore alla radice di un albero vogliamo scandire in modo sistematico tutti i nodi di tale albero In una lista abbiamo una unica

Dettagli

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

Un albero completamente bilanciato o pieno (full) alberi completamente sbilanciati. Un albero binario completo alberi completamente sbilanciati Un albero completamente bilanciato o pieno (full) Definizione: Un albero è pieno se tutte le foglie sono sullo stesso livello e ogni nodo non foglia ha due figli. Il numero

Dettagli

Esercizi Capitolo 6 - Alberi binari di ricerca

Esercizi Capitolo 6 - Alberi binari di ricerca Esercizi Capitolo 6 - Alberi binari di ricerca Alberto Montresor 9 Agosto, 204 Alcuni degli esercizi che seguono sono associati alle rispettive soluzioni. Se il vostro lettore PDF lo consente, è possibile

Dettagli

Tabelle hash. Damiano Macedonio Università Ca' Foscari di Venezia. [email protected]

Tabelle hash. Damiano Macedonio Università Ca' Foscari di Venezia. mace@unive.it Tabelle hash Damiano Macedonio Università Ca' Foscari di Venezia [email protected] Original work Copyright Alberto Montresor, University of Trento (http://www.dit.unitn.it/~montreso/asd/index.shtml) Modifications

Dettagli