B trees. Memoria. Memoria principale Piccola e veloce (chips, silicio) Pochi Gb 10-9 sec.

Dimensione: px
Iniziare la visualizzazioe della pagina:

Download "B trees. Memoria. Memoria principale Piccola e veloce (chips, silicio) Pochi Gb 10-9 sec."

Transcript

1 B trees 1 Vittorio Maniezzo Università di Bologna Memoria Memoria principale Piccola e veloce (chips, silicio) Pochi Gb 10-9 sec. Memoria secondaria Grande e lenta (dischi magnetici) Molti Gb 10-4 sec. Vittorio Maniezzo Università di Bologna 2 1

2 Distribuzione dati su disco Traccia: un anello Settore: una fetta. Blocco: intersezione di una traccia e un settore. Vittorio Maniezzo Università di Bologna 3 Blocchi di memoria Memoria principale Un blocco contiene kbytes, k=1,..., 64 Memoria secondaria Un blocco contiene kkb k=64,..., 1024 Vittorio Maniezzo Università di Bologna 4 2

3 Dischi magnetici I dischi memorizzano molti dati ma sono lenti. Trovare una pagina richiede tempo (posizionamento testina più tempo di rotazione, 5-10ms), la lettura è veloce Conviene leggere i dati in pagine (blocchi) sufficientemente grandi. Dall alto cilindri rotazione traccia settore testina di lettura/scrittura Vittorio Maniezzo Università di Bologna 5 Tempo di accesso Spesso il tempo necessario per accedere ad una pagina su disco è superiore al tempo necessario all elaboratore per esaminare tutta l informazione letta. Il tempo di esecuzione viene calcolato con: numero di accessi a disco tempo (di calcolo) della CPU Il num. di accessi a disco è misurato in numero di pagine lette/scritte. Non è costante, però... Vittorio Maniezzo Università di Bologna 6 3

4 Tempo di accesso al disco Seektime = Somma di Tempo necessario alla testina per muoversi sulla traccia corretta. Tempo necessario al settore desiderato per ruotare fino alla posizione della testina. (A volte questo componente è chiamato latenza, a volte per latenza si intende l'intero seek time) Transfer time = tempo necessario per leggere o scrivere i dati. Per un disco a 7200 RPM con seektime di 8 millisec, il tempo medio di accesso a un blocco è di circa 12 millisec. Vittorio Maniezzo Università di Bologna 7 ISAM) ISAM è l'acronimo di IndexedSequentialAccess Method (metodo di accesso sequenziale indicizzato), ed è un modo per immagazzinare dati da estrarre rapidamente. Sviluppato da IBM, costituisce oggi la base per l'immagazzinamento dei dati in molti database, relazionali e non. Si memorizzano mrecord in ogni blocco del disco, ciascuno identificato univocamente da una chiave k. Si utilizza un indice: un array con una cella per ogni blocco del disco che contiene la chiave più grande memorizzata in quel blocco. Vittorio Maniezzo Università di Bologna 8 4

5 ISAM) Vittorio Maniezzo Università di Bologna 9 ISAM: get) Per recuperare un record (di chiave k): get(k) 1. Ricerca nell'indice, ad esempio con ricerca binaria, per determinare il blocco che contiene il record desiderato. 2. Accesso al disco per leggere il blocco ed estrarre il record desiderato, se esiste. Vittorio Maniezzo Università di Bologna 10 5

6 ISAM, limiti Problemi con ISAM: 1. L'indice stesso può essere troppo grande per stare tutto in memoria. 2. Inserimento e cancellazione di record possono essere molto costosi se tutti i record dopo quello inserito / cancellato devono essere spostati. Vittorio Maniezzo Università di Bologna 11 Una soluzione: B Tree Idea 1: Usare alberi di ricerca m-ari (ogni nodo, fino a m figli). Idea 2: non richiedere che ogni blocco sia pieno. Lo spazio vuoto permette inserimenti e cancellazioni senza ridefinire l'albero. Idea 3: La ristrutturazione dell'albero ogni tanto è inevitabile. Necessario progettarla con complessità proporzionale all'altezza dell'albero. Vittorio Maniezzo Università di Bologna 12 6

7 B tree Perchè B? Inventati da R. Bayer nel 1970 Un B-treeè una generalizzazione di un m-tree(multiwaytree), che a sua volta è una generalizzazione di un albero binario di ricerca, BST. Richieste: mantenere il bilanciamento(altezza logaritmica) minimizzare I/O su disco Vittorio Maniezzo Università di Bologna 13 B tree Un B-treeè un albero di radice root(t)in cui ogni nodo xè strutturato come segue: x= dove: n leaf key 1 key 2... key n n[x] = numero delle chiavi (key) del nodo x leaf[x]: booleano, vero se x è foglia Chiavi memorizzate in ordine non-decrescente key 1 [x] key 2 [x] key 3 [x]... key n [x] Vittorio Maniezzo Università di Bologna 14 7

8 B tree, un nodo La struttura completa di un nodo è: Dove: n: numero di chiavi nel nodo leaf: flagbooleano, dice se il nodo è una foglia p father : puntatore al nodo padre p i : puntatore all'i-esimo sottoalbero (i= 1,..., n+1) key i : chiave i-esima (i= 1,..., n) rec i : puntatore data record i-esimo, blocco e offset su disco (i= 1,..., n): ci si immagina che la chiave serva come identificatore univoco di un record (cfr. hashing) Vittorio Maniezzo Università di Bologna 15 B tree, proprietà Un B-treedi ordine mè un albero m-ario tale che: Tutti i nodi foglia sono allo stesso livello. Tutti i nodi interni (tranne la radice) hanno al massimo me almeno m/2figli. Il numero delle chiavi per i nodi interni è pari al numero dei figli meno 1, per le foglie è almeno m/2 e al più m 1. La radicepuò avere anche solo 2 figli, se l'albero non è costituito dalla sola radice. Vittorio Maniezzo Università di Bologna 16 8

9 Operazioni sui dati Per accedere alle strutture dati non si fa riferimento a indirizzi in memoria centrale ma a locazioni su file. Sia xun puntatore ad un oggetto: se xè nella memoria principale, gli si accede ad es. con key[x] se è su disco, la procedura DiskRead(x) copia l oggetto in memoria (DiskWrite(x) lo ricopia su disco) Vittorio Maniezzo Università di Bologna 17 B tree If leaf[x]= false (x è un nodo interno) c 1 [x], c 2 [x],..., c n[x]+1 [x] sono puntatori ai nodi figli I campi key i [x] definiscono gli intervalli delle chiavi memorizzate in ciascun sottoalbero: se k i è una chiave memorizzata nel sottoalbero di radice c i [x] allora si ha che: k 1 key 1 [x] k 2 key 2 [x]... key n[x] [x] k n[x]+1 Ogni foglia ha la stessa profondità, che è quindi anche l altezza dell albero. Vittorio Maniezzo Università di Bologna 18 9

10 B tree c 1 key 1 c 2 key 2 c 3 key 3 c 4 a i b i d i e i a i key 1 b i key 2 d i key 3 e i Il num. di chiavi memorizzabili in un nodo è limitato in funzione di un intero t, t 2, chiamato grado minimo x root n[x] t-1 AND n[x] 2t-1 x= root n[x] 1 Un nodo xè pienose n[x] = 2t-1 Vittorio Maniezzo Università di Bologna 19 B tree root[t] nodo chiavi nodi chiavi nodi chiavi Più di un miliardo di chiavi! h=2 num. accessi 2!!! Vittorio Maniezzo Università di Bologna 20 10

11 B tree Alberi di ricerca bilanciati (balanced search tree, BST!!!) I nodi dei B-tree possono avere molti figli (migliaia) Profondità = O(log n) Generalizzano naturalmente i BST (binary search tree!!!) M D,H Q,T,X B,C F,G J,K,L N,P R,S V,W Y,Z Vittorio Maniezzo Università di Bologna 21 Altezza di un B tree Se n 1, allora per ogni B-treeT (con nchiavi) di altezza h, di grado minimo t 2, vale che: livello #di nodi t t -1 t -1 t -1 t -1 t -1 t t -1 t -1 t t Vittorio Maniezzo Università di Bologna 22 11

