Algoritmi e Strutture Dati

Documenti analoghi
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

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

Alberi Bilanciati di Ricerca

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

Algoritmi e Strutture Dati

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

Algoritmi e Strutture Dati

ABR di altezza logaritmica

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

dizionari alberi bilanciati

Alberi binari: definizione e alcune proprietà

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

Alberi binari. Alberi binari di ricerca

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

Alberi binari di ricerca

Algoritmi e Strutture Dati

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

Dipartimento di Elettronica, Informazione e Bioingegneria API 2013/4

Albero binario. Alberi binari (introduzione) Terminologia. Alberi di ricerca binaria (BST)

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 completamente sbilanciati

Algoritmi e Strutture Dati

Alberi Rosso-Neri: definizione

Algoritmi e Strutture Dati. Capitolo 6 Il problema del dizionario

Alberi binari di ricerca

Algoritmi e Strutture Dati

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

Alberi Binari di Ricerca e Alberi Rosso-Neri

Gianpiero Cabodi e Paolo Camurati Dip. Automatica e Informatica Politecnico di Torino. Prestazioni dei BST

Un esempio di mutua ricorsione

Algoritmi e strutture dati

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

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

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

K-d-tree A L B E R T O B E L U S S I A N N O A C C A D E M I C O

Fondamenti teorici e programmazione

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

Università degli Studi di Camerino Laurea in Informatica Prima Prova Parziale del corso di Algoritmi e Strutture Dati

K-d-tree ALBERTO BELUSSI ANNO ACCADEMICO Caratteristiche di base

Università degli Studi di L Aquila Facoltà di Scienze M.F.N. Corso di Laurea in Informatica. Modulo di Laboratorio di Algoritmi e Strutture Dati

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

Moltiplicazione veloce di interi

Esercizi BST - AVL. E. Fachini

Algoritmi e strutture dati 16 Dicembre 2004 Canali A L e M Z Cognome Nome Matricola

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

In questa lezione Alberi binari di ricerca: la cancellazione

Algoritmi e Strutture Dati

GLI ALBERI BINARI DI RICERCA. Cosimo Laneve

Algoritmi e Strutture Dati & Laboratorio di Algoritmi e Programmazione

Heap e code di priorità

Algoritmi, Strutture Dati e Programmi. UD 3.d: Strutture Dati Dinamiche Alberi

Alberi ed Alberi Binari

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

INDICI PER FILE. Accesso secondario. Strutture ausiliarie di accesso

Informatica 3. Informatica 3. LEZIONE 23: Indicizzazione. Lezione 23 - Modulo 1. Indicizzazione. Introduzione. Indicizzazione:

Corso di Programmazione

Algoritmi e Strutture di Dati

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

23/10/2016. gli alberi. alcune definizioni. un esempio. LABORATORIO DI PROGRAMMAZIONE 2 Corso di laurea in matematica.

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

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

La cancellazione in un AVL

Alberi binari. Alberi Albero binario Heap tree

algoritmi e strutture di dati

Alberi ed Alberi Binari di Ricerca

Algoritmi e Strutture Dati

Algoritmi e Strutture Dati. Alberi binari di ricerca

Algoritmi e Strutture Dati

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

Tipi di indice. Indici. Leggere sezioni 13.1, 13.2 e 13.3 di Garcia- Molina et al. Tipi di strutture ad indice. ISAM: Indici primari

Divide et impera su alberi

Algoritmi e Strutture Dati

Algoritmo di ordinamento sul posto che ha tempo di esecuzione :

Dati e Algoritmi I (Pietracaprina) Esercizi sugli Alberi

Cognome e Nome: Numero di Matricola: Spazio riservato alla correzione totale /5 /6 /4 /25 /15 /20 /25 /100

Alberi di ricerca binari

1. ORGANIZZAZIONE AD ALBERO_B

LE STRUTTURE DATI DINAMICHE: GLI ALBERI. Cosimo Laneve

Strutture di accesso ai dati: B + -tree

Databases. Architettura di un DBMS: Struttura ad indice per i files, B + -Trees

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

Esercizi su alberi binari

Strutture dati Alberi binari

Algoritmi e Strutture Dati. Capitolo 3 Strutture dati elementari

Laboratorio 26 Aprile 2012

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

TRIE (albero digitale di ricerca)

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

ALBERI BINARI DI RICERCA

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

Algoritmi e Strutture di Dati

Algoritmi e Strutture Dati

Transcript:

Maria Rita Di Berardini, Emanuela Merelli Scuola di Scienze e Tecnologie Università di Camerino

Definizione (bilanciamento in altezza): un albero è bilanciato in altezza se le altezze dei sottoalberi sinistro e destro di ogni suo nodo di eriscono 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) diunnodov è l a d i erenza tra l altezza del suo sottoalbero sinistro e quella del suo sottoalbero destro (v) =altezza[left[v]] altezza[right[v]]

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) apple 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) apple 1

Altezza di un albero AVL Alberi bilanciati (e quindi alberi AVL) sono particolarmente adatti per realizzare e cienti 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 apple 2 h+1 1,cioèdelnumerodinodidiunalberobinario 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 apple 2 h+1 1, ossia del numero di nodi di un albero binario completo di altezza h n apple 2 h+1 1=) n +1apple 2 h+1 =) log 2 (n +1)apple h +1 equindi h log 2 (n +1) 1

Altezza di un albero AVL Nota 2: n N(h), dove N(h) denotailminimo numero di nodi che un albero bilanciato di altezza h deve avere Quanto vale N(h) alvariaredih? 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... 8 >< 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... 8 >< 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+p 2 1.618 e ˆ = 1 p 2.618 abbiamo che F (n) = 1 p n ˆn Quindi N(h) = 1 p h+3 ( ˆ) h+3 1= 1 p h+3 1 p ( ˆ) h+3 1

Altezza di un albero AVL Distinguiamo i seguenti casi h pari e h +3dispari: 1 p ( ˆ) h+3 = p 1 (, 618) h+3 1 h dispari e h +3pari: 1 p ( ˆ) h+3 = 1 p (, 618) h+3 1 p (1) h+3 = 1 p 1 Possiamo concludere che N(h) = 1 p h+3 1 p ( ˆ) h+3 1 1 p 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 p h+3 2 equindi n +2 1 p h+3 log 2 (n +2) log 2 ( p 1 h+3 ) log ab =loga +logb = log 2 ( p 1 )+log 2 ( h+3 ) log a k = k log a = log 2 ( p 1 )+(h +3)log 2 ( ) = log 2 ( p 1 )+hlog 2 ( )+3log 2 ( ) k log a =loga k = h log 2 ( )+log 2 ( p 1 )+log 2 ( 3 ) log a +logb =logab = h log 2 ( )+log 2 ( p 1 3 )

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

Rotazioni 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 Èindispensabilemantenereilbilanciamentodell alberoanchesesi inseriscono o si cancellano elementi Il bilanciamento deve essere ripristinato mediante delle opportune operazioni sui nodi che prendono il nome di

Rotazioni di base 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 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 +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 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 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... 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 e ettuato 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 e ettuata 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 e ettua 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