Algoritmi e Strutture Dati

Documenti analoghi
Alberi Bilanciati di Ricerca

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

Alberi binari di ricerca

Algoritmi e Strutture Dati

Heap e code di priorità

INDICI PER FILE. Accesso secondario. Strutture ausiliarie di accesso

Alberi ed Alberi Binari

Alberi di ricerca binari

LE STRUTTURE DATI DINAMICHE: GLI ALBERI. Cosimo Laneve

Algoritmi e Strutture Dati

Alberi binari. Ilaria Castelli A.A. 2009/2010. Università degli Studi di Siena Dipartimento di Ingegneria dell Informazione

Il tipo astratto coda con priorità: specifiche sintattiche e semantiche. Realizzazioni.

Alberi e alberi binari I Un albero è un caso particolare di grafo

Dati e Algoritmi I (Pietracaprina) Esercizi sugli Alberi

Note per la Lezione 4 Ugo Vaccaro

Esempio: rappresentare gli insiemi

TRIE (albero digitale di ricerca)

Indici multilivello dinamici (B-alberi e B + -alberi) Alberi di ricerca - 1. Un esempio. Alberi di ricerca - 3. Alberi di ricerca - 2

Strutture di accesso ai dati: B + -tree

I B+ Alberi. Sommario

Alberi Binari di Ricerca

Tempo e spazio di calcolo (continua)

Esercitazione 6. Alberi binari di ricerca

Algoritmi e Strutture Dati

Alberi binari e alberi binari di ricerca

FILE E INDICI Architettura DBMS

Union-find. Insiemi disgiunti. F. Damiani - Alg. & Lab. 04/05 (da C. Demetrescu et al - McGraw-Hill)

Linguaggio C. Problemi di Ricerca e Ordinamento: Algoritmi e Complessità.

Esercizi di Algoritmi e Strutture Dati

Alberi. Gli alberi sono una generalizzazione delle liste che consente di modellare delle strutture gerarchiche come questa: Largo. Fosco.

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

Alberi di copertura. Mauro Passacantando. Dipartimento di Informatica Largo B. Pontecorvo 3, Pisa

Algoritmi e Strutture Dati

Linguaggi e Grammatiche Liberi da Contesto

Algoritmi e strutture dati

Esercizi per il corso di. Logistica I. a.a Daniela Favaretto. Dipartimento di Matematica Applicata Università Ca Foscari di Venezia

Linguaggi di Programmazione Corso C. Parte n.3 Linguaggi Liberi da Contesto e Linguaggi Contestuali. Nicola Fanizzi

Algoritmi (9 CFU) (A.A ) Heap e Algoritmo HeapSort. Prof. V. Cutello Algoritmi 1

Algoritmi e Principi dell'informatica Seconda Prova in Itinere - 14 Febbraio 2014

Algoritmi e Strutture Dati. HeapSort

Gara Matematica. Dipartimento di Matematica Ulisse Dini. Viale Morgagni 67/a Firenze. Soluzioni edizione 2011

Lezione 4. Problemi trattabili e soluzioni sempre più efficienti. Gianluca Rossi

GRAFI. fig.1 - GRAFI (1) Si avvisa il lettore che certe definizioni che verranno date differiscono da quelle presenti in letteratura.

ADT Coda con priorità

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

Informatica 3. LEZIONE 23: Indicizzazione. Modulo 1: Indicizzazione lineare, ISAM e ad albero Modulo 2: 2-3 trees, B-trees e B + -trees

Esercizi Capitolo 10 - Code con priorità e insiemi disgiunti

Esercizi Capitolo 6 - Alberi binari di ricerca

Esercizi di Matematica per la prova di ammissione alla Scuola Galileiana /16

Grammatiche. Grammatiche libere da contesto Grammatiche regolari Potenza delle grammatiche libere e regolari Struttura di frase: Alberi di derivazione

Sistemi lineari. Lorenzo Pareschi. Dipartimento di Matematica & Facoltá di Architettura Universitá di Ferrara

Tracce. 1. Data una lista di elementi di tipo intero, implementare in C++ le seguenti funzioni

Algoritmi e Strutture Dati

Lena Cota Guido Corso di Informatica - II livello. Excel 2003 Formule. Imparare a usare le formule con la pratica

Il principio di Induzione Matematica

Laboratorio di Algoritmi e Strutture Dati II Semestre 2005/2006. Riassunto sui dizionari

