B-alberi dizionari in memoria secondaria. ASD - B-tree2 dizionari su memoria secondaria la memorizzazione su memoria secondaria risponde a due esigenze.

Slides:



Advertisements
Presentazioni simili
Hard disk.
Advertisements

File System Cos’è un File System File e Directory
Elaboratore e Sistemi Operativo
RB-alberi (Red-Black trees)
Realizzazione del file system
Code a priorità (Heap) Definizione
Alberi binari di ricerca
Esercizi sulle architetture
Memorie.
Architettura dei computer
Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Copyright © The McGraw - Hill Companies, srl 1 Stesso approccio.
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.
Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Copyright © The McGraw - Hill Companies, srl 1 Stesso approccio.
Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Copyright © The McGraw - Hill Companies, srl 1 Stesso approccio.
Fondamenti di Informatica II Ingegneria Informatica / Automatica (A-I) Meccanica Prof. M.T. PAZIENZA a.a – 3° ciclo.
Fondamenti di Informatica 2 Ingegneria Informatica Docente: Giovanni Macchia a.a
Esercizi su alberi binari
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.
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 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.
1 Corso di Informatica (Programmazione) Lezione 4 (24 ottobre 2008) Architettura del calcolatore: la macchina di Von Neumann.
Algoritmi e Strutture Dati Alberi Binari di Ricerca.
Algoritmi e Strutture Dati (Mod. A)
Algoritmi e Strutture Dati
Algoritmi e Strutture Dati IV. Heap e Code di Priorità
Disco magnetico (2) Ciascuna traccia è divisa in settori
tipo astratto, implementazione, algoritmi
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.
La gestione dell'I/O Architettura degli elaboratori 1 - A. Memo La gestione dellI/O 4Prestazioni e generalità 4.1Modelli di funzionamento 4.2Dischi.
Esercizi su alberi binari
3. Architettura Vengono descritte le principali componenti hardware di un calcolatore.
EVOLUZIONE DEL PC Legge di Moore: La potenza dei calcolatori raddoppia ogni 18 mesi Metà anni 80 (Personal Computer IBM AT) Architettura 16 bit interna,
MEMORIA CENTRALE Spazio di lavoro del calcolatore: contiene i dati da elaborare e i risultati delle elaborazioni durante il funzionamento del calcolatore.
UNIVERSITA’ STUDI DI ROMA “FORO ITALICO”
Le memorie del calcolatore
B-alberi dizionari in memoria secondaria. giugno 2002ASD - B-tree3 dizionari su memoria secondaria la memorizzazione su memoria secondaria risponde.
B trees.
Architettura Centralizzata di un DBMS Relazionale
Esercitazioni I/O. Dischi: Esercizio 1 Si consideri un programma che legge blocchi di 2 KB da disco, esegue un’elaborazione su questi, e quindi li riscrive.
Alberi CORDA – Informatica A. Ferrari Testi da
alberi completamente sbilanciati
Heap concetti ed applicazioni. maggio 2002ASD - Heap2 heap heap = catasta condizione di heap 1.albero binario perfettamente bilanciato 2.tutte le foglie.
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 8 Code con priorità Algoritmi e Strutture Dati Camil Demetrescu, Irene Finocchi, Giuseppe F. Italiano.
Prog2 a.a. 2001/ Albero binario di ricerca Un albero binario di ricerca é un albero binario in cui ogni nodo ha un’etichetta.
Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Copyright © The McGraw - Hill Companies, srl 1 Soluzione esercizio.
MEMORIA CENTRALE Spazio di lavoro del calcolatore: contiene i dati da elaborare e i risultati delle elaborazioni svolte durante il funzionamento del calcolatore.
EVOLUZIONE DEL PC Legge di Moore: La potenza dei calcolatori raddoppia ogni 18 mesi. Inizi anni 80 (Personal Computer IBM AT) Architettura 16 bit interna,
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.
Memoria Cache l Memoria molto veloce intermedia tra RAM e CPU l i dati di uso piu’ frequente sono mantenuti nella memoria Cache per minimizzare i trasferimenti.
Hardware Struttura fisica (architettura) del calcolatore formata da parti meccaniche, elettriche, elettroniche.
Strutture dati avanzate Vedremo alcune strutture dati che permettono di eseguire in modo efficiente un determinato repertorio di operazioni: - B-alberi.
Capitolo 6 Alberi di ricerca Algoritmi e Strutture Dati Camil Demetrescu, Irene Finocchi, Giuseppe F. Italiano.
Hardware Struttura fisica (architettura) del calcolatore formata da parti meccaniche, elettriche, elettroniche.
Prof.ssa Rossella Petreschi Lezione del 17 /10/2014 del Corso di Algoritmica Lezione n°5.
Prof.ssa Rossella Petreschi Lezione del 15 /10/2012 del Corso di Algoritmica B-alberi Lezione n°5.
Transcript della presentazione:

