Prof.ssa Rossella Petreschi Lezione del 17 /10/2014 del Corso di Algoritmica Lezione n°5.

Slides:



Advertisements
Presentazioni simili
Strutture dati per insiemi disgiunti
Advertisements

Alberi binari Definizione Sottoalberi Padre, figli
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.
Intelligenza Artificiale 1 Gestione della conoscenza lezione 5 Prof. M.T. PAZIENZA a.a
Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Copyright © The McGraw - Hill Companies, srl 1 Stesso approccio.
Esercizi su alberi binari
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 05/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.
Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Copyright © The McGraw - Hill Companies, srl Capitolo 6 Interrogazioni.
Il problema del dizionario
Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Capitolo 4 Ordinamento: Heapsort Algoritmi e Strutture Dati.
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.
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.
Interrogazioni su un albero binario di ricerca Search(S,k) – dato un insieme S ed un valore chiave k restituisce un puntatore x ad un elemento in S tale.
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
Ricerca della Legge di Controllo
Algoritmi e Strutture Dati 20 aprile 2001
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.
Fibonacci Heaps e il loro utilizzo nell’algoritmo di Prim
Modulo 1 - Concetti di base della Tecnologia dell'Informazione
Strutture dati per insiemi disgiunti
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
Alberi CORDA – Informatica A. Ferrari Testi da
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.
Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Copyright © The McGraw - Hill Companies, srl Capitolo 6 Rotazioni.
MODULO STRUTTURE DATI FONDAMENTALI: Strutture dinamiche
Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Copyright © The McGraw - Hill Companies, srl 1 Soluzione esercizio.
Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Copyright © The McGraw - Hill Companies, srl 1 Soluzione esercizio.
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.
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.
Gestione delle periferiche. Le periferiche sono dispositivi che permettono le operazioni di input/output.
Algoritmi Avanzati a.a.2011/2012 Prof.ssa Rossella Petreschi Simulazione di lettura e scrittura concorrente Tecnica dell’accelerated cascading Lezione.
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.
Algoritmi Avanzati a.a.2013/2014 Prof.ssa Rossella Petreschi Albero ricoprente di costo minimo Lezione n°12.
Algoritmi Avanzati a.a.2014/2015 Prof.ssa Rossella Petreschi Lezione n°9.
Prof.ssa Rossella Petreschi Lezione del 15 /10/2012 del Corso di Algoritmica B-alberi Lezione n°5.
Alberi di ricerca di altezza logaritmica
Inserzione e Cancellazione
B-alberi e alberi autoaggiustanti
Transcript della presentazione:

Prof.ssa Rossella Petreschi Lezione del 17 /10/2014 del Corso di Algoritmica Lezione n°5

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

Inserimento in un B-albero L’operazione di inserimento in un B-albero è analoga a quella già vista per un albero binario di ricerca. Si controlla x (elemento da inserire) con i valori k 1 (y)<= k 2 (y)<=…<= k n(y)-1 (y) del nodo che si sta analizzando(inizialmente y = r) Se k 1 (y)> x, si confronta x con il primo figlio di y Se k i (y)< x < k i+1 (y) si confronta x con il figlio (i+1)-esimo di y Se k n(y)-1 (y)< x, si confronta x con l’ultimo figlio di y Si prosegue ricorsivamente sul cammino fintanto che non si trova libera la posizione appropriata sull’albero. Tempo O(t h(T))

Dividere un nodo Per garantire che l’altezza del B-albero rimanga logaritmica, bisogna controllare che il nodo y in cui vogliamo inserire x non sia già pieno, ovvero non abbia più di 2t-1 chiavi. In tal caso bisogna: calcolare l’esatta posizione di x in y; prendere la chiave mediana rispetto ai 2t elementi, sia k i (y); inserire k i (y) nel nodo padre di y, p(y); spezzare il nodo y in due nodi di t chiavi ciascuno: y 1 contenente tutte le chiavi (chiavi di y+ la chiave x) minori di k i (y) e y 2 contenente tutte le chiavi (chiavi di y+ la chiave x) maggiori di k i (y); aggiornare i puntatori di p(y) rispetto a y 1 e y 2 ATTENZIONE!!

Incremento dell’altezza Nell’inserire k i (y) nel nodo padre di y potremmo ritrovarci ancora una volta nella necessità di dividere il nodo (questa volta p(x)). Questo processo può propagare verso l’alto fino ad arrivare alla radice. Lo spezzamento della radice comporta l’incremento dell’altezza dell’albero dato che bisogna creare un nuovo nodo radice con una sola chiave (la chiave mediana della vecchia radice) e con due figli (i due nodi di t chiavi generati dalla vecchia radice). La complessità dell’intera operazione di inserimento (comprensiva delle eventuali divisioni di nodi) rimane dell’ordine di O(t h(T))

Eliminazione di una chiave in un B-albero L’operazione di eliminazione in un B-albero è analoga a quella già vista per un albero binario di ricerca e richiede il controllo del numero di chiavi del nodo su cui si è operato (debbono rimanere almeno t-1 chiavi) Si cerca la chiave da cancellare; se la chiave è in una foglia, la si elimina; se la chiave è in un nodo interno la si sostituisce con il predecessore (o il successore), che è in una foglia, e ci si riconduce al caso precedente Ogni volta che da una foglia si elimina una chiave si deve controllare se il numero di chiavi rimane almeno pari a t-1. Se ciò non accade, bisogna opportunamente rimanipolare la struttura.

Il supporto di un fratello Un nodo y che rimane con meno di t-1 chiavi deve chiedere aiuto ad un fratello, f(y), per effettuare una opportuna ridistribuzione delle chiavi. La ridistribuzione mette in gioco le chiavi presenti nei nodi y e f(y) nonché la loro chiave di separazione presente nel nodo padre. Per effettuare la ridistribuzione, f(y) deve avere almeno t chiavi in modo che al termine della ridistribuzione y e f(y) abbiano almeno t-1 chiavi ciascuno. Se f(y) ha t-1 chiavi, prima di effettuare una ridistribuizione, bisogna fondere y e f(y) in un solo nodo. La fusione consiste nell’eliminare y e nel riportare in f(y) tutte le chiavi di y e la chiave di separazione che era presente nel nodo padre. f(y) avrà quindi 2t-2 nodi ATTENZIONE!!

Decremento dell’altezza L’operazione di fusione sposta da p(y) a f(y) la chiave di separazione fra y e f(y) che era presente nel nodo padre. Questo potrebbe causare la necessità di iterare la fusione fra due nodi. Questo processo può propagare verso l’alto fino ad arrivare alla radice. Se i nodi da fondere sono i due unici figli della radice, il risultato della fusione è una nuova radice mentre si decrementa l’altezza dell’albero La complessità dell’intera operazione di eliminazione (comprensiva delle eventuali fusioni di nodi) rimane dell’ordine di O(t h(T))