Basi di Dati e Sistemi Informativi. Organizzazione fisica dei dati. Corso di Laurea in Ing. Informatica Ing. Gestionale Magistrale

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

Verificare se un albero binario è bilanciato

Esempio : i numeri di Fibonacci

4 0 = 4 2 = 4 4 = 4 6 = 0.

Progettazione di Algoritmi

Esercizi sul Principio d Induzione

Appunti del corso di Informatica 1 (IN110 Fondamenti) 7 Grafi e alberi: introduzione

2.3 Cammini ottimi. E. Amaldi Fondamenti di R.O. Politecnico di Milano 1

Algoritmi di ricerca. Per ricerca si intende qui il procedimento di localizzare una particolare informazione in un elenco di dati.

Introduzione. Il routing permette la comunicazione tra due nodi differenti anche se non sono collegati direttamente

Progettazione di Algoritmi

ANALISI MATEMATICA PER IL CdL IN INFORMATICA ESERCIZI SULLE DISEQUAZIONI

Esercizi di Algoritmi e Strutture Dati

GARA DI MATEMATICA ON-LINE (9/11/2015)

Analisi ammortizzata (Tarjan in 1985)

alberi binari di ricerca (BST)

Algoritmi e Strutture Dati

Algoritmi e Strutture Dati

alberi binari e ricorsione

ORDINE DI INSERIMENTO DELLE CHIAVI <35 >35

T 1 =1. n 6 n. T n =3 T. Esercizio 1 (6 punti)

1 Funzioni reali di una variabile reale

Alberi. Definizioni principali

Alberi auto-aggiustanti

Macchine RAM. API a.a. 2013/2014 Gennaio 27, 2014 Flavio Mutti, PhD

Algoritmi e Strutture Dati

04 - Numeri Complessi

Ricerca Operativa. G. Liuzzi. Lunedí 20 Aprile 2015

5. Strutture di indici per file

ESPONENZIALI E LOGARITMI. chiameremo logaritmica (e si legge il logaritmo in base a di c è uguale a b ).

Albero di Riscorsione

Algoritmi e Strutture Dati - Prof. Roberto De Prisco A.A Seconda prova di verifica (4 Febbraio 2005)

Ancora sui criteri di divisibilità di Marco Bono

Corso di Matematica per la Chimica

Funzioni Pari e Dispari

Corso di Geometria BIAR, BSIR Esercizi 2: soluzioni

Esercitazioni di Algoritmi e Strutture Dati

Elettronica I Amplificatore operazionale ideale; retroazione; stabilità

MANUALE REGISTRO ELETTRONICO DOCENTI ANNO SCOLASTICO 2014/2015 I.T.E. SCARPELLINI - FOLIGNO

Laboratorio di Algoritmi e Strutture Dati

3 Omotetie del piano. 4 Omotetie del piano. Fondamenti e didattica della matematica B. Geometria delle similitudini. k = 3.

Funzioni implicite - Esercizi svolti

ALBERI DI RICERCA BINARI (O ALBERI BINARI DI RICERCA)

Transcript:

Alberi AVL Maria Rita Di Berardini, Emanuela Merelli 1 1 Dipartimento di Matematica e Informatica Università di Camerino A.A. 26/7

Alberi AVL Definizione (bilanciamento in altezza): un albero è bilanciato in altezza se le altezze dei sottoalberi sinistro e destro di ogni suo nodo differiscono al più di uno Gli alberi AVL sono alberi binari di ricerca bilanciati in altezza AVL (Adelson-Velskii e Landis) Definizione (fattore di bilanciamento): il fattore di bilanciamento β(v) di un nodo v è la differenza tra l altezza del suo sottoalbero sinistro e quella del suo sottoalbero destro β(v) = altezza[left[v]] altezza[right[v]]

Alberi AVL Il fattore di bilanciamento è tanto migliore quanto più piccolo è il suo valore assoluto alberi completi: il fattore di bilanciamento di ogni nodo è alberi bilanciati (alberi AVL): β(v) 1 per ogni nodo v alberi degenerati in una lista: il fattore di bilanciamento è pari altezza dell albero (n 1 dove n è il numero di nodi dell albero) Definizione (bilanciamento in altezza) alternativa: un albero è bilanciato in altezza se, per ogni nodo v, β(v) 1

