Alberi auto-aggiustanti

Documenti analoghi
Algoritmi e Strutture Dati

Alberi binari di ricerca

Algoritmi e Strutture Dati & Laboratorio di Algoritmi e Programmazione

Esercizi Capitolo 6 - Alberi binari di ricerca

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

Per lo svolgimento del corso risulta particolarmente utile considerare l insieme

Programmazione dinamica

Il principio di induzione e i numeri naturali.

Algoritmi e strutture dati. Codici di Huffman

2 FUNZIONI REALI DI VARIABILE REALE

LEZIONE 7. Esercizio 7.1. Quale delle seguenti funzioni è decrescente in ( 3, 0) e ha derivata prima in 3 che vale 0? x x2. 2, x3 +2x +3.

Usando il pendolo reversibile di Kater

La struttura dati ad albero binario

Esponenziali elogaritmi

FUNZIONI ELEMENTARI - ESERCIZI SVOLTI

MATEMATICA DEL DISCRETO elementi di teoria dei grafi. anno acc. 2009/2010

10. Insiemi non misurabili secondo Lebesgue.

Descrizione di un algoritmo

B+Trees. Introduzione

Fondamenti dell Informatica Ricorsione e Iterazione Simona Ronchi Della Rocca (dal testo: Kfoury, Moll and Arbib, cap.5.2)

Note su quicksort per ASD (DRAFT)

Una ricetta per il calcolo dell asintoto obliquo. Se f(x) è asintotica a mx+q allora abbiamo f(x) mx q = o(1), da cui (dividendo per x) + o(1), m =

WoWords. Guida all uso: creare ed utilizzare le frasi. In questa guida è descritto come creare ed utilizzare le frasi nel software WoWords.

Indice. 1 Introduzione alle Equazioni Differenziali Esempio introduttivo Nomenclatura e Teoremi di Esistenza ed Unicità...

Proof. Dimostrazione per assurdo. Consideriamo l insieme complementare di P nell insieme

Dimensione di uno Spazio vettoriale

Politecnico di Milano. Facoltà di Ingegneria Industriale. Corso di Analisi e Geometria 2. Sezione D-G. (Docente: Federico Lastaria).

APPUNTI DI MATEMATICA LE FRAZIONI ALGEBRICHE ALESSANDRO BOCCONI

4 3 4 = 4 x x x 10 0 aaa

Alberi binari di ricerca

~ Copyright Ripetizionando - All rights reserved ~ STUDIO DI FUNZIONE

Funzioni. Parte prima. Daniele Serra

Algoritmi e Strutture Dati

Corrispondenze e funzioni

B-Tree. Struttura dati usata in applicazioni che necessitano di gestire insiemi di chiavi ordinate Una variante (B+-Tree) è diffusa in:

Soluzioni del giornalino n. 16

Guida all uso di Java Diagrammi ER

LE SUCCESSIONI 1. COS E UNA SUCCESSIONE

Protocollo di tracciamento e valutazione degli studenti dei corsi di italiano ICoNLingua A.A

2 - Modifica Annulla Selezione finestra. S.C.S. - survey CAD system FIGURA 2.1

Procedura di iscrizione alla Piattaforma On Line

Sono casi particolari di MCF : SPT (cammini minimi) non vi sono vincoli di capacità superiore (solo x ij > 0) (i, j) A : c ij, costo di percorrenza

f(x) = 1 x. Il dominio di questa funzione è il sottoinsieme proprio di R dato da