12 Analisi tempi di esecuzione numero di accessi a disco: O(log t n) CPU time: O(t log t n) trovato non trovato Vittorio Maniezzo Università di Bologna 23 Operazioni sui B tree Assunzioni: La radice di un B-treeè sempre in memoria centrale Quando si modifica la radice bisogna effettuare una scrittura su disco (DiskWrite) Qualsiasi nodo venga passato come parametro deve già essere in memoria centrale, a seguito di una DiskRead. Vittorio Maniezzo Università di Bologna 24 12

13 Operazioni sui B tree Le operazioni da realizzare sono: Ricerca di una chiave (semplice) Creazione di un nuovo albero vuoto (semplice) Inserimento di nuove chiavi (complessa) Cancellazione di chiavi (complessa) Vittorio Maniezzo Università di Bologna 25 B tree search(x,k) Operazione di ricerca su B-tree, parametri: x: radice di un sottoalbero k: chiave da cercare B-TREE-SEARCH(x,k) i=1 while i n[x] and k>key i [x] do i=i+1 if i n[x] and k=key i [x] then return(x,i) if (leaf[x]) then return(nil) else DISKREAD(c i [x]) return(b-tree-search(c i [x],k) Vittorio Maniezzo Università di Bologna 26 13

14 Creazione di un B tree vuoto Inizialmente si crea un nodo radice vuoto con la B-Tree-Create, poi lo si riempie con la B-Tree-Insert. Entrambe utilizzano la AllocateNodeche crea un nuovo nodo e gli assegna una pagina di disco in tempo O(1). B-Tree-Create(T) x = AllocateNode() leaf[x]=true n[x]=0 DiskWrite(x) root[t]=x num accessi a pagina: O(1) tempo CPU: O(1) Vittorio Maniezzo Università di Bologna 27 Divisione di un nodo I nodi si riempiono e raggiungono la loro capacità massima di 2t 1 chiavi. Per poter inserire una nuova chiave è necessario fare spazio, cioè dividere (split) il nodo. La divisione avviene in corrispondenza della sua chiave mediana. Risultato: una chiave di xsale di un livello e si creano 2 nodi con t-1 chiavi. Vittorio Maniezzo Università di Bologna 28 14

15 Split di un nodo t=4, 2t-1=7 non pieno x... N W... y = c i [x] pieno P Q R S T V W x... N S W... y = c i [x] z = c i+1 [x] P Q R T V W T 1... T 8 Mediano! Vittorio Maniezzo Università di Bologna 29 B Tree Split Child B-Tree-Split-Child(x,i,y) z = AllocateNode() leaf[z] = leaf[y] n[z] = t-1 for j = 1 to t-1 key j [z] = key j+t [y] if not leaf[y] then for j = 1 to t c j [z] = c j+t [y] n[y] = t-1 for j = n[x]+1 downto i+1 c j+1 [x] = c j [x] c i+1 [x] = z for j = n[x] downto i key j+1 [x] = key j [x] key i [x] = key t [y] n[x] = n[x]+1 DiskWrite(y) DiskWrite(z) DiskWrite(x) x: nodo padre y: nodo da spezzare (figlio di x) i: indice in x z: nuovo nodo x y = c i [x]... N W... P Q R S T V W T 1... T 8 Vittorio Maniezzo Università di Bologna 30 15

16 Split : tempo di CPU Lo split è un operazione locale che non percorre l albero Tempo di CPU Θ(t): I due loop vengonoeseguititvolte 3 operazioni di I/O Vittorio Maniezzo Università di Bologna 31 Inserimento di elementi Inserimentoeffettuato ricorsivamente: si inizia dalla radice e si può percorrere ricorsivamente l albero fino al livello delle foglie E necessario scendere ad un livello inferiore se il nodo corrente contiene 2t 1 elementi Vittorio Maniezzo Università di Bologna 32 16

17 Inserimento di elementi ( 2) Caso particolare: la radice è piena(btreeinsert) B-TREE-INSERT(T) r = root[t] if n[r] == 2t 1 then s = ALLOCATENODE() root[t] = s leaf[s] = FALSE n[s] = 0 c 1 [s] = r B-TREE-SPLIT-CHILD(s,1,r) B-TREE-INSERT-NON-FULL(s,k) else B-TREE-INSERT-NON-FULL(r,k) Vittorio Maniezzo Università di Bologna 33 Split della radice Lo split della radice richiede la creazione di nuovi nodi root[t] A D F H L N P T 1... T 8 r root[t] r A D F H s L N P L albero cresce (verso l alto invece che verso il basso). Vittorio Maniezzo Università di Bologna 34 17

18 Inserimento di elementi BTREEINSERTNONFULLcerca di inserire un elemento kin un nodo x, che si assume essere non pienoquando la procedura viene chiamata BTREEINSERTe la ricorsionein BTreeInsertNonFullgarantiscono che l assunzione sia vera. Vittorio Maniezzo Università di Bologna 35 Inserimento di elementi : Pseudo Codice B-TREE-INSERT-NON-FULL(x,k) i = n[x] if leaf[x] then while i 1 and k < key i [x] key i+1 [x] = key i [x] i = i - 1 key i+1 [x] = k n[x] = n[x] + 1 DISKWRITE(x) else while i 1 and k < key i [x] i = i - 1 i = i + 1 DISKREAD c i [x] if n[c i [x]] = 2t 1 then BTREESPLITCHILD(x,i,c i [x]) if k > key i [x] then i = i + 1 BTREEINSERTNONFULL(c i [x],k) inserimento di una foglia nodo interno: attraversamento dell albero Vittorio Maniezzo Università di Bologna 36 18

19 Inserimento : esempio albero iniziale (t = 3) G M P X A C D E J K N O R S T U V Y Z inserimento di B G M P X A B C D E J K N O R S T U V Y Z inserimento di Q G M P T X A B C D E J K N O Q R S U V Y Z Vittorio Maniezzo Università di Bologna 37 Inserimento : esempio ( 2) inserimento di L P G M T X A B C D E J K L N O Q R S U V Y Z inserimento di F P C G M T X A B D E F J K L N O Q R S U V Y Z Vittorio Maniezzo Università di Bologna 38 19

20 Inserimento : tempo di CPU I/O su disco: O(h), dato che vengono eseguiti solo O(1) accessi a disco durante le chiamate ricorsive a BTreeInsertNonFull CPU: O(t h) = O(tlog t n) In ogni momento sono presenti O(1) pagine disco in memoria principale Vittorio Maniezzo Università di Bologna 39 Cancellazione di elementi Effettuata ricorsivamente, iniziando dalla radice e percorrendo l albero ricorsivamente fino al livello delle foglie Si scende ad un nuovo livello dell albero se il nodo corrente contiene <telementi (mentre per l inserimento < 2t 1 elem.) B-tree-Delete gestisce tre diversi casi: Caso 1: elemento ktrovato in una foglia Caso 2: elemento ktrovato in un nodo interno Caso 3: elemento kprobabilmente in un nodo di livello inferiore Vittorio Maniezzo Università di Bologna 40 20

21 Cancellazione ( 2) albero iniziale P C G M T X A B D E F J K L N O Q R S U V Y Z F cancellato: caso 1 C G M P T X A B D E J K L N O Q R S x U V Y Z Caso 1: se l elemento k è nel nodo x, e xè una foglia, cancellakda x Vittorio Maniezzo Università di Bologna 41 cancellazione ( 3) Caso2: se la chiavekè nelnodo x, e xnon è unafoglia, cancellak da x a) Siayilfigliodi xcheprecede k.se yha almeno tchiavi, trovailpredecessore k di knelsottoalberodi radicein y. Ricorsivamente cancella k e sostituisci k con k in x. b) Oppure, simmetricamente, per il nodo col successore z c) se siayche zhanno t-1 chiavi, siinseriscein ysiak chetutti ifiglidi z(chediventanofiglidi y). Il nodo yha 2t-1 chiavi. Ricorsivamente, si elimina k da y. Vittorio Maniezzo Università di Bologna 42 21