Altezza di un albero AVL Alberi bilanciati (e quindi alberi AVL) sono particolarmente adatti per realizzare efficienti strutture di tipo dizionario (insiemi dinamici su cui eseguiamo inserimenti, cancellazioni e ricerche) L altezza h di un albero T bilanciato è logaritmica nel numero di nodi n, ossia h = Θ(log 2 n) Nota 1: n 2 h+1 1, cioè del numero di nodi di un albero binario completo di altezza h (fornisce un limite inferiore al valore di h) Nota 2: n N(h), dove N(h) denota il minimo numero di nodi che un albero bilanciato di altezza h deve avere (fornisce un limite superiore al valore di h)

Altezza di un albero AVL Nota 1: n 2 h+1 1, ossia del numero di nodi di un albero binario completo di altezza h n 2 h+1 1 = n + 1 2 h+1 = log 2 (n + 1) h + 1 e quindi h log 2 (n + 1) 1

Altezza di un albero AVL Nota 2: n N(h), dove N(h) denota il minimo numero di nodi che un albero bilanciato di altezza h deve avere Quanto vale N(h) al variare di h? Dobbiamo identificare la struttura di tutti i possibili alberi bilanciati di altezza h con minino numero di nodi (questi alberi vengono detti alberi di Fibonacci) Nel seguito indichiamo con T h un albero di Fibonacci di altezza h

Altezza di un albero AVL altezza Possibili strutture di T h N(h) 1 1 2 2 4 h T T h-1 h-2 T h-2 T h-1 1 + N(h-1) + N(h-2)

Altezza di un albero AVL Ricapitolando... 1 + N(h 1) + N(h 2) se h 2 N(h) = 1 se h = 2 se h = 1 Ricorda molto da vicino i...

Altezza di un albero AVL Ricapitolando... 1 + N(h 1) + N(h 2) se h 2 N(h) = 1 se h = 2 se h = 1 Ricorda molto da vicino i... numeri di Fibonacci { F (n 1) + F (n 2) se n 3 F (n) = 1 se n = 1, 2 Possiamo dimostrare (per induzione su h ) che N(h) = F (h + 3) 1

Altezza di un albero AVL Possiamo dimostrare (per induzione su h ) che N(h) = F (h + 3) 1 Caso Base h = : N(h) = 1 = 2 1 = F (3) 1 h = 1: N(h) = 2 = 3 1 = F (4) 1 Passo induttivo sia h > 1. Allora: N(h) = N(h 1) + N(h 2) + 1 per ip. ind. = (F (h 1 + 3) 1) + (F (h 2 + 3) 1) + 1 = F (h + 2) + F (h + 1) 1 per la def. di F = F (h + 3) 1

Altezza di un albero AVL Posto φ = 1+ 2 1.618 e ˆφ = 1 2.618 abbiamo che Quindi F (n) = 1 ( φ n ˆφ n) N(h) = 1 ( φ h+3 ( ˆφ) h+3) 1 = 1 φ h+3 1 ( ˆφ) h+3 1

Altezza di un albero AVL Distinguiamo i seguenti casi h pari e h + 3 dispari: h dispari e h + 3 pari: 1 ( ˆφ) h+3 = 1 (, 618) h+3 1 1 ( ˆφ) h+3 = 1 (, 618) h+3 1 (1) h+3 = 1 1 Possiamo concludere che N(h) = 1 φ h+3 1 ( ˆφ) h+3 1 1 φ h+3 2

Altezza di un albero AVL Sia T una albero binario di altezza h ed n il numero dei suoi nodi; Allora: n N(h) 1 φ h+3 2 e quindi n + 2 1 φ h+3 log 2 (n + 2) log 2 ( 1 φ h+3 ) log ab = log a + log b = log 2 ( 1 ) + log 2 (φ h+3 ) log a k = k log a = log 2 ( 1 ) + (h + 3) log 2 (φ) = log 2 ( 1 ) + h log 2 (φ) + 3 log 2 (φ) k log a = log a k = h log 2 (φ) + log 2 ( 1 ) + log 2 (φ 3 ) log a + log b = log ab = h log 2 (φ) + log 2 ( 1 φ 3 )

Altezza di un albero AVL Ora: log 2 (n + 2) h log 2 (φ) + log 2 ( 1 φ 3 ) implica h log 2 (φ) log 2 (n + 2) log 2 ( 1 φ 3 ) Infine, poichè φ = 1+ 2 > 1 implica log 2 φ >, abbiamo dove a = 1 log 2 (φ) e b = log 2 ( 1 h a log 2 (n + 2) + b φ 3 ) log 2 (φ)

Rotazioni Alberi AVL Abbiamo visto come alberi binari di ricerca bilanciati consentono la ricerca di un dato elemento in un tempo logaritmico Problema: l inserimento o la cancellazione di un nodo potrebbero far perdere il bilanciamento di un albero AVL È indispensabile mantenere il bilanciamento dell albero anche se si inseriscono o si cancellano elementi Il bilanciamento deve essere ripristinato mediante delle opportune operazioni sui nodi che prendono il nome di

Rotazioni di base Alberi AVL Esistono quattro tipi di di base (semplici): SS: inserimento a sinistra nel sottoalbero sinistro SD: inserimento a destra nel sottoalbero sinistro DD: inserimento a destra nel sottoalbero destro DS: inserimento a sinistra nel sottoalbero destro Queste consistono nel portare l elemento intermedio alla radice e nel far ridiscendere il nodo che causa lo sbilanciamento

Rotazioni di base Alberi AVL Caso semplice: il bilanciamento è perso a seguito dell inserimento di un nodo in un albero costituito da due soli nodi G +1 +2 G G +1 E E E A A G a) albero bilanciato b) inserimento a sinistra del sottoalbero sinistro (sbilanciamento) c) Rotazione SS