E possibile modificare la lingua dei testi dell interfaccia utente, se in inglese o in italiano, dal menu [Tools

MANUALE ESSE3 Gestione Registro delle lezioni

Introduzione agli Algoritmi Genetici Prof. Beatrice Lazzerini

Vademecum studio funzione

GUIDA RAPIDA PER LA COMPILAZIONE DELLA SCHEDA CCNL GUIDA RAPIDA PER LA COMPILAZIONE DELLA SCHEDA CCNL

MANUALE PARCELLA FACILE PLUS INDICE

SISTEMI DI NUMERAZIONE E CODICI

Matematica generale CTF

Semantica Assiomatica

Prof. Giuseppe Chiumeo. Avete già studiato che qualsiasi algoritmo appropriato può essere scritto utilizzando soltanto tre strutture di base:

SW Legge 28/98 Sommario

4.1 Modelli di calcolo analisi asintotica e ricorrenze

Introduzione Ordini parziali e Reticoli Punti fissi

Excel. A cura di Luigi Labonia. luigi.lab@libero.it

Trasformazioni Geometriche 1 Roberto Petroni, 2011

1. PRIME PROPRIETÀ 2

il servizio web per le comunicazioni scuola famiglia Descrizione generale del prodotto

PROVA FINALE V. AULETTA G. PERSIANO ALGORITMI II - -MAGIS INFO

I TUTORI. I tutori vanno creati la prima volta seguendo esclusivamente le procedure sotto descritte.

1- OBIETTIVI DEL DOCUMENTO 2- INTRODUZIONE

Capitolo 5. Funzioni. Grafici.

3 GRAFICI DI FUNZIONI

2 - Modifica Annulla ANNULLA TOPOGRAFICO ANNULLA TOPOGRAFICO MULTIPLO FIGURA 2.1

19. Inclusioni tra spazi L p.

Anno 4 Grafico di funzione

Manuale Operativo per la Compilazione dei Questionari di Valutazione della Didattica

I sistemi di numerazione

CONTINUITÀ E DERIVABILITÀ Esercizi proposti. 1. Determinare lim M(sinx) (M(t) denota la mantissa di t)

Parte 6. Applicazioni lineari

Guida Compilazione Piani di Studio on-line

Lezione 5: Gli investimenti e la scheda IS

Anno 5 4. Funzioni reali: il dominio

L analisi dei dati. Capitolo Il foglio elettronico

Aprire WEKA Explorer Caricare il file circletrain.arff Selezionare random split al 66% come modalità di test Selezionare J48 come classificatore e

Metodi e Modelli per l Ottimizzazione Combinatoria Il problema del flusso di costo minimo

REGOLE PER L ESAME (agg.te settembre 2015)

CRITERI DI CONVERGENZA PER LE SERIE. lim a n = 0. (1) s n+1 = s n + a n+1. (2) CRITERI PER LE SERIE A TERMINI NON NEGATIVI

MODELLISTICA DI IMPIANTI E SISTEMI 2

I motori di ricerca. Che cosa sono. Stefania Marrara Corso di Sistemi Informativi

Il controllo della visualizzazione

Dispense di Informatica per l ITG Valadier

FUNZIONE ESPONENZIALE E FUNZIONE LOGARITMICA

G. Pareschi ALGEBRE DI BOOLE. 1. Algebre di Boole

1 Giochi a due, con informazione perfetta e somma zero

Indice. 1 Il settore reale

Corso di Informatica Generale (C. L. Economia e Commercio) Ing. Valerio Lacagnina Rappresentazione in virgola mobile

Daniela Lera A.A

Lezioni di Matematica 1 - I modulo

GUIDA AL CALCOLO DEI COSTI DELLE ATTIVITA DI RICERCA DOCUMENTALE

Pagina Personale Docente. Guida Utente. Progetto DISCITE

Convertitori numerici in Excel

Plate Locator Riconoscimento Automatico di Targhe

risulta (x) = 1 se x < 0.

Ricerca non informata in uno spazio di stati

Computational Game Theory

ESERCIZI DI MATEMATICA FINANZIARIA DIPARTIMENTO DI ECONOMIA E MANAGEMENT UNIFE A.A. 2015/ Esercizi: lezione 03/11/2015

APPUNTI SU PROBLEMI CON CALCOLO PERCENTUALE

Transcript:

Alberi auto-aggiustanti Dispensa didattica per il corso di Algoritmi e Strutture Dati a.a. 2007/2008 ver. 1.3 Ing. Claudio Mazzariello, Prof. Carlo Sansone 27 Maggio 2008 A differenza di altre possibili realizzazioni di alberi binari di ricerca, gli alberi auto-aggiustanti (splay trees) [1] non necessitano di alcuna condizione esplicita di bilanciamento. L idea fondamentale degli splay trees è che l albero viene automaticamente riaggiustato ogni volta che si esegue su di esso una qualunque operazione: in particolare, l elemento cui si accede viene fatto risalire alla radice ed i sottoalberi incontrati lungo il cammino sono riposizionati tramite opportune rotazioni. Mostreremo come, mediante tali rotazioni, si riesca ad ottenere dei tempi di esecuzione ammortizzati di tipo logaritmico su una sequenza di n operazioni. Si noti che, dal momento che gli elementi cui si accede più di frequente si muovono verso la radice, ad essi si potrà accedere in media più rapidamente rispetto ad altri tipi di alberi binari di ricerca; questo è un indubbio vantaggio in molte applicazioni pratiche. 1 L operazione splay La strategia di ristrutturazione proposta da Sleator e Tarjan è anche nota come operazione splay. Lo splay di un nodo x consiste nel partire da x e farlo risalire fino alla radice dell albero eseguendo una sequenza di rotazioni. Per brevità, denoteremo con p[x] il padre di x nell albero. Chiameremo inoltre nonno di x, e lo indicheremo con p 2 [x] = p[p[x]], il padre di p[x]. In ciascun passo di splay, la rotazione da eseguire viene scelta come segue: (i) se x è figlio della radice, ruotiamo su p[x] (Figura 1); (ii) se x ha un nonno, p 2 [x], ed x e p[x] sono entrambi figlio destri o sinistri del proprio genitore, ruotiamo prima su p 2 [x] e poi su p[x] (Figura 2); (iii) se x ha un nonno, p 2 [x], ed x è figlio sinistro/destro mentre p[x] è figlio destro/sinistro del proprio genitore, ruotiamo prima su p[x] e poi sul nuovo padre di x (ovvero su p 2 [x] prima della rotazione) (Figura 3). Ciascun passo che costituisce l operazione di splay richiede tempo O(1). L effetto della strategia di ristrutturazione splay è quello di far risalire x alla radice, riarrangiando i sottoalberi incotrati lungo il cammino. Per rendere un albero binario di ricerca auto-aggiustante, eseguiamo l operazione splay in corrispondenza di ciascuna operazione di accesso o di modifica dell albero. In particolare: 1

Figura 1: Operazione di splay sul nodo x caso (i) dopo aver cercato una chiave, eseguiamo uno splay sul nodo che contiene la chiave, o sulla foglia su cui la ricerca è terminata, a meno che l albero non sia vuoto, nel qual caso non viene ovviamente compiuta alcuna operazione; SplayTree-Search(T, k) 1 x root[t ] 2 while x nil and k key[x] 3 do last x 4 if k < key[x] 5 then x left[x] 6 else x right[x] 7 if x nil 8 then splay(t, x) 9 else if root[t ] nil 10 then splay(t, last) 11 return x dopo aver inserito un elemento, eseguiamo sempre uno splay sul nuovo nodo che contiene l elemento; SplayTree-Insert(T, z) 1 Tree-Insert(T, z) 2 splay(t, z) Figura 2: Operazione di splay sul nodo x caso (ii) 2

Figura 3: Operazione di splay sul nodo x caso (iii) dopo aver eliminato un nodo y, eseguiamo uno splay sul padre di y appena prima dell eliminazione, a meno che y non fosse la radice dell albero prima della sua eliminazione (e quindi abbia nil come padre). SplayTree-Delete(T, z) 1 y Tree-Delete(T, z) 2 if p[y] nil 3 then splay(t, p[y]) 4 return y Per lo pseudocodice delle funzioni Tree-Insert(T, z) Tree-Delete(T, z) riferirsi a [2]. In ciascun caso, il costo dell operazione è proporzionale alla lunghezza del cammino su cui lo splay procede. 2 Analisi basata sul potenziale Mostreremo ora che il costo ammortizzato di una operazione di splay è O(lg n); utilizzeremo a tale scopo il metodo del potenziale. Definizione 1. Sia T uno splay tree. Per ogni nodo x, sia d(x) il numero di discendenti di x, incluso se stesso. Definiamo rango di x il valore r(x) = lg d(x) e la funzione potenziale come Φ(T ) = x T r(x) (1) È facile verificare che più l albero è bilanciato, più basso è il valore del potenziale Φ(T ). Notiamo inoltre che un albero con un solo nodo ha un valore del potenziale pari a 0. Se consideriamo quindi di inziare una sequenza di operazioni di insert search e delete a partire da un albero T 0 con un sol nodo, avremo Φ(T 0 ) = 0. Dal momento che non chiamiamo mai la funzione splay su di un albero vuoto, non sarà mai possibile avere un valore di Φ(T i ) minore di 0, quindi Φ(T i ) Φ(T 0 ) e possiamo usare la (1) per calcolare i costi ammortizzati. 3

Lemma 1. Sia x un nodo in un albero, con figli y e z. Allora r(x) > 1 + min{r(y), r(z)} (2) Dimostrazione. Chiaramente, d(x) = d(y) + d(z) + 1, ed inoltre d(y) + d(z) 2 min{d(y), d(z)}, per cui: d(x) 2 min{d(y), d(z)} + 1 Prendendo il logaritmo di ambedue i membri della disuguaglianza, si ottiene lg d(x) lg(2 min{d(y), d(z)} + 1) ricordando la definizione 1 possiamo riscrivere r(x) lg(2 min{d(y), d(z)} + 1) Osserviamo inoltre che il logaritmo è una funzione strettamente crescente, da cui r(x) > lg(2 min{d(y), d(z)}) = lg 2 + lg(min{d(y), d(z)}) = 1 + lg(min{d(y), d(z)}) da cui, sempre per la proprietà di monotonicità della funzione logaritmo, otteniamo r(x) > 1 + min{lg d(y), lg d(z)} richiamando ancora una volta la definizione 1: r(x) > 1 + min{r(y), r(z)} Daremo ora una limitazione superiore alla variazione di potenziale causata da un singolo passo di splay. Questa limitazione sarà poi utile per calcolare il costo ammortizzato di una singola operazione di splay. Lemma 2. Sia x un nodo in uno splay tree. Siano r i 1 (x) ed r i (x) i ranghi del sottoalbero radicato in x prima e dopo un passo di splay ad x, rispettivamente. In modo simile, siano T i 1 e T i l albero prima e dopo il passo di splay. Risulta: (i) r i (x) r i 1 (x) (ii) Se p[x] è radice, allora Φ(T i ) Φ(T i 1 ) < r i (x) r i 1 (x) (iii) Se p[x] non è radice, allora Φ(T i ) Φ(T i 1 ) < 3(r i (x) r i 1 (x)) 1 Dimostrazione. Il punto (i) è ovvio, poichè i discendenti di x aumentano quando x sale nell albero. Per brevità, denoteremo d ora in avanti Φ i = Φ(T i ) Φ(T i 1 ) 4

Relativamente al punto (ii), osservando la Figura 1 si vede che r i (x) = r i 1 (y). Poichè solo x e y cambiano rango in T i, risulta: Φ i = (r i (x) r i 1 (x)) + (r i (y) r i 1 (y)) = r i (y) r i 1 (x) In seguito all operazione di splay, x risulta essere il nuovo padre di y, nonchè radice dell albero, quindi r i (x) > r i (y), da cui otteniamo: Φ i < r i (x) r i 1 (x) Per il punto (iii), consideriamo solo il caso in Figura 2, essendo gli altri casi analoghi. In questo caso solo x, y e z cambiano rango nella transizione da T i 1 a T i, e quindi risulta Φ i = (r i (x) r i 1 (x)) + (r i (y) r i 1 (y)) + (r i (z) r i 1 (z)) Guardando gli alberi iniziali e finali, abbiamo r i (y) < r i (x) e r i 1 (x) < r i 1 (y), quindi, sommando: che implica r i (y) r i 1 (y) < r i (x) r i 1 (x) Φ i < 2(r i (x) r i 1 (x)) + (r i (z) r i 1 (z)) (3) Per completare la dimostrazione, è sufficiente dimostrare che r i (z) r i 1 (z) < r i (x) r i 1 (x) 1 Denoteremo con r i 1 il rango calcolato sull albero intermedio T i 1, ottenuto dopo la prima rotazione. Grazie al Lemma 1: r i 1(y) > 1 + min{r i 1(x), r i 1(z)} e guardando agli alberi iniziale T i 1, intermedio T i 1 e finale T i, risulta r i 1 (x) = r i 1 (x), r i 1 (y) = r i(x) = r i 1 (z), e r i 1 (z) = r i(z), così che: r i (x) = r i 1 (z) > 1 + min{r i 1 (x), r i (z)} Quindi, o abbiamo r i (x) > 1 + r i 1 (x) oppure r i 1 (z) > 1 + r i (z). Nel primo caso, r i (x) r i 1 (x) > 1 r i (x) r i 1 (x) 1 > 0 e poichè r i (z) < r i 1 (z), otteniamo la seguente catena di disuguaglianze: Nel secondo caso, e, poichè dal Lemma 2 r i (z) r i 1 (z) < 0 < r i (x) r i 1 (x) 1 r i 1 (z) > 1 + r i (z) r i (z) r i 1 (z) < 1 r i (x) r i 1 (x) r i (x) r i 1 (x) 0 r i (x) r i 1 (x) 1 1 otteniamo ancora r i (z) r i 1 (z) < 1 r i (x) r i 1 (x) 1 Usando la disuguaglianza appena dimostrata nell equazione 3 si ottiene l asserto. 5

Teorema 1. Il costo ammortizzato di una operazione completa di splay in un albero auto-aggiustante con n nodi è O(lg n). Dimostrazione. Usiamo il lemma 2 per calcolare il costo ammortizzato di una operazione di splay al nodo x, che consiste di una sequenza di passi di splay (rotazioni). Per ciascun passo di splay, siano T i 1 e T i gli alberi prima e dopo la rotazione, rispettivamente. Il costo ammortizzato di un passo di splay è dato dal costo effettivo c i più la variazione di potenziale: ĉ i = c i + Φ(T i ) Φ(T i 1 ) Assumiamo che il costo reale c i di un singolo passo costituente l operazione di splay sia pari ad O(1). Consideriamo i due casi dell enunciato del Lemma 2. se x è figlio della radice, siamo all ultimo passo di quelli costituenti lo splay, e quindi: se x non è figlio della radice: ĉ i = O(1) + Φ(T i ) Φ(T i 1 ) < O(1) + r i (x) r i 1 (x) = O(1) + r i < O(1) + 3 r i ĉ i = O(1) + Φ(T i ) Φ(T i 1 ) < O(1) + 3(r i (x) r i 1 (x)) O(1) < 3 r i Per l intera operazione di splay, sia T = T 0, T 1, T 2,..., T k la serie di alberi prodotta dalla sequenza di k passi di splay, e siano r = r 0, r 1, r 2,..., r k i corrispondenti valori delle funzioni di rango. Il costo ammortizzato totale è dato da k k 1 k ĉ i < O(1) + 3 r k + 3 r i = O(1) + 3 r i L ultimo termine della disuguaglianza contiente una serie telescopica, e quindi il costo ammortizzato totale è pari a: k ĉ i < O(1) + 3(r k (x) r 0 (x)) Poichè il rango finale di x è al più pari a lg n, otteniamo il tempo desiderato. Dal teorema appena dimostrato si può infine ricavare il seguente: Teorema 2. Il tempo ammortizzato di una sequenza di m operazioni di insert search e delete in un albero auto-aggiustante è O(m lg n) dove n è il massimo numero di nodi che l albero raggiunge durante la sequenza di operazioni. 6

References [1] Daniel Dominic Sleator and Robert Endre Tarjan. Self Adjusting Binary Search Trees. In Journal of the ACM, vol. 32, n. 3, pp. 652-686, July 1985. [2] Thomas H. Cormen, Charles E. Leiserson, Ronald L. Rivest, Clifford Stein. Introduzione agli Algoritmi e Strutture Dati II ed. Mc-Graw Hill Italia, 2005. 7