B-alberi dizionari in memoria secondaria

ASD - B-tree2 dizionari su memoria secondaria la memorizzazione su memoria secondaria risponde a due esigenze –permanenza dellinformazione la RAM è volatile –grande quantità di dati la RAM è limitata memoria secondaria: disco

ASD - B-tree3 modello di costo il costo in termini di tempo per accedere al disco (scrittura/lettura) domina in maniera sostanziale il costo di elaborazione in RAM –parti meccaniche in movimento con costanti di tempo dellordine delle decine di millisecondi –una CPU esegue unistruzione elementare in pochi colpi di clock –ad es., copia di un dato dalla RAM a un registro supp. 10 colpi di clock, CPU a 1GHz 10 ns per copia RAM->registro 20 ns per unassegnazione

ASD - B-tree4 modello di costo/2 Occorre considerare modelli di costo diversi dal modello RAM se il costo dominante della computazione è costituito dagli accessi in memoria secondaria. Ex: # di accessi a disco x seek time + tempo di trasferimento dei dati da disco a memoria principale

ASD - B-tree5 modello di costo/3 laccesso al disco avviene per blocchi (o pagine fisiche ) –tutti i blocchi hanno la stessa dimensione (da 512B ad alcuni KB) –ciascun blocco è definito da tre coordinate: cilindro (o traccia ), settore, faccia cilindro settoretraccia faccia

ASD - B-tree6 modello di costo/4 tempo di accesso al disco = somma di tre componenti –seek time per posizionare la testina sul cilindro corretto –latency time attesa necessaria affinché il settore desiderato transiti sotto la testina –tempo di trasferimento dati scambiati fra RAM e disco

ASD - B-tree7 esempio seek time –~15-20ms latency time –valore atteso: 50% del tempo di rotazione in un disco a 7200rpm, poco più di 4ms tempo di trasferimento –velocità: alcuni MB/s blocco di 4KB, seek 15 ms, 10000rpm, velocità di trasferimento 2MB/s tempo (ms) di accesso al blocco ms/blocco = 20ms/blocco costo (ammortizzato) per byte 20ms/4096B 4.9µs/B

ASD - B-tree8 esempio/2 nel caso di accesso a più blocchi contigui vengono pagati un solo seek e un solo latency la convenienza aumenta allaumentare del numero di blocchi contigui –bulk access vs. random access blocco di 4KB, seek 15 ms, 10000rpm, velocità di trasferimento 2MB/s tempo (ms) di accesso a due blocchi contigui ·2 ms/blocco = 22ms/blocco costo (ammortizzato) per byte 22ms/8192B 2.7µs/B

ASD - B-tree9 esempio/3

ASD - B-tree10 ammortizzazione la contiguità premia

ASD - B-tree11 modello di costo/5 costo (tempo): # di I/O su disco –blocco ha dimensione B –RAM ha dimensione M –disco ha dimensione tempo di CPU trascurabile –buona approssimazione in molti casi

ASD - B-tree12 1 dizionari in memoria secondaria idea: paginare un albero di ricerca

ASD - B-tree13 BST paginato lalbero non è più binario si può definire un albero di ricerca m -ario?

ASD - B-tree14 B-tree di ordine m radice con 0 o p > 1 figli ogni nodo interno (non radice) con k – 1 chiavi e k figli, m /2 k m –non lo stesso k per ciascun nodo! foglie con k-1 chiavi, m /2 k m albero di ricerca –ad ogni chiave è associato un sottoalbero destro di chiavi inferiori ed uno sinistro di chiavi superiori m è il max numero di figli Nota: le foglie contengono puntatori a blocchi di elementi

