Prof.ssa Rossella Petreschi Lezione del 15 /10/2012 del Corso di Algoritmica B-alberi Lezione n°5.

Slides:



Advertisements
Presentazioni simili
Alberi binari Definizione Sottoalberi Padre, figli
Advertisements

Tecnologia delle basi di dati: Strutture fisiche di accesso
Estendere i linguaggi: i tipi di dato astratti
Hard disk.
Lez. 91 Universita' di Ferrara Facolta' di Scienze Matematiche, Fisiche e Naturali Laurea Specialistica in Informatica Algoritmi Avanzati Alberi di ricerca.
RB-alberi (Red-Black trees)
Alberi binari di ricerca
Capitolo 3 Strutture dati elementari Algoritmi e Strutture Dati.
Algoritmi e Strutture Dati
Algoritmi e Strutture Dati
Capitolo 3 Strutture dati elementari Algoritmi e Strutture Dati.
Algoritmi e Strutture Dati Capitolo 2 Modelli di calcolo e metodologie di analisi.
Algoritmi e Strutture Dati
Capitolo 6 Alberi di ricerca Algoritmi e Strutture Dati.
Algoritmi Paralleli e Distribuiti a.a. 2008/09 Lezione del 22/05/2009 Prof. ssa ROSSELLA PETRESCHI a cura del Dott. SAVERIO CAMINITI.
Algoritmi Paralleli e Distribuiti a.a. 2008/09 Lezione del 19/05/2009 Prof. ssa ROSSELLA PETRESCHI a cura del Dott. SAVERIO CAMINITI.
1 Strutture dati avanzate Vedremo alcune strutture dati che permettono di eseguire in modo particolarmente efficiente un determinato insieme di operazioni.
Algoritmi e strutture Dati - Lezione 7
Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Copyright © The McGraw - Hill Companies, srl Capitolo 6 Interrogazioni.
Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Copyright © The McGraw - Hill Companies, srl Capitolo 6 Il problema.
Capitolo 4 Ordinamento Algoritmi e Strutture Dati.
Capitolo 9 Il problema della gestione di insiemi disgiunti (Union-find) Algoritmi e Strutture Dati.
Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Copyright © The McGraw - Hill Companies, srl Capitolo 6 Il problema.
Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Copyright © The McGraw - Hill Companies, srl Alberi AVL (Adelson-Velskii.
Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Copyright © The McGraw - Hill Companies, srl Alberi AVL (Adelson-Velskii.
Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Copyright © The McGraw - Hill Companies, srl Capitolo 6 Rotazioni.
Algoritmi e Strutture Dati
Capitolo 4 Ordinamento Algoritmi e Strutture Dati.
Algoritmi e Strutture Dati Alberi Binari di Ricerca.
Algoritmi e Strutture Dati (Mod. A)
Algoritmi e Strutture Dati
Algoritmi e Strutture Dati 20 aprile 2001
Algoritmi e Strutture Dati
Modello dati ALBERO Albero: Albero: insieme di punti chiamati NODI e linee chiamate EDGES EDGE: linea che unisce due nodi distinti Radice (root): in una.
Modello dati ALBERO Albero: Albero: insieme di punti chiamati NODI e linee chiamate EDGES EDGE: linea che unisce due nodi distinti Radice (root): in una.
Esercizi su alberi binari
Fondamenti di Informatica1 Ripetizioni di segmenti di codice Spesso è necessario ripetere più volte uno stesso segmento dell'algoritmo (e.g. I/O, elaborazioni.
Anche la RB-Delete ha due fasi: Nella prima viene tolto un nodo y avente uno dei sottoalberi vuoto sostituendolo con la radice dellaltro sottoalbero. Per.
RB-insert(T, z) // z.left = z.right = T.nil Insert(T, z) z.color = RED // z è rosso. Lunica violazione // possibile delle proprietà degli alberi // rosso-neri.
B trees.
Algoritmi Paralleli e Distribuiti a.a. 2008/09 Lezione del 08/05/2009 Prof. ssa ROSSELLA PETRESCHI a cura del Dott. SAVERIO CAMINITI.
Architettura Centralizzata di un DBMS Relazionale
Corso di Algoritmi e Strutture Dati con Laboratorio A.A. 2014/15 Alberi bilanciati (rif. Algoritmi in Java, di R. Sedgewick)
Alberi CORDA – Informatica A. Ferrari Testi da
alberi completamente sbilanciati
Algoritmi e Strutture Dati
Capitolo 6 Alberi di ricerca Algoritmi e Strutture Dati.
Alberi Alberi radicati : alberi liberi in cui un vertice è stato scelto come radice. Alberi liberi : grafi non orientati connessi e senza cicli. Alberi.
Capitolo 9 Il problema della gestione di insiemi disgiunti (Union-find) Algoritmi e Strutture Dati.
Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Copyright © The McGraw - Hill Companies, srl Capitolo 6 Rotazioni.
Alberi rosso-neri Le operazioni sugli alberi binari di ricerca hanno complessità proporzionale all’altezza h dell’albero. Gli alberi rosso-neri sono alberi.
1 Ordinamento (Sorting) INPUT: Sequenza di n numeri OUTPUT: Permutazione π = tale che a 1 ’  a 2 ’  … …  a n ’ Continuiamo a discutere il problema dell’ordinamento:
Algoritmi e strutture Dati - Lezione 7 1 Algoritmi di ordinamento ottimali L’algoritmo Merge-Sort ha complessità O(n log(n))  Algoritmo di ordinamento.
Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Copyright © The McGraw - Hill Companies, srl 1 Soluzione esercizio.
Capitolo 9 Union-find Algoritmi e Strutture Dati.
Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Copyright © The McGraw - Hill Companies, srl 1 Soluzione esercizio.
1 Ordinamento (Sorting) Input: Sequenza di n numeri Output: Permutazione π = tale che: a i 1  a i 2  ……  a i n Continuiamo a discutere il problema dell’ordinamento:
Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Copyright © The McGraw - Hill Companies, srl Capitolo 6 Il problema.
Capitolo 6 Il problema del dizionario Algoritmi e Strutture Dati.
Didattica e Fondamenti degli Algoritmi e della Calcolabilità Quinta giornata Risolvere efficientemente un problema in P: ancora sulla sequenza di Fibonacci.
Strutture dati avanzate Vedremo alcune strutture dati che permettono di eseguire in modo efficiente un determinato repertorio di operazioni: - B-alberi.
Algoritmi e Strutture Dati HeapSort. Select Sort: intuizioni L’algoritmo Select-Sort  scandisce tutti gli elementi dell’array a partire dall’ultimo elemento.
Capitolo 6 Alberi di ricerca Algoritmi e Strutture Dati Camil Demetrescu, Irene Finocchi, Giuseppe F. Italiano.
Prof.ssa Rossella Petreschi Lezione del 15 /10/2012 del Corso di Algoritmi e Strutture Dati Riferimenti: Paragrafo 7.4 del testo Kingston “Algorithms and.
Prof.ssa Rossella Petreschi Lezione del 17 /10/2014 del Corso di Algoritmica Lezione n°5.
Alberi di ricerca di altezza logaritmica
Alberi di ricerca di altezza logaritmica
Lezione n°4 Prof.ssa Rossella Petreschi
Algoritmi e Strutture dati a.a.2010/2011 Prof.ssa Rossella Petreschi
Transcript della presentazione:

Prof.ssa Rossella Petreschi Lezione del 15 /10/2012 del Corso di Algoritmica B-alberi Lezione n°5

Analisi del caso medio della costruzione di un AR (soluzione dell’equazione di ricorrenza.1) A(0) = 0 A(n) = n-1+(2/n)Σ A(j-1), per j = 1,…,n Passo1: si elimina la sommatoria 1. si moltiplica per n nA(n) = n(n-1) + 2Σ A(j-1), per j = 1,…,n 2. si calcola per n-1 (n-1)A(n-1) = (n-1)(n-2)+ 2Σ A(j-1), per j = 1,…,n-1 3. si sottrae la eq 2 dalla eq1 nA(n) - (n-1)A(n-1) = n (n-1) - (n-1)(n-2) + 2A(n-1) nA(n) = 2 (n-1) + (n+1)A(n-1) Passo 2: si divide per 2n(n+1) nA(n) = 2 (n-1) + (n+1)A(n-1) A(n)/ 2(n+1) = (n-1)/n (n+1) + A(n-1)/2n A(n)/ 2(n+1) = 2/ (n+1) -1/n + A(n-1)/2n

Analisi del caso medio della costruzione di un AR (soluzione dell’equazione di ricorrenza.2) Passo3: si applicano ripetute sostituzioni A(n)/ 2(n+1) = 2/ (n+1) -1/n + A(n-1)/2n = = 2/ (n+1) -1/n + [2/n - 1/(n-1) +A(n-2)/2(n-1)]= = 2/ (n+1) -1/n + [2/n - 1/(n-1) + [2/n-1 - 1/n-2 + A(n-3)/2(n-2)]]= = 2/ (n+1) + 2/n +…+ 2/n-(i-2) -1/n - 1/(n-1)-…- 1/n-(i-1) + A(n-i)/2(n- (i-1)) Passo4: si pone i=n A(n)/ 2(n+1) = 2/(n+1) + 2/n +…+ 1 -1/n - 1/(n-1)-… = = 2/n +…+ 1 -1/n - 1/(n-1)-…- 1 + (2/1-2/1) + 2/(n+1) = = (2/n +…+ 2/2 + 2/1) - (1/n +…+ 1/1) + 2/(n+1) - 2/1 = Σ1/i -2n/n+1, i=1,..n Passo5: si moltiplica per 2(n+1) 2(n+1)A(n)/ 2(n+1) =2(n+1)(Σ1/i -2n/n+1) A(n) =2(n+1)Σ1/i - (2(n+1))(2n/n+1) A(n) =2(n+1)Σ1/i - 4n

Analisi dell’operazione di cancellazione Non esiste per la cancellazione un risultato analogo a quello della complessità media per l’inserimento, quindi rimane valida solo la complessità asintotica nel caso peggiore: O(h(AR))≤O(n) Per essere sicuri di mantenere al più logaritmica l’altezza dell’albero, sia per inserzioni che per cancellazioni, si introducono gli alberi di ricerca bilanciati, il cui bilanciamento è mantenuto tramite rotazioni.

Rotazioni (a meno di simmetrie) Rotazione destra Rotazione sinistra/destra

Alberi AVL Si associ ad ogni nodo u di AR un valore intero fb(u) dato dalla differenza fra le altezze dei suoi sottoalberi. Albero AVL è un albero di ricerca 1-bilanciato, ovvero -1≤ fb(u) ≤1 per ogni u Vale: l’altezza di una albero AVL è logaritmica nel numero dei suoi nodi

Altezza di un AVL Alberi di Fibonacci: alberi AVL con il minor numero di nodi a parità di altezza n 0 = 1; n 1 = 2; n h = 1+ n h-1 + n h-2 (n(h):minimo numero di nodi di un albero AVL di altezza h) Vale: n h = F h+3 -1 si dimostra per induzione Passo base n 0 = 1= F 3 -1=2-1 Ipotesi induttiva n k = F k+3 -1, per ogni k < h Prova n h = 1+ n h-1 + n h-2 = 1 + F h F h+1 -1 = F h+3 -1 Th: Un albero AVL con n nodi ha altezza O(logn) Prova: n ≥ n h = F h+3 -1 ≥  h+1 -1

Alberi Red/Black Albero Red/Black: albero RB tale che 1.ad ogni nodo u è associato un colore (rosso o nero); 2.ogni foglia ha colore nero; 3.se un nodo ha colore rosso, entrambi i suoi figli hanno colore nero; 4. ogni cammino semplice da un nodo x(non incluso) ad una foglia contiene lo stesso numero di nodi neri, bh(x) Vale: l’altezza di un albero RB è logaritmica nel numero dei suoi nodi

Altezza di un albero Red/Black Il sottoalbero radicato in x,SA(x), contiene almeno 2 bh(x) -1 nodi Prova (per induzione su h) Passo base: se h=0, x è una foglia 2 bh(x) -1 =1-1 = 0 Ipotesi induttiva 2 bh(y) -1 per ogni y con h(y) < h(x) Prova: SA(x) = x+ SA(fs(x))+ SA(fd(x)) Nodi interni di SA(x) ≤ (2 bh(x)-1 -1)+ (2 bh(x)-1 -1)+1≤ 2 bh(x) -1 Th: Un albero Red/Black con n nodi ha altezza O(logn) Prova: per (*) almeno metà dei nodi su un qualunque cammino dalla radice ad una foglia (esclusa la radice)devono essere neri (bh(x) ≥ h/2) e quindi n ≥ 2 bh(x) -1≥ 2 h/2 -1 (*) se un nodo ha colore rosso, entrambi i suoi figli hanno colore nero.

Inserzione Si inserisce x come in un qualunque albero di ricerca e poi AVL : si ricalcolano i fattori di bilanciamento dei nodi nel cammino da x a r. Sia v il nodo più profondo con fb = +/-2. Con perno nei nodi con fb = +/-2, a partire da v e risalendo alla radice, si eseguano opportune rotazioni. R/B: x si colora di rosso e si vede se si viola (*) quando si viola (*) si tende a spostare la violazione verso l’alto iterando i seguenti passi: 1.lo zio di x, z(x), è rosso allora commuta i colori di p(x), z(x),p(p(x)) 2.lo zio di x, z(x), è nero allora esegui una rotazione 3.la radice si mantiene sempre nera (*) se un nodo ha colore rosso, entrambi i suoi figli hanno colore nero.

Cancellazione Si cancella x come in un qualunque albero di ricerca e poi AVL : si ricalcolano i fattori di bilanciamento dei nodi nel cammino da x a r. Sia v il nodo più profondo con fb = +-2. Con perno nei nodi con fb = +-2, a partire da v e risalendo alla radice, si eseguano opportune rotazioni. R/B: se x era nero la (*) è stata violata. Si assegni nero ad y,figlio di x eliminato. 1.y era rosso o y è la radice. Fine. 2.y era già nero allora sposto il nero di x verso la radice a seconda che il fratello di y,w, sia rosso(r) o nero(n): se (r), lo riconduco al caso (n) scambiando i colore fra w e p(x) e ruoto a sx; se (n), ho ancora 3 casi a seconda del colore di figli di w: nn,rn (nr),rr (ogni caso si effettua tramite scambi di colore e rotazioni) (*) ogni cammino semplice da un nodo x(non incluso) ad una foglia contiene lo stesso numero di nodi neri, bh(x)

B-alberi B-alberi : sono progettati per operazioni su dischi magnetici o atri dispositivi di memoria secondaria ad accesso diretto;sono particolarmente efficienti nelle operazioni di Input/Output. I B-alberi sono una naturale generalizzazione degli alberi binari di ricerca bilanciati: un nodo con k chiavi ha k+1 figli; l’intervallo di chiavi gestito da un nodo è diviso in k+1 intervalli ciascuno di quali è gestito da un figlio; l’altezza cresce in modo logaritmico con il numero dei nodi dell’albero.

Esempio di B-albero

Perché i B-alberi? La memoria primaria (RAM) si basa su una tecnologia costosa ma che permette di eseguire le operazioni di scrittura e lettura in modo veloce (chip di memoria: dispositivi elettronici). La memoria secondaria (dischi) è più economica, ma richiede per accedere ai dati dei tempi relativamente lunghi (si debbono muovere delle componenti meccaniche per posizionare la testina).

Il Disco la superficie del disco è ricoperta di materiale magnetico; le informazioni su un disco sono organizzate in blocchi e il blocco minimo accessibile in lettura e scrittura è detto pagina; la testina di lettura/scrittura è in grado di operare mentre il disco è in movimento; la porzione di superficie che passa sotto la testina, in una posizione stabile, si dice traccia; il tempo di accesso è il tempo necessario per aspettare che una determinata pagina passi sotto la testina; la lettura e la scrittura su un disco magnetico sono completamente elettroniche.

Immagine di un disco tutti i blocchi hanno la stessa dimensione e sono definiti da: traccia, settore, faccia settoretraccia faccia

Accesso alla memoria secondaria Per trattare quantità estremamente grandi di dati si devono pertanto sviluppare algoritmi che lavorino con dati memorizzati in memoria secondaria. Questi algoritmi richiedono per garantire l’efficienza computazionale: che siano minimizzati gli accessi alla memoria secondaria; che la memoria principale contenga in ogni istante un numero costante di pagine; che siano copiate le pagine selezionate dal disco nella memoria principale; Disk-Read(x) che siano riscritte sul disco le pagine modificate in memoria principale; Disk-Write(x)

Definizione di B-albero B-albero, T : albero di ricerca m-ario tale che: ogni nodo interno,x, ha un numero n(x) di figli (t =2 è il grado minimo del B-albero; gli n(x) figli di x, radici dei sottoalberi A 1 (x), A 2 (x),…, A n(x) (x), sono ordinatamente raggiungibili da x tramite i puntatori c 1 (x), c 2 (x),…, c n(x) (x); ad ogni nodo x con n(x) figli sono associate n(x) -1 chiavi ordinate (k 1 (x) <= k 2 (x) <=…<= k n(x)-1 (x)); tutte le chiavi del sottoalbero A i (x) sono maggiori della chiave k i-1 (x) e minori della chiave k i (x); un nodo si dice pieno se contiene 2t-1 chiavi; tutti le foglie hanno la stessa profondità, che è l’altezza h(T) dell’albero.

Calcolo di h(T) Un B-albero T di n>=1 chiavi e di grado minimo t>=2 ha altezza h(T)<= log t ((n+1)/2) Prova: n>= 1+ (t-1) Σ 2t i-1 = la radice ha almeno 2 figli (1 chiave) e tutti gli altri nodi hanno i=1,…,halmeno t figli (t-1 chiavi), ovvero 2 nodi a profondità 1, 2t a profondità 2… = 1 + 2(t-1) Σ t i-1 = serie geometrica = 1 + 2(t-1) ((t h -1)/(t-1))= = 2t h -1