Rotazioni di base Alberi AVL +1 G +2 G F E +1 E F E F G a) albero bilanciato b) inserimento a destra del sottoalbero sinistro (sbilanciamento) c) Rotazione SD

Rotazioni di base Alberi AVL Si possono eliminare eventuali sbilanciamenti simmetrici usando le DD e DS C -1 C -2 C D D -1 E C D E a) albero bilanciato b) inserimento a destra del sottoalbero destro (sbilanciamento) c) Rotazione DD

Rotazioni di base Alberi AVL C -1 C -2 D E E +1 C E D D a) albero bilanciato b) inserimento a sinistra del sottoalbero destro (sbilanciamento) c) Rotazione DS

In generale... Alberi AVL Lo sbilanciamento (ed il conseguente ribilanciamento) si possono verificare alla radice di un sottoalbero di un albero più grande G +1 G +2 E h S1 E S2 S3 h h +1 S1 E S2 S3 S1 S2 G S3 a) albero bilanciato b) inserimento di (sbilanciamento) c) Rotazione SS

C +1 C +1 h S1 A S21 B A h S2 +1 h - 1 S1 S22 S21 S22 B S2 B A C -1 S1 S21 S22 S2

C +1 C + 2 h S1 A S21 B S22 h- 1 S2 h +1 A B S1 S21 S22 S2 B +1 A C S1 S21 S22 S2

Inserimento di un elemento in un albero AVL (1) con il solito metodo di ricerca localizziamo la posizione in cui inserire il nuovo elemento; durante tale operazione memorizzato il puntatore al più basso nodo v il cui fattore di bilanciamento è -1 o +1 (2) viene effettuato l inserimento (3) vengono aggiornati i fattori di bilanciamento dei nodi lungo il percorso tra il nodo appena inserito e v; tutti i nodi lungo questo percorso avevano un fattore di bilanciamento e vengono portati a +1 o -1; l unico nodo che potrebbe registrare uno sbilanciamento è proprio v (nodo critico)

Inserimento di un elemento in un albero AVL (4) se il fattore di bilanciamento di v è +1 (-1) ed il nodo è stato inserito nel sottoalbero destro (sinistro) il sottoalbero con radice v è automaticamente bilanciato; in caso contrario, il sottoalbero è sbilanciato ed richiede un ribilanciamento () viene determinata ed effettuata la rotazione necessaria Tutti questi passi, comprese, interessano solo i nodi lungo il cammino dalla radice alla nuova foglia inserita Il costo dell inserimento di un elemento è proporzionale all altezza dell albero e, poichè l albero viene mantenuto bilanciato, tale costo è logaritmico

Cancellazione di un elemento in un albero AVL (1) si effettua la cancellazione di un elemento come descritto dall algoritmo Tree-Delete (2) si ricalcolano i fattori di bilanciamento mutati in seguito alla cancellazione; osserviamo che i sol fattori di bilanciamento che possono cambiare sono quelli dei nodi lungo il cammino dalla radice al nodo eliminato e che questi possono essere ricalcolati risalendo l albero dal basso verso l alto (3) eseguiamo una rotazione per ogni nodo il cui fattore di bilanciamento è ±2

Cancellazione di un elemento in un albero AVL 3-1 3-2 +1 2-1 2-1 1 4 6-1 4 6-1 7 7 4 4-1 +1 3 6 +1 3-2 2 7 2 6-1 7