22 Cancellazione ( 4) M cancellato: caso 2a P C G L x T X A B D E J K N O Q R S y U V Y Z G cancellato: caso 2c P C L x -k T X A B D E J K N O Q R S y= k+ z -k U V Y Z Vittorio Maniezzo Università di Bologna 43 Cancellazione distribuzione Caso 3:si esamina un nodo interno x che non contiene k, trova il sottoalbero di radice c i [x] che potrebbe contenere k. Se c i [x] ha solo t 1 elementi, si fa in modo che il nodo abbia almeno dimensione t; poi si chiama ricorsivamente l operazione sul sottoalbero scelto. Possibili due casi. a) se c i [x] ha solo t-1 chiavi, ma ha un fratello con almeno t chiavi, aggiungi a c i [x] un altra chiave prendendola da x, poi sposta una chiave dal fratello immediatamente a destra o a sinistra di c i [x] in xe sposta l opportuno figlio dal fratello in c i [x] (distribuzione). Vittorio Maniezzo Università di Bologna 44 22

23 Cancellazione distribuzione ( 2) x... k... x... k... c i [x]... k c i [x]... k A B A B cancella B C L P T X c i [x] A B E J K N O Q R S U V Y Z fratello B cancellato: E L P T X A C J K N O Q R S U V Y Z Vittorio Maniezzo Università di Bologna 45 Cancellazione fusione b) Se c i [x] e tuttiisuoifratellihannot 1 elementi, allora fondi(merge) c i con un fratello, spostandoun elementoda xnelnuovonodounionee facendolo così diventare il mediano di quel nodo x... l k m... x... l m... c i [x]... l m...l k m... A B A B Vittorio Maniezzo Università di Bologna 46 23

24 Cancellazione fusione ( 2) cancella D c i [x] C L P fratello T X A B D E J K N O Q R S U V Y Z Dcancellato: C L P T X A B E J K N O Q R S U V Y Z l altezza dell albero diminuisce Vittorio Maniezzo Università di Bologna 47 Cancellazione: tempo di CPU La maggior parte degli elementi sono nelle foglie, quindi la cancellazione avviene più spesso nelle foglie. In questo caso la cancellazione avviene in un unica discesa verso il livello delle foglie La cancellazione verso un nodo interno può richiedere un ritorno verso l alto(caso 2) I/O su disco: O(h), dato che si effettuano solo O(1) operazioni su disco durante le chiamate ricorsive Tempo di CPU: O(t h) = O(t log t n) Vittorio Maniezzo Università di Bologna 48 24

25 Esempio B-tree t=2, ogni nodo ha: al massimo 4 puntatori e 3 chiavi, almeno 2 puntatori e 1 chiave. Inserire: 5, 3, 21, 9, 1, 13, 2, 7, 10, 12, 4, 8 Cancellare: 2, 21, 10, 3, 4 Vittorio Maniezzo Università di Bologna 49 Insert 5, 3, 21 * 5 * a * 3* 5 * a * 3 * 5 * 21* a Next: insert 9. Split nodo, 5 radice Vittorio Maniezzo Università di Bologna 50 25

26 Insert 9 * 5 * a b * 3 * * 9 * 21 * c split del nodoa, sicreano2 figli: b e c Next: insert 1,13. Nessun problema Vittorio Maniezzo Università di Bologna 51 Insert 1, 13 * 5 * a b * 1* 3 * * 9 * 13* 21 * c I nodib e c hannospazioper inserirenuovielementi Next: insert 2. Nessun problema Vittorio Maniezzo Università di Bologna 52 26

27 Insert 2 * 5 * a b * 1 * 2 * 3 * * 9 * 13* 21 * c Next insert 7. Il nodoc non ha piùspazio, split e creazione del nodo d. Vittorio Maniezzo Università di Bologna 53 Insert 7, 10 * 5 * 13 * a b d c * 1 * 2 * 3 * * 7 * 9 * 10* * 21 * Next, insert 10. Nessun problema. Next: insert 12. Split nodod Vittorio Maniezzo Università di Bologna 54 27

28 Insert 12 * 5 * 9 * 13 * a b d * 1 * 2 * 3 * * 7 * * 10 * 12* * 21 * c e Il nodoc sidivide neinodic ede Next: insert 4. Split b e radice Vittorio Maniezzo Università di Bologna 55 Insert 4 * 9 * f * 2 * 5 * g * 13 * b d h c e * 1 * * 3 * 4 * * 7 * * 10 * 12 * * 21 * Il nodod ha spazioper ilnuovoelemento Next: insert 8. Nessun problema Vittorio Maniezzo Università di Bologna 56 28

29 Insert 8 * 9 * f * 2 * 5 * g * 13 * b d h c e * 1 * * 3 * 4 * * 7 * 8* * 10 * 12 * * 21 * Next: delete 2. Merge b e d Vittorio Maniezzo Università di Bologna 57 Delete 2 * 9 * f * 5 * g * 13 * d h c e * 1 * 3 * 4 * * 7 * 8 * * 10 * 12 * * 21 * Il nodofpuòperdereun elemento. Next: delete 21. Merge fe ge prestitoda c Vittorio Maniezzo Università di Bologna 58 29

30 Delete 21 f * 5 * 9 * 12 * d h * 1 * 3 * 4 * * 7 * 8 * c * 10 * e * 13 * La cancellazionedel 21 causa l'underflowdel nodoe, quindiglielementisonoridistribuitifrainodic, f, ede Next: delete 10. Sostituzione col predecessore Vittorio Maniezzo Università di Bologna 59 Delete 10 * 5 * 8 * 12 * a d h c e * 1 * 3 * 4 * * 7 * * 9 * * 13 * Underflow del nodoc. Suopadre, ilnodog deve ricombinarsicon inodif eda. Prestitoda h a c. L'albero cala di un livello. Next: delete 3. Nessun problema Vittorio Maniezzo Università di Bologna 60 30

31 Delete 3 * 5 * 8 * 12 * a d h c e * 1 * 4 * * 7 * * 9 * * 13 * Next: delete 4. Nessun problema Vittorio Maniezzo Università di Bologna 61 Delete 4 * 5 * 8 * 12 * a d h c e * 1 * * 7 * * 9 * * 13 * Vittorio Maniezzo Università di Bologna 62 31

32 Esempio, t = 3 L'albero è tale per cui: Tutte le foglie sono sempre allo stesso livello. Tutti i nodi interni (tranne la radice) hanno al più 6 e almeno 3 figli. Il numero delle chiavi è pari al numero dei figli 1, al più 5 e almeno 2. La radice può essere l'unico nodo dell'albero ad avere solo 2 figli. Vittorio Maniezzo Università di Bologna 63 Esempio, t = 3 Inserire nell'ordine: A G F IK D H M J E S BQX C L N O P R T U V Vittorio Maniezzo Università di Bologna 64 32

33 Esempio, t = 3 A G F IKD H M J E S BQX C L N O P R T U V A F G I K Vittorio Maniezzo Università di Bologna 65 Esempio, t = 3 A G F IK DH M J E S BQX C L N O P R T U V G A D F I K Vittorio Maniezzo Università di Bologna 66 33

34 Esempio, t = 3 A G F IK D HM JE S BQX C L N O P R T U V G A D F H I J K M Vittorio Maniezzo Università di Bologna 67 Esempio, t = 3 A G F IK D H M J ES BQX C L N O P R T U V G A D E F H I J K M Vittorio Maniezzo Università di Bologna 68 34