ASD - B-tree15 B-tree di ordine / è anche un B-tree di ordine 3? Nota: si sono indicate solo le chiavi

ASD - B-tree16 scelte progettuali un nodo = un blocco chiave c bit riferimento a sottoalbero r bit in ogni nodo rm + c (m - 1) bit m = (B + c )/(r + c ) –se B = 4KB, c = r = 32 bit m 64 Ogni blocco di elementi è memorizzato in un blocco su disco (dim. B) –Se max. L bit per elemento al più B/L elem./blocco Obiettivo: avere alberi di altezza piccola (es. 4)

ASD - B-tree17 Altezza di un B-tree quali sono le altezze minime e massime di un B-tree di ordine m con n chiavi? –altezza max ottenuta quando ogni nodo interno ha il min numero di figli (albero spoglio) la radice ha 2 figli ed ogni altro nodo interno ha m /2 figli –altezza min quando ogni nodo interno ha il max numero (m ) di figli (albero frondoso)

ASD - B-tree18 altezza di un B-tree spoglio sia q = m /2 1 chiave nella radice q - 1 chiavi in ogni altro nodo livello 2: 2 nodi livello 3: 2q nodi livello 4: 2q 2 nodi livello i : 2q i –2 nodi

ASD - B-tree19 altezza di un B-tree spoglio/2 # chiavi in un B-tree spoglio di altezza h >= D.: qual è laltezza di un B-tree frondoso?

ASD - B-tree20 Scelte progettuali/2 un nodo = un blocco chiave c bit riferimento a sottoalbero r bit in ogni nodo rm + c (m - 1) bit m = (B + c )/(r + c ) –se B = 4KB, c = r = 32 bit m 64 –con n = 10ML chiavi h 6 E possibile avere alberi con altezza piccola in casi di interesse pratico –radice spesso mantenuta in RAM

ASD - B-tree21 rappresentazione nodi (RAM) class BTreeNode { int m; boolean leaf; /* true se nodo è foglia */ int keyTally; /* No. di chiavi presenti */ int keys = new int[m-1]; BTreeNode references[] = new BTreeNode[m]; BtreeNode(int key) {…} /* Costruttore */ } /* Nota: si assumono chiavi intere */ /* keys può essere un array di oggetti contenenti coppie */

ASD - B-tree22 Rappresentazione con riferimenti

ASD - B-tree23 cenno alla rappresentazione dei nodi su disco file a sé stanti, ciascuno di un blocco –più semplice da realizzare –i riferimenti ai sottoalberi sono nomi di file –overhead per il sistema operativo tutti in un unico file –soluzione compatta, ma più complessa –riferimenti ai sottoalberi offset relativi allinizio di un file (file frammentato, solo accessi random) indirizzi assoluti (cilindro+settore+faccia, file non portatili)