35 Esempio, t = 3 A G F IK D H M J E SBQX C L N O P R T U V G J A D E F H I K M S Vittorio Maniezzo Università di Bologna 69 Esempio, t = 3 A G F IK D H M J E S BQX C L N O P R T U V G J A B D E F H I K M S Vittorio Maniezzo Università di Bologna 70 35

36 Esempio, t = 3 A G F IK D H M J E S BQXC L N O P R T U V G J A B D E F H I K M Q S X Vittorio Maniezzo Università di Bologna 71 Esempio, t = 3 A G F IK D H M J E S BQX CL N O P R T U V D G J A B C E F H I K M Q S X Vittorio Maniezzo Università di Bologna 72 36

37 Esempio, t = 3 A G F IK D H M J E S BQX C LN O P R T U V D G J Q A B C E F H I K L M S X Vittorio Maniezzo Università di Bologna 73 Esempio, t = 3 A G F IK D H M J E S BQX C L N OP R T U V D G J Q A B C E F H I K L M N O S X Vittorio Maniezzo Università di Bologna 74 37

38 Esempio, t = 3 A G F I K D H M J E S B Q X C L N O PR T U V D G J M Q A B C E F H I K L N O P S X Vittorio Maniezzo Università di Bologna 75 Esempio, t = 3 A G F I K D H M J E S B Q X C L N O P R T UV D G J M Q A B C E F H I K L N O P R S T U X Vittorio Maniezzo Università di Bologna 76 38

39 Esempio, t = 3 A G F I K D H M J E S B Q X C L N O P R T U V J D G M Q T A B C E F H I K L N O P R S U V X Vittorio Maniezzo Università di Bologna 77 Cancellazione Cancellazionedi E da unafoglia. F non può stare sola, prestito di C via D e trasferimento di M. M C G J Q T A B D E F H I K L N O P R S U V X Vittorio Maniezzo Università di Bologna 78 39

40 Cancellazione Eliminazione di E M C G J Q T A B D F H I K L N O P R S U V X Vittorio Maniezzo Università di Bologna 79 Cancellazione Cancellazionedi F: non sipuòprenderein prestito da un vicino M C G J Q T A B D F H I K L N O P R S U V X Vittorio Maniezzo Università di Bologna 80 40

41 Cancellazione Ricombinazione. M C J Q T A B D G H I K L N O P R S U V X Vittorio Maniezzo Università di Bologna 81 Cancellazione Cancellazione di Qda un nodo interno, riduzione di un livello Nota: il predecessore immediato di un nodo interno è sempre in una foglia. C J M Q T A B D G H I K L N O P R S U V X Vittorio Maniezzo Università di Bologna 82 41

42 Cancellazione Cancellazione di Q da un nodo interno Si sovrascrive Q con il suo predecessore immediato C J M P T A B D G H I K L N O R S U V X Vittorio Maniezzo Università di Bologna 83 Altri metodi di accesso Varianti dei B-tree: B + -tree, B * -tree B + -tree: usati nei data base management systems(dbms) Schema generale dei metodi di accesso (comune ai B + -tree): Gli elementi contenenti dati sono memorizzati solo nelle foglie Ogni elemento in un nodo interno memorizza: un puntatore a un sottoalbero una descrizione compatta dell insieme di elementi memorizzati nel sottoalbero Vittorio Maniezzo Università di Bologna 84 42

B-Alberi Esercitazioni

B-Alberi Esercitazioni B-Alberi Esercitazioni Introduzione B-Trees: alberi bilanciati di ricerca progettati per essere memorizzati su dischi magnetici. Dischi magnetici molto più lenti delle memorie ad accesso casuale. La misura

Dettagli

B-alberi. Strutture dati avanzate

B-alberi. Strutture dati avanzate Strutture dati avanzate Strutture dati avanzate B-alberi B-alberi Vedremo alcune strutture dati che permettono di eseguire in modo particolarmente efficiente un determinato insieme di operazioni. Ognuna

Dettagli

Indici multilivello dinamici (B-alberi e B + -alberi) Alberi di ricerca - 1. Un esempio. Alberi di ricerca - 3. Alberi di ricerca - 2

Indici multilivello dinamici (B-alberi e B + -alberi) Alberi di ricerca - 1. Un esempio. Alberi di ricerca - 3. Alberi di ricerca - 2 INDICI MULTILIVELLO DINAMICI Indici multilivello dinamici (B-alberi e B + -alberi) Gli indici multilivello dinamici (B-alberi e B + -alberi) sono casi speciali di strutture ad albero. Un albero è formato

Dettagli

Indici con gli alberi

Indici con gli alberi Indici con gli alberi Alberi perfettamente bilanciati per indici su memorie di massa: B-alberi Indici su memorie secondarie Spesso i dati da ordinare sono in quantità tale da richiedere dispositivi di

Dettagli

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

Informatica 3. Informatica 3. LEZIONE 23: Indicizzazione. Lezione 23 - Modulo 1. Indicizzazione. Introduzione. Indicizzazione: Informatica 3 Informatica 3 LEZIONE 23: Indicizzazione Lezione 23 - Modulo 1 Modulo 1: Indicizzazione lineare, ISAM e ad albero Modulo 2: 2-3 trees, B-trees e B + -trees Indicizzazione lineare, ISAM e

Dettagli

Multi-way search trees

Multi-way search trees Multi-way search trees GT. 10.4 1 Argomenti Multi-way search trees Multi-way searching 9 (2,4) Trees 2 5 7 10 14 2 1 Alberi Binari di Ricerca Bilanciati n numero di chiavi (entry(key,elem)) AVL tree log(

Dettagli

ESERCIZI DI ALGORITMI E STRUTTURE DATI 2 Parte 2. Livio Colussi Dipartimento di Matematica Pura ed Applicata Università di Padova

ESERCIZI DI ALGORITMI E STRUTTURE DATI 2 Parte 2. Livio Colussi Dipartimento di Matematica Pura ed Applicata Università di Padova ESERCIZI DI ALGORITMI E STRUTTURE DATI 2 Parte 2 Livio Colussi Dipartimento di Matematica Pura ed Applicata Università di Padova 19 maggio 2006 2 Esercizio 18 Perché in un B-albero non possiamo avere grado

Dettagli

Alberi binari di ricerca

Alberi binari di ricerca Alberi binari di ricerca Definizione Un albero si dice albero binario di ricerca è un albero binario in cui: - Ogni nodo è caratterizzato un valore chiamato chiave - L insieme delle chiavi è totalmente

Dettagli

Alberi due-tre e alberi B

Alberi due-tre e alberi B Università di Torino Facoltà di Scienze MFN Corso di Studi in Informatica Curriculum SR (Sistemi e Reti) Basi di Dati e Algoritmi, a.a. 2006-07 prof. Elio Giovannetti CREDITS Alcune slides con disegni

Dettagli

Algoritmi e strutture dati

Algoritmi e strutture dati Algoritmi e Strutture Dati Alberi di ricerca Dizionari Gli alberi di ricerca sono usati per realizzare in modo efficiente il tipo di dato dizionario 2 Alberi binari di ricerca (BST = binary search tree)

Dettagli

Alberi di ricerca. Dizionari. Definizione. Alberi binari di ricerca (BST = binary search tree) 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 Dizionari Gli alberi di ricerca sono usati per realizzare in modo efficiente il tipo di dato dizionario Alberi di ricerca Basato su materiale di C. Demetrescu, I. Finocchi, G.F.

Dettagli

Alberi binari di ricerca

Alberi binari di ricerca Alberi binari di ricerca Definizione Un albero si dice albero binario di ricerca è un albero binario in cui: - Ogni nodo è caratterizzato un valore chiamato chiave - L insieme delle chiavi è totalmente

Dettagli

Esercitazione 6. Alberi binari di ricerca

Esercitazione 6. Alberi binari di ricerca Esercitazione 6 Alberi binari di ricerca Struttura base Rappresentabile attraverso una struttura dati concatenata in cui ogni nodo è un oggetto di tipo struttura Ogni nodo contiene: campo chiave (key)

Dettagli

Algoritmi e Strutture Dati

Algoritmi e Strutture Dati Algoritmi e Strutture Dati Alberi di ricerca Domenico Fabio Savo 1 Dizionari Gli alberi di ricerca sono usati per realizzare in modo efficiente il tipo di dato Dizionario 2 Alberi binari di ricerca (BST

Dettagli

Alberi di ricerca. Alberi binari di ricerca. F. Damiani - Alg. & Lab. 04/05 (da C. Demetrescu et al - McGraw-Hill)

Alberi di ricerca. Alberi binari di ricerca. F. Damiani - Alg. & Lab. 04/05 (da C. Demetrescu et al - McGraw-Hill) Alberi di ricerca Alberi binari di ricerca Un esempio: l ADT Dizionario (mutabile) Gli alberi di ricerca sono usati per realizzare in modo efficiente il tipo di dato astratto dizionario Alberi binari di

Dettagli

Alberi binari di ricerca

Alberi binari di ricerca Alberi binari di ricerca Ilaria Castelli castelli@dii.unisi.it Università degli Studi di Siena Dipartimento di Ingegneria dell Informazione A.A. 2009/20010 I. Castelli Alberi binari di ricerca, A.A. 2009/20010

Dettagli

Il tipo astratto coda con priorità: specifiche sintattiche e semantiche. Realizzazioni.

Il tipo astratto coda con priorità: specifiche sintattiche e semantiche. Realizzazioni. Il tipo astratto coda con priorità: specifiche sintattiche e semantiche. Realizzazioni. Algoritmi e Strutture Dati + Lab A.A. 14/15 Informatica Università degli Studi di Bari Aldo Moro Nicola Di Mauro

Dettagli

Un esempio: l ADT Dizionario (mutabile) Definizione. Alberi binari di ricerca (BST = binary search tree) search(chiave k) -> elem

Un esempio: l ADT Dizionario (mutabile) Definizione. Alberi binari di ricerca (BST = binary search tree) search(chiave k) -> elem Un esempio: l ADT Dizionario (mutabile) Algoritmi e Laboratorio a.a. 2006-07 Lezioni Gli alberi di ricerca sono usati per realizzare in modo efficiente il tipo di dato astratto dizionario Parte 19-D Alberi

Dettagli

Alberi Binari di Ricerca

Alberi Binari di Ricerca Alberi Binari di Ricerca Prof. G. M. Farinella gfarinella@dmi.unict.it www.dmi.unict.it/farinella Riferimenti Bibliografici Cormen T.H., Leiserson C.E., Rivest R.L Introduction to Algorithms, Third Edition,

Dettagli

Strutture di accesso ai dati: B + -tree

Strutture di accesso ai dati: B + -tree Strutture di accesso ai dati: B + -tree A L B E R T O B E L U S S I S E C O N D A P A R T E A N N O A C C A D E M I C O 2 0 0 9-2 0 0 Osservazione Quando l indice aumenta di dimensioni, non può risiedere

Dettagli

Alberi Binari di Ricerca

Alberi Binari di Ricerca Alberi Binari di Ricerca Algoritmi su gli alberi binari: visite Dato un puntatore alla radice di un albero vogliamo scandire in modo sistematico tutti i nodi di tale albero In una lista abbiamo una unica

Dettagli

Alberi Binari di Ricerca. Vittorio Maniezzo Università di Bologna

Alberi Binari di Ricerca. Vittorio Maniezzo Università di Bologna Alberi Binari di Ricerca 1 Vittorio Maniezzo Università di Bologna Look up table, dati ordinati Collezione di dati nella forma di coppie attributo / valore, in cui i campi chiave sono ordinabili. Caso

Dettagli

Alberi Binari di Ricerca

Alberi Binari di Ricerca Alberi Binari di Ricerca 1 Vittorio Maniezzo Università di Bologna Look up table, dati ordinati Collezione di dati nella forma di coppie attributo / valore, in cui i campi chiave sono ordinabili. Caso

Dettagli

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

Databases. Architettura di un DBMS: Struttura ad indice per i files, B + -Trees Databases Architettura di un DBMS: Struttura ad indice per i files, B + -Trees Indici Un indice consiste di coppie e supporta l efficiente recupero di tutte le etichette con chiave

Dettagli

Problemi di ordinamento

Problemi di ordinamento Problemi di ordinamento Input: una sequenza di n numeri a 1, a 2,..., a n ; Output: una permutazione a 1, a 2,..., a n di a 1, a 2,..., a n tale che a 1 a 2... a n. Generalmente, la sequenza è rappresentata

Dettagli

B alberi. dizionari in memoria secondaria

B alberi. dizionari in memoria secondaria B alberi dizionari in memoria secondaria dizionari su memoria secondaria la memorizzazione su memoria secondaria risponde a due esigenze permanenza dell informazione la RAM è volatile grande quantità di

Dettagli

Alberi. Se x è il genitore di y, allora y è un figlio di x. Un albero binario è un albero in cui ogni nodo ha al massimo due figli.

Alberi. Se x è il genitore di y, allora y è un figlio di x. Un albero binario è un albero in cui ogni nodo ha al massimo due figli. Alberi Un albero è un insieme di oggetti, chiamati nodi, su cui è definita una relazione binaria G(x, y) che leggiamo x è genitore di y tale che: 1. esiste un unico nodo, chiamato radice, che non ha genitori;

Dettagli

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

d. Cancellazione del valore 5 e. Inserimento del valore 1 Esercizio1 Si consideri un albero binario non vuoto in cui a ciascun nodo v è associato un numero reale v.val. Scrivere un algoritmo che, dato in input l'albero T e un numero reale x, restituisce true

Dettagli

LE STRUTTURE DATI DINAMICHE: GLI ALBERI. Cosimo Laneve

LE STRUTTURE DATI DINAMICHE: GLI ALBERI. Cosimo Laneve LE STRUTTURE DATI DINAMICHE: GLI ALBERI Cosimo Laneve 1 argomenti 1. definizione di alberi e nozioni relative 2. implementazione degli alberi, creazione, visita 3. algoritmo di visita iterativa e sua implementazione

Dettagli

INDICI PER FILE. Accesso secondario. Strutture ausiliarie di accesso

INDICI PER FILE. Accesso secondario. Strutture ausiliarie di accesso INDICI PER FILE Strutture ausiliarie di accesso 2 Accesso secondario Diamo per scontato che esista già un file con una certa organizzazione primaria con dati non ordinati, ordinati o organizzati secondo

Dettagli

Strutture dati Alberi binari

Strutture dati Alberi binari Strutture dati - 2 - Alberi binari Definizione L albero è un insieme di elementi (nodi), sui quali è definita una relazione di discendenza con due proprietà: esiste un solo nodo radice senza predecessori

Dettagli

ADT Dizionario. Ordered search table. Supponiamo che sia definita una relazione d'ordine totale sulle chiavi del dizionario D:

ADT Dizionario. Ordered search table. Supponiamo che sia definita una relazione d'ordine totale sulle chiavi del dizionario D: Ordered search table Supponiamo che sia definita una relazione d'ordine totale sulle chiavi del dizionario D: possiamo memorizzare le entrate di D in un array list S in ordine non decrescente di chiavi:

Dettagli

Progettazione Fisica - 1. Concetti di Base - 1. Indici. Progettazione di Basi di Dati. Assunzioni Fondamentali

Progettazione Fisica - 1. Concetti di Base - 1. Indici. Progettazione di Basi di Dati. Assunzioni Fondamentali Università degli Studi di Trieste Progettazione Fisica - 1 Corso di Laurea in Informatica - Basi di Dati Progettazione di Basi di Dati Progettazione Fisica: gli D. Gubiani maggio 2008 Lo schema ottenuto

Dettagli

PROGRAMMAZIONE II canale A-D luglio 2008 TRACCIA DI SOLUZIONE

PROGRAMMAZIONE II canale A-D luglio 2008 TRACCIA DI SOLUZIONE PROGRAMMAZIONE II canale A-D 2007-2008 14 luglio 2008 TRACCIA DI SOLUZIONE 1. Si vogliono realizzare mediante puntatori delle liste circolari, cioè delle liste tali che l ultimo elemento della lista punta

Dettagli

Dipartimento di Elettronica, Informazione e Bioingegneria API 2013/4

Dipartimento di Elettronica, Informazione e Bioingegneria API 2013/4 Dipartimento di Elettronica, Informazione e Bioingegneria API 2013/4 Bilanciamento negli alberi di ricerca @ G. Gini 2013 Dizionari Dizionario Insieme dinamico che implementa le seguenti funzionalità Cerca

Dettagli

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

Prova di Algoritmi e s.d. (1o anno) 17 Settembre TESTO e RISPOSTE Prova di Algoritmi e s.d. (1o anno) 17 Settembre 2002 TESTO e RISPOSTE Esercizio 1 (punti 7 in prima approssimazione) Consideriamo alberi binari con insieme dei nodi NODI = N (l'insieme dei naturali).

Dettagli

Algoritmi e strutture dati

Algoritmi e strutture dati Algoritmi e strutture dati Roberto Cordone A. A. 2015-16 Capitolo 3 Implementazioni dei dizionari ordinati Nota: queste dispense sono un rapido riassunto delle lezioni svolte nel dicembre 2015 e gennaio

Dettagli

Alberi di ricerca binari

Alberi di ricerca binari Fulvio Corno, Matteo Sonza Reorda Dip. Automatica e Informatica Politecnico di Torino Introduzione Gli alberi di ricerca binari (Binary Search Tree, o BST) sono una struttura di dati che supporta in modo

Dettagli

Organigramma Gerarchia. (Tree) Nessuna persona può avere più di un superiore Ogni persona può essere superiore di altre

Organigramma Gerarchia. (Tree) Nessuna persona può avere più di un superiore Ogni persona può essere superiore di altre Alberi Struttura dati Albero Organigramma Gerarchia (Tree) Nessuna persona può avere più di un superiore Ogni persona può essere superiore di altre Esempio di un organigramma di un azienda Tree terminology

Dettagli

Alberi n-ari: specifiche sintattiche e semantiche. Realizzazioni. Visita di alberi n-ari.

Alberi n-ari: specifiche sintattiche e semantiche. Realizzazioni. Visita di alberi n-ari. Alberi n-ari: specifiche sintattiche e semantiche. Realizzazioni. Visita di alberi n-ari. Algoritmi e Strutture Dati + Lab A.A. / Informatica Università degli Studi di Bari Aldo Moro Nicola Di Mauro ALBERO

Dettagli

Struttura di dati che può essere usata sia come dizionario, sia come coda con priorità

Struttura di dati che può essere usata sia come dizionario, sia come coda con priorità Albero binario di ricerca Struttura di dati che può essere usata sia come dizionario, sia come coda con priorità Proprietà: sia x un nodo di un (sotto)albero binario di ricerca Se y è un nodo del sottoalbero

Dettagli

Algoritmi e Strutture Dati. Capitolo 6 Il problema del dizionario

Algoritmi e Strutture Dati. Capitolo 6 Il problema del dizionario Algoritmi e Strutture Dati Capitolo 6 Il problema del dizionario Il tipo dato Dizionario Suppongo sempre che mi venga dato un riferimento diretto all elemento da cancellare Applicazioni: gestione archivi

Dettagli

alberi binari di ricerca (BST)

alberi binari di ricerca (BST) Le tabelle di simboli e gli alberi binari di ricerca (BT) ianpiero abodi e Paolo amurati Dip. utomatica e Informatica Politecnico di Torino Tabelle di simboli Definizione: una tabella di simboli è una

Dettagli

Alberi Binari di Ricerca e Alberi Rosso-Neri

Alberi Binari di Ricerca e Alberi Rosso-Neri Alberi Binari di Ricerca e Alberi Rosso-Neri Obiettivi Studiare strutture dati che consentano di effettuare in modo efficiente le operazioni di Minimo e massimo Successore Inserimento e cancellazione Ricerca

Dettagli

Code a priorità Una coda a priorità è una struttura dati astratta che permette di rappresentare un insieme di elementi su cui è definita una

Code a priorità Una coda a priorità è una struttura dati astratta che permette di rappresentare un insieme di elementi su cui è definita una Code a priorità Una coda a priorità è una struttura dati astratta che permette di rappresentare un insieme di elementi su cui è definita una relazione d ordine. Sono definite almeno le seguenti operazioni:

Dettagli

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

23/10/2016. gli alberi. alcune definizioni. un esempio. LABORATORIO DI PROGRAMMAZIONE 2 Corso di laurea in matematica. gli alberi Un albero è una struttura dati NON LINEARE organizzata gerarchicamente. LABORATORIO DI PROGRAMMAZIONE 2 Corso di laurea in matematica È costituito da un insieme di nodi collegati tra di loro:

Dettagli

Heap binomiali. Oltre alle precedenti operazioni fondamentali degli heap riunibili, sugli heap binomiali definiremo anche le due ulteriori operazioni:

Heap binomiali. Oltre alle precedenti operazioni fondamentali degli heap riunibili, sugli heap binomiali definiremo anche le due ulteriori operazioni: Heap binomiali Gli heap binomiali sono strutture dati su cui si possono eseguire efficientemente le operazioni: Make(H) : crea un heap vuoto. Insert(H, ) : aggiunge il nodo allo heap. Minimum(H) : ritorna

Dettagli

Algoritmi e Strutture Dati

Algoritmi e Strutture Dati Heap Maria Rita Di Berardini, Emanuela Merelli 1 1 Dipartimento di Matematica e Informatica Università di Camerino 6 novembre 2008 Heap binari: definizione Un heap binario è una albero binario quasi completo

Dettagli

ALBERI : introduzione SOMMARIO ALBERI ALBERI. ALBERI: introduzione ALBERI BINARI: introduzione VISITE RICORSIVE DI ALBERI

ALBERI : introduzione SOMMARIO ALBERI ALBERI. ALBERI: introduzione ALBERI BINARI: introduzione VISITE RICORSIVE DI ALBERI SOMMARIO ALBERI: introduzione ALBERI BINARI: introduzione VISITE RICORSIVE DI ALBERI Dimensione e Altezza ALBERI BINARI DI RICERCA (BST) Introduzione Ricerca, inserimento e cancellazione Implementazione

Dettagli

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

Albero binario. Alberi binari (introduzione) Terminologia. Alberi di ricerca binaria (BST) Albero binario 2 Alberi binari (introduzione) Struttura di dati bidimensionale formata da nodi costituiti ciascuno dai dati da memorizzare e da due link Ver. 2.4 20 - Claudio Fornaro - Corso di programmazione

Dettagli

I B+ Alberi. Sommario

I B+ Alberi. Sommario I B+ Alberi R. Basili (Basi di Dati, a.a. 2002-3) Sommario Indici organizzati secondo B + -alberi Motivazioni ed Esempio Definizione Ricerca in un B + -albero Esempio Vantaggi Inserimento/Cancellazione

Dettagli

Alberi binari e alberi binari di ricerca

Alberi binari e alberi binari di ricerca Università degli studi di Milano Dipartimento di Informatica Laboratorio di algoritmi e strutture dati Corso di laurea in Informatica Alberi Un albero è una collezione non vuota di: nodi con nome e informazioni

Dettagli

Informatica 3. Informatica 3. LEZIONE 22: Politiche di risoluzione delle collisioni. Lezione 23 - Modulo 1. Politiche di risoluzione delle collisioni

Informatica 3. Informatica 3. LEZIONE 22: Politiche di risoluzione delle collisioni. Lezione 23 - Modulo 1. Politiche di risoluzione delle collisioni Informatica 3 Informatica 3 LEZIONE 22: Politiche di risoluzione delle collisioni Lezione 23 - Modulo 1 Modulo 1: Open e closed hashing Modulo 2: Sequenze di probe Modulo 3: Analisi del closed hashing

Dettagli

Algoritmi e Strutture Dati

Algoritmi e Strutture Dati Heap Maria Rita Di Berardini, Emanuela Merelli 1 1 Dipartimento di Matematica e Informatica Università di Camerino A.A. 2006/07 Heap Heap binari: definizione Un heap binario è una struttura dati composta

Dettagli

Algoritmi e Strutture Dati

Algoritmi e Strutture Dati Maria Rita Di Berardini, Emanuela Merelli 1 1 Dipartimento di Matematica e Informatica Università di Camerino A.A. 2006/07 Il concetto di dato Il concetto di tipo di dato Insertion Sort for j 2 to lenght[a]

Dettagli

Alberi binari e alberi binari di ricerca

Alberi binari e alberi binari di ricerca Alberi binari e alberi binari di ricerca Violetta Lonati Università degli studi di Milano Dipartimento di Informatica Laboratorio di algoritmi e strutture dati Corso di laurea in Informatica giovedì 9

Dettagli

Moltiplicazione veloce di interi

Moltiplicazione veloce di interi Moltiplicazione veloce di interi Ogni numero intero w di n cifre può essere scritto come 10 n/2 w s + w d w s indica il numero formato dalle n/2 cifre più significative di w w d denota il numero formato

Dettagli

Algoritmi e Strutture Dati

Algoritmi e Strutture Dati Maria Rita Di Berardini 2, Emanuela Merelli 1 1 Dipartimento di Matematica e Informatica Università di Camerino 2 Polo di Scienze Università di Camerino ad Ascoli Piceno Il concetto di dato Il concetto

Dettagli

Algoritmi e Strutture Dati

Algoritmi e Strutture Dati Strutture Elementari Maria Rita Di Berardini, Emanuela Merelli 1 1 Dipartimento di Matematica e Informatica Università di Camerino 29 ottobre 2008 Strutture Dati Astratte Il concetto di dato Il concetto

Dettagli

Informatica 3. Informatica 3. LEZIONE 27: Strutture ad albero avanzate. Lezione 27 - Modulo 1. Trie (1) Trie binario

Informatica 3. Informatica 3. LEZIONE 27: Strutture ad albero avanzate. Lezione 27 - Modulo 1. Trie (1) Trie binario Informatica 3 Informatica 3 LZION 27: trutture ad albero avanzate Lezione 27 - Modulo Modulo : Trie Modulo 2: lberi bilanciati Modulo 3: trutture dati spaziali Trie olitecnico di Milano - rof. ara omai

Dettagli

In questa lezione Alberi binari di ricerca: la cancellazione

In questa lezione Alberi binari di ricerca: la cancellazione In questa leione Alberi binari di ricerca: la cancellaione 1 L algoritmo di Hibbard per cancellare (1962) Sia il nodo da cancellare: 1) è una foglia: si rimuove 2) ha un solo figlio x: si rende x figlio

Dettagli

Dati e Algoritmi I (Pietracaprina) Esercizi su Alberi Binari di Ricerca e (2,4)-Tree

Dati e Algoritmi I (Pietracaprina) Esercizi su Alberi Binari di Ricerca e (2,4)-Tree Dati e Algoritmi I (Pietracaprina) Esercizi su Alberi Binari di Ricerca e (2,4)-Tree Dati e Algoritmi I (Pietracaprina): Esercizi 1 Problema 1 Si definisca Interval Tree un albero binario di ricerca le

Dettagli

Spesso sono definite anche le seguenti operazioni:

Spesso sono definite anche le seguenti operazioni: Code a priorità Una coda a priorità è una struttura dati astratta che permette di rappresentare un insieme di elementi su cui è definita una relazione d ordine. Sono definite almeno le seguenti operazioni:

Dettagli

Informatica 3. LEZIONE 15: Implementazione di alberi binari - BST. Modulo 1: Implementazione degli alberi binari Modulo 2: BST

Informatica 3. LEZIONE 15: Implementazione di alberi binari - BST. Modulo 1: Implementazione degli alberi binari Modulo 2: BST Informatica 3 LEZIONE 15: Implementazione di alberi binari - BST Modulo 1: Implementazione degli alberi binari Modulo 2: BST Informatica 3 Lezione 15 - Modulo 1 Implementazione degli alberi binari Introduzione

Dettagli

Algoritmi e Strutture Dati. HeapSort

Algoritmi e Strutture Dati. HeapSort Algoritmi e Strutture Dati HeapSort Selection Sort: intuizioni L algoritmo Selection-Sort scandisce tutti gli elementi dell array a partire dall ultimo elemento fino all inizio e ad ogni iterazione: Viene

Dettagli

Memorizzazione di una relazione

Memorizzazione di una relazione Heap file File ordinati Indici o Hash o B+-tree Costo delle operazioni algebriche Simboli: NP: numero di pagine NR: numero record LP: lunghezza pagina LR: lunghezza record Memorizzazione di una relazione

Dettagli

Algoritmi e Strutture Dati & Laboratorio di Algoritmi e Programmazione

Algoritmi e Strutture Dati & Laboratorio di Algoritmi e Programmazione Algoritmi e Strutture Dati & Laboratorio di Algoritmi e Programmazione Appello del 24 Gennaio 2007 Esercizio 1 (ASD) 1. Sia T (n) = T (n/6) + T (n/3) + Θ(n). Considerare ciascuna delle seguenti affermazioni

Dettagli

L albero e un tipo astratto di dati usato per rappresentare relazioni gerarchiche.

L albero e un tipo astratto di dati usato per rappresentare relazioni gerarchiche. Lezioni di C L albero e un tipo astratto di dati usato per rappresentare relazioni gerarchiche. qstruttura del file system qalbero genealogico qorganigramma qalbero di decisione q... s=6*8+((2+42)*(5+12)+987*7*123+15*54)

Dettagli

Heap e code di priorità

Heap e code di priorità Heap e code di priorità Violetta Lonati Università degli studi di Milano Dipartimento di Scienze dell Informazione Laboratorio di algoritmi e strutture dati Corso di laurea in Informatica AA 2009/2010

Dettagli

Struttura dati Dizionario

Struttura dati Dizionario Struttura dati Dizionario Un dizionario è : un insieme di coppie (elemento, chiave) Sul campo chiave è definita una relazione d'ordine totale Su cui definiamo le seguenti operazioni: insert(elem e, chiave

Dettagli

Alberi rosso-neri. Oltre ad essere alberi binari di ricerca, gli alberi rosso-neri soddisfano le seguenti proprietà:

Alberi rosso-neri. Oltre ad essere alberi binari di ricerca, gli alberi rosso-neri soddisfano le seguenti proprietà: Alberi rosso-neri Gli alberi rosso-neri sono alberi binari di ricerca in cui le operaioni Insert e Delete sono opportunamente modificate in modo tale da garantire un altea dell albero h = O(log n). A tale

Dettagli

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

Alberi rosso neri. API a.a. 2013/2014 Gennaio 23, 2014 Flavio Mutti, PhD Alberi rosso neri API a.a. 2013/2014 Gennaio 23, 2014 Flavio Mutti, PhD 2 Sommario Definizione Operazione di rotazione Inserimento Cancellazione Temi d esame 3 Introduzione Un albero rosso-nero è un albero

Dettagli

Introduzione Implementazione (1)

Introduzione Implementazione (1) Informatica 3 Informatica 3 LEZIONE 15: Implementazione di alberi binari - BST Modulo 1: Implementazione degli alberi binari Modulo 2: BST Lezione 15 - Modulo 1 Implementazione degli alberi binari Politecnico

Dettagli

ADT Coda con priorità

ADT Coda con priorità Code con priorità ADT Coda con priorità Una coda con priorità è una struttura dati dinamica che permette di gestire una collezione di dati con chiave numerica. Una coda con priorità offre le operazioni

Dettagli

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

B-Tree. Struttura dati usata in applicazioni che necessitano di gestire insiemi di chiavi ordinate Una variante (B+-Tree) è diffusa in: B-Tree Prof. Rudolf Bayer Struttura dati usata in applicazioni che necessitano di gestire insiemi di chiavi ordinate Una variante (B+-Tree) è diffusa in: Filesystem: btrfs, NTFS, ReiserFS, NSS, XFS, JFS

Dettagli

Alberi binari e alberi binari di ricerca

Alberi binari e alberi binari di ricerca Alberi binari e alberi binari di ricerca Violetta Lonati Università degli studi di Milano Dipartimento di Scienze dell Informazione Laboratorio di algoritmi e strutture dati Corso di laurea in Informatica

Dettagli

Informatica 3. LEZIONE 16: Heap - Codifica di Huffmann. Modulo 1: Heap e code di priorità Modulo 2: Esempio applicativo: codifica di Huffmann

Informatica 3. LEZIONE 16: Heap - Codifica di Huffmann. Modulo 1: Heap e code di priorità Modulo 2: Esempio applicativo: codifica di Huffmann Informatica 3 LEZIONE 16: Heap - Codifica di Huffmann Modulo 1: Heap e code di priorità Modulo 2: Esempio applicativo: codifica di Huffmann Informatica 3 Lezione 16 - Modulo 1 Heap e code di priorità Introduzione

Dettagli

Implementazione ADT: Alberi

Implementazione ADT: Alberi Implementazione ADT: Alberi Livelli di astrazione 2001/2002 1 Esercitazione 5 (E6): alberi (tree) albero struttura dati fondamentale, soprattutto per le operazioni di ricerca tipi di albero con radice

Dettagli

Informatica 3. LEZIONE 20: Ordinamento esterno. Modulo 1: Organizzazione della memoria Modulo 2: Ordinamento esterno

Informatica 3. LEZIONE 20: Ordinamento esterno. Modulo 1: Organizzazione della memoria Modulo 2: Ordinamento esterno Informatica 3 LEZIONE 20: Ordinamento esterno Modulo 1: Organizzazione della memoria Modulo 2: Ordinamento esterno Informatica 3 Lezione 20 - Modulo 1 Organizzazione della memoria Introduzione Dati in

Dettagli

FILE E INDICI Architettura DBMS

FILE E INDICI Architettura DBMS FILE E INDICI Architettura DBMS Giorgio Giacinto 2010 Database 2 Dati su dispositivi di memorizzazione esterni! Dischi! si può leggere qualunque pagina a costo medio fisso! Nastri! si possono leggere le

Dettagli

Liste concatenate. Violetta Lonati

Liste concatenate. Violetta Lonati Liste concatenate Violetta Lonati Università degli studi di Milano Dipartimento di Informatica Laboratorio di algoritmi e strutture dati Corso di laurea in Informatica 2 novembre 2017 Violetta Lonati Liste

Dettagli

Albero binario: Ogni nodo ha zero, uno, o due successori (ordinati)

Albero binario: Ogni nodo ha zero, uno, o due successori (ordinati) Heap 1 Vittorio Maniezzo - Università di Bologna Alberi binari Albero binario: Ogni nodo ha zero, uno, o due successori (ordinati) Albero binario completo: Tutte le foglie hanno la stessa profondità e

Dettagli

Algoritmi e Strutture Dati. HeapSort

Algoritmi e Strutture Dati. HeapSort Algoritmi e Strutture Dati HeapSort Selection Sort: intuizioni L algoritmo Selection-Sort scandisce tutti gli elementi dell array a partire dall ultimo elemento fino all inizio e ad ogni iterazione: Viene

Dettagli

Introduzione Definizioni

Introduzione Definizioni Informatica 3 Informatica 3 LEZIONE 20: Ordinamento esterno Lezione 20 - Modulo 1 Modulo 1: Organizzazione della memoria Modulo 2: Ordinamento esterno Organizzazione della memoria Politecnico di Milano

Dettagli

Alberi binari. Alberi Albero binario Heap tree

Alberi binari. Alberi Albero binario Heap tree Alberi binari Alberi Albero binario eap tree Albero Ogni nodo può avere un numero arbitrario di figli Un nodo senza figli viene detto foglia siste un nodo particolare chiamato radice, tutti gli altri hanno

Dettagli

Esercizi su ABR. Prof. E. Fachini - Intr. Alg.!1

Esercizi su ABR. Prof. E. Fachini - Intr. Alg.!1 Esercizi su ABR Confronto proprietà ABR e Max-Heap. Proprietà del cammino radice-foglia individuato da una ricerca. Fusione di due ABR. Il successivo calcolato dalla radice Costruzione di un ABR bilanciato

Dettagli

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

Gianpiero Cabodi e Paolo Camurati Dip. Automatica e Informatica Politecnico di Torino. Prestazioni dei BST Gli alberi bilanciati Gianpiero abodi e Paolo amurati Dip. utomatica e nformatica Politecnico di Torino Prestazioni dei BT Prestazioni variabili da: logaritmiche: caso migliore, albero bilanciato lineari:

Dettagli

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

Dizionari. Realizzazione con alberi binari di ricerca. Alberi rosso-neri. Ugo de' Liguoro - Algoritmi e Seprimentazioni 03/04 Lez. Dizionari Realizzazione con alberi binari di ricerca. Alberi rosso-neri. Dizionari con gli alberi Astro, Dado, Lana, Mela, Tasto,Vela, Zappa Mela Astro Tasto Zappa Alberi binari di ricerca Gli alberi binari

Dettagli

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

Algoritmi e strutture dati 16 Dicembre 2004 Canali A L e M Z Cognome Nome Matricola Algoritmi e strutture dati 16 Dicembre 04 Canali A L e M Z Cognome Nome Matricola Problema 1 (6 punti) Determinare la funzione calcolata dal metodo mistero e la sua complessità computazionale in funzione

Dettagli

Alberi. Alberi: Esempio di utilizzo

Alberi. Alberi: Esempio di utilizzo Sono strutture dati del tipo: Alberi SOTTOALBERO n1 RADICE DELL ALBERO () n2 n n4 Profondità o Livello 0 1 n n n n n n 2 NODI FOGLIA (LEAF NODES) 1 Alberi: Esempio di utilizzo Rappresentazione di un file

Dettagli

lezione 9 min-heap binario Heap e Alberi posizionali generali

lezione 9 min-heap binario Heap e Alberi posizionali generali lezione 9 Heap e Alberi posizionali generali min-heap binario Un min-heap è un albero binario quasi completo in cui ogni nodo i diverso dalla radice soddisfa la seguente proprietà: il valore memorizzato

Dettagli

QuickSort Università degli Studi di Milano

QuickSort Università degli Studi di Milano QuickSort Algoritmo di ordinamento sul posto che ha tempo di esecuzione : - O(n 2 ) nel caso peggiore - O(n log n) nel caso medio Nonostante le cattive prestazioni nel caso peggiore, rimane il miglior

Dettagli

1 Realizzazione di un Indice Primario con chiavi senza duplicati

1 Realizzazione di un Indice Primario con chiavi senza duplicati Corso: Gestione ed elaborazione grandi moli di dati Lezione del: 23 Maggio 2006 Argomento: Realizzazione di un indice primario con chiavi senza duplicati tramite un B + -Tree Scribes: Emanuele Marcazzan,

Dettagli

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.

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. 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 FB = -1 livello 1 FB = -1 livello 2 livello 3 L altezza è 3, il minimo si trova nel

Dettagli