ASD - B-tree24 ricerca in un B-tree public BTreeNode BTReeSearch(int key) { return BTreeSearch(key, root) } protected BTreeNode BTreeSearch(int key, BTreeNode node) { if (node != null) { int i=1; while ((i<=node.keyTally)&&(node.keys[i-1]< key)) { i++; if ((i>node.keyTally) || (node.keys[i-1]>key)) return BTreeSearch(key, nodereferences[i-1]; else return node; } else return null; }

ASD - B-tree25 Ricerca chiave di valore /465144

ASD - B-tree26 inserimento in B-tree come nei BST, si effettua una ricerca della chiave da inserire si tenta dapprima di inserire la chiave in una foglia (appropriata) –se la foglia non è piena il processo termina –se la foglia è piena (ha già m – 1 chiavi) abbiamo una situazione di overflow e possiamo scinderla in due la scissione può determinare altre scissioni

ASD - B-tree27 Inserimento in foglia non piena Un albero B prima (a) e dopo (b) linserimento della chiave 7 in una foglia avente celle disponibili

ASD - B-tree28 Inserimento in foglia piena Inserimento della chiave 6 in una foglia piena

ASD - B-tree29 gestione degli overflow gestione delloverflow tramite scissione (o divisione o split) –allocazione di un nuovo nodo (foglia) –le m chiavi vengono così ripartite: (m – 1) / 2 nella foglia in overflow, (m – 1) / 2 nella nuova e una (la mediana fra le m ) viene inserita nel genitore per separare le due foglie (nellesempio, m=5) se il genitore va in overflow si usa la stessa tecnica

ASD - B-tree30 gestione degli overflow/2 gli overflow si possono propagare verso lalto fino a coinvolgere la radice se la radice va in overflow questa deve venire scissa ed occorre creare una nuova radice, che conterrà la chiave mediana fra le m coinvolte nelloperazione –in questo caso lalbero aumenta la propria altezza Animazione a tml

ASD - B-tree31 Inserimento Algorithm BTreeInsert(k) { /* Sia essa node */ if (<nodo non pieno) { return; } else { ; } /* Continua prossima slide */

ASD - B-tree32 Inserimento /* Continua da slide precedente */ if ( ) { root.keyTally=1; return; } else }

ASD - B-tree33 costo inserimento discesa radice – foglia –O(log m/2 n ) I/O split –O(1) I/O (3 o 4) #split –O(log m/2 n ) costo totale: O(log m/2 n )

ASD - B-tree34 eliminazione da un B-tree si effettua una ricerca della chiave da inserire se la chiave è in una foglia, la si elimina dalla stessa e si verifica se il numero di chiavi rimanenti sia comunque non inferiore a m / –se rimangono troppe poche chiavi si ha underflow, che richiede una gestione specifica 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 –simile alla tecnica usata nei BST

ASD - B-tree35 Azioni eseguite dopo leliminazione del numero 6

ASD - B-tree36 gestione degli underflow un nodo in underflow ha m / chiavi si tenta dapprima una ridistribuzione delle chiavi fra nodo e un fratello, coinvolgendo la chiave che li separa nel genitore –occorre un fratello con almeno m / 2 chiavi se non è disponibile un fratello per operare la ridistribuzione occorre effettuare la fusione (o merge) fra nodo in underflow e un fratello –richiede una gestione specifica

ASD - B-tree37 fusione di nodi due nodi fratelli possono essere fusi se uno di essi è in underflow e laltro ha il numero di chiavi minimo m / la fusione consiste nellinserire in un solo nodo tutte le chiavi presenti nei due nodi, oltre a quella del genitore che separava i due nodi –la fusione permette di liberare risorse precedentemente allocate a un nodo –richiede leliminazione di una chiave dal genitore, che a sua volta, può andare in underflow, divenendo oggetto di attenzione da parte del gestore dellunderflow

ASD - B-tree38 fusione di nodi/2 se i nodi oggetto di fusione sono i due unici figli della radice, questa scompare e il risultato della fusione diviene la nuova radice –in tal caso vengono liberate risorse allocate a due nodi –lalbero diminuisce laltezza Animazione a tmlAnimazione a tml

ASD - B-tree39 algoritmo di eliminazione Algorithm BTreeDelete(k) { node = BTreeSearch(k) if(node != null) { if( ) { } else

ASD - B-tree40 algoritmo di eliminazione/2 while(true) { if( ) return; else if ( ) { return; } else if ( ) { if ( )

ASD - B-tree41 algoritmo di eliminazione/3 else return; } /* End else if */ else } } /* End while */ } /* End if */ } /* End algoritmo */

ASD - B-tree42 costo eliminazione discesa radice – foglia –O(log m/2 n ) I/O redistribuzione –O(1) I/O (3 o 4) fusione –O(1) I/O (3 o 4) #fusioni –O(log m/2 n ) costo totale: O(log m/2 n )

ASD - B-tree43 B + -tree chiavi solo nelle foglie nodi interni contengono solo informazioni di branching e costituiscono un vero e prorpio indice le foglie sono collegate orizzontalmente algoritmi di gestione simili a quelli per il B- tree –una differenza notevole è nello split di una foglia: la chiave separatrice viene copiata (e non spostata) nel genitore