Alberi rosso neri. API a.a. 2013/2014 Gennaio 23, 2014 Flavio Mutti, PhD
|
|
- Alfonso Cosentino
- 5 anni fa
- Visualizzazioni
Transcript
1 Alberi rosso neri API a.a. 2013/2014 Gennaio 23, 2014 Flavio Mutti, PhD
2 2 Sommario Definizione Operazione di rotazione Inserimento Cancellazione Temi d esame
3 3 Introduzione Un albero rosso-nero è un albero binario con un flag di 1 bit per ogni nodo che codifica il colore (rosso o nero) Vincoli su come assegno il colore Approssimativamente bilanciato
4 4 Proprietà alberi binari Sia x un nodo in un albero binario di ricerca. 1. Se y è un nodo nel sottoalbero sinistro di x, allora key[y] key[x] 2. Se y è un nodo nel sottoalbero destro di x, allora key[x] key[y]
5 5 Proprietà red-black 1. Ogni nodo è rosso o nero 2. La radice è nera 3. Ogni foglia (NIL) è nera 4. Se un nodo è rosso, entrambi i figli sono neri 5. Per ogni nodo, tutti i percorsi che vanno dal nodo alle foglie discendenti contengono lo stesso numero di nodi neri
6 6 Proprietà red-black (1) Ogni nodo è rosso o nero (2) La radice è nera
7 7 Proprietà red-black (3) ogni foglia è nera (basta aggiungere un livello fittizio)
8 8 Proprietà red-black (4) se un nodo è rosso entrambi i suoi figli sono neri
9 9 Proprietà red-black (5) per ogni nodo n, tutti i percorsi da n ad una qualsiasi delle sue foglie discendenti contengono lo stesso numero di nodi neri
10 10 Sono alberi bilanciati?
11 11 Sono alberi bilanciati? Un albero rosso-nero senza nodi rossi è bilanciato: tutti i suoi livelli sono completi tranne al più l ultimo, al quale può mancare qualche foglia
12 12 Altezza nera Definizione: l altezza nera di un nodo x, indicata con bh(x), è il numero di nodi neri lungo un percorso che inizia dal nodo x (ma non lo include) e finisce in una foglia Cormen et al. Lemma: l altezza massima di un albero red-black con n nodi interni è 2 log(n + 1) Questo lemma è importante perché ne deriva subito che la complessità di funzioni classiche (MINIMUM, MAXIMUM, SEARCH, ) sugli alberi i ricerca diventano di complessità O(log n)
13 13 Rotazioni Inserimento e cancellazione modificano l albero L albero risultante potrebbe violare le proprietà red-black L operazione di rotazione serve a ripristinare le proprietà red-black
14 14 Esempio Left rotate x α y β γ
15 15 Esempio Left rotate x y α y x β γ Passaggio intermedio: se y è più grande di x allora y è più grande di x e devo rispettare la proprietà degli alberi binari di ricerca
16 16 Esempio Left rotate x y α y x γ β γ α β Nota bene. Il padre iniziale di x diventa il padre di y e y rimane nel precedente ramo (sinistro o destro) L idea chiave è quella di mantenere la proprietà degli alberi di ricerca
17 17 Esempio di Right rotate y x x γ α y β γ α β
18 18 Esercizio Effettuare una rotazione sinistra del nodo indicato nel seguente albero
19 19 Soluzione
20 20 Inserimento di un nodo z Come per gli alberi binari di ricerca, l inserimento di un nodo z in un RB tree cerca un cammino dalla root dell albero fino al nodo p che diventerà suo padre Una volta identificato p, z viene aggiunto come figlio sinistro (se key [z] < key [p]) o destro (se key [z] > key [p]) di p e colorato di rosso Quali RB-properties possono essere violate in conseguenza di questo inserimento? Solo due: la proprietà 2 (se z viene inserito in un albero vuoto) la proprietà 4 (se z viene aggiunto come figlio di un nodo rosso) La procedura che elimina violazioni delle RB-properties dovute all inserimento di una chiave è la RB-Insert-Fixup(T, z); qui z è il nodo che da luogo alla violazione
21 21 Algoritmi per l inserimento
22 22 RB-Insert-Fixup(T,z) Ripristina la proprietà 2 colorando la root z (che in questo caso è rossa) di nero Ripristina la proprietà 4, eseguendo (ricorsivamente) delle rotazioni sul nodo z; decidiamo in base a tre possibili casi: lo zio y di z è rosso lo zio y di z è nero e z è un figlio destro lo zio y di z è nero e z è un figlio sinistro
23 23 RB-Insert-Fixup(T,z) Attenzione ai casi simmetrici!!!!
24 24 Caso 1 Inserisco z Coloro z di ROSSO P(z) è ROSSO e figlio sinistro Caso 2 Caso 3 Caso 3 Caso 1 P(z) è ROSSO e figlio destro Caso 2 Caso 3 Caso 3
25 25 Caso 1: lo zio y è ROSSO 1. P[z] diventa NERO 2. Y diventa NERO 3. P[P[z]] diventa ROSSO
26 26 Caso 2: lo zio y di z è NERO e z è un figlio destro 1. Sposto z in alto di una posizione: z = p[z] 2. Ruoto a sinistra z: LEFT-ROTATE(T,z) 3. Ora ricado nel caso 3
27 27 Caso 3: lo zio y di z è NERO e z è un figlio sinistro 1. Coloro P[z] di nero 2. Coloro P[P[z]] di rosso 3. Ruoto verso destra P[P[z]]
28 28 Caso 2 : lo zio y di z è NERO e z è un figlio sinistro 1. Sposto z in alto di una posizione: z = p[z] 2. Ruoto a destra z: RIGHT-ROTATE(T,z) 3. Ora ricado nel caso 3
29 29 Caso 3 : lo zio y di z è NERO e z è un figlio destro 1. Coloro P[z] di nero 2. Coloro P[P[z]] di rosso 3. Ruoto verso sinistra P[P[z]]
30 30 Soluzione Inserisco Prima dell esecuzione di RB-INSERT-FIXUP 41 La radice di 41 è rossa? NO! Dopo l esecuzione di RB-INSERT-FIXUP
31 31 Soluzione Inserisco
32 32 Soluzione Inserisco Applico il CASO 3
33 33 Soluzione Inserisco new z Applico il CASO 1
34 34 Soluzione Perché alla fine coloro la radice di nero
35 35 Soluzione Inserisco Applico il caso 2 e successivamente il caso 3
36 36 Soluzione Continua z 12 z Applico il caso 2 e successivamente il caso 3
37 37 Soluzione Applico il caso 2 e successivamente il caso 3
38 38 Soluzione Inserisco Applico il caso 1
39 39 Cancellazione Sia z il nodo da cancellare, siano x e p l unico figlio ed il padre di z, rispettivamente (nota: se z `e una foglia, allora x è Nil). Per eliminare z, eseguiamo i seguenti passi: 1. Innanzitutto, rimuoviamo z collegando p con x (p diventa il padre di x ed x diventa il figlio di p); 2. z era rosso: possiamo semplicemente terminare perché l eliminazione di z non causa violazioni delle RB-properties 3. z era nero: potremmo causare una violazione della proprietà 5
40 40 Eliminazione di un rosso
41 41 Eliminazione di un nero e suo figlio rosso Il figlio rosso x acquisisce un extra credito diventando nero
42 42 Eliminazione di un nero e suo figlio nero Il figlio acquisisce un extra credito diventando doppio nero
43 43 Cancellazione di un nodo Per ristabilire la proprietà 5 nel caso di eliminazione di un nodo z nero, si attribuisce al nodo x (figlio di z) un extra credito Questo significa che se x è rosso lo coloriamo di nero, mentre se x è già nero assume un colore fittizio detto doppio nero, che serve per ricordarci che abbiamo collassato due nodi neri in uno. Nel calcolo della black-height un nodo doppio nero conta due volte. Infine, eseguiamo una procedura (RB-Delete-Fixup(T, x)) che spingerà, mediante rotazioni, l extra credito verso la radice dove verrà ignorato Se lungo il cammino verso la radice incontriamo un nodo rosso, esso sarà semplicemente colorato di nero
44 44 Algoritmi per la cancellazione
45 45 Algoritmi per la cancellazione Caso 1: il fratello w di x è rosso Caso 2: il fratello w di x è nero ed entrambi i figli di w sono neri Caso 3: il fratello w di x è nero, il figlio sinistro di w è rosso e il figlio destro di w è nero Caso 4: il fratello w di x è nero e il figlio destro di w è rosso
46 46 Algoritmi per la cancellazione Attenzione ai casi simmetrici!!!
47 47 Caso 2 Caso 1 Caso 3 Cancello z x è NERO e figlio sinistro Caso 2 Caso 4 Caso 3 Caso 4 Determino x, figlio del nodo cancellato Caso 4 x è NERO e figlio destro
48 48 Caso 1: il fratello w di x è rosso 1. Coloro w di nero 2. Coloro P[x] di rosso 3. Ruoto verso sinistra P[x] 4. W è impostato come figlio destro di P[x]
49 49 Caso 2: il fratello w di x è nero ed ha entrambi i figlio neri 1. Coloro w di rosso 2. Pongo x in posizione P[x]
50 50 Caso 2: il fratello w di x è nero ed ha entrambi i figlio neri Attenzione: B diventa nero perché compenso la rimozione di un nero da x e w
51 51 Caso 3: il fratello w di x è nero, il figlio sx di w è rosso e il dx è nero 1. Coloro il figlio sinistro di w di nero 2. Coloro w di rosso 3. Ruoto a destra w 4. Eseguo il caso 4
52 52 Caso 4: il fratello w di x è nero, il figlio sx di w è nero e il dx è rosso 1. Il colore di w diventa uguale a quello di P[x] 2. Coloro P[x] di nero 3. Coloro il figlio destro di w di nero
53 53 Caso 4: il fratello w di x è nero, il figlio sx di w è nero e il dx è rosso 1. Il colore di w diventa uguale a quello di P[x] 2. Coloro P[x] di nero 3. Coloro il figlio destro di w di nero 4. Ruoto a sinistra P[x]
54 54 Esercizio Cancellare dall albero riportato, e in ordine, i seguenti elementi: 8,12,19, 31,
55 55 Soluzione Cancello Il nodo cancellato è rosso, non eseguo la funzione di fix.
56 56 Soluzione Cancello Il nodo cancellato è nero, caso 2
57 57 Soluzione Continua 38 x Il nodo cancellato è nero, caso 2
58 58 Soluzione Cancello
59 59 Soluzione Cancello
60 60 Soluzione Cancello Non applico alcun caso perché il nodo è rosso
61 61 Soluzione Cancello
62 62 Soluzione Cancello Applico il caso 2
63 63 Soluzione Cancello Applico il caso 2
64 64 Soluzione Cancello
65 65 Temi d esame
66 66 Esercizio 3 del 20/2/2012 Si abbiano due alberi rosso-neri, rispettivamente di cardinalità m e n, con m << n. Si definisca, mediante opportuno pseudocodice un algoritmo che costruisca una lista (monodirezionale) ordinata in ordine crescente contenente tutti e soli gli elementi appartenenti ad entrambi gli alberi, cercando di ottenerne la miglior complessità temporale possibile. Si valuti tale complessità in funzione dei due parametri m e n.
67 67 Soluzione Uno schema di algoritmo per risolvere il problema posto è il seguente: Siano Tm e Tn rispettivamente i due alberi di cardinalità m e n; Si individui il massimo elemento di Tm (Questa operazione, per un albero rossonero costa O(log(m))); Si verifichi se questo elemento si trova in Tn (costo O(log(n))); Se l elemento corrente si trova anche in Tn lo si inserisca in testa alla lista, inizialmente vuota (costo O(1)); Si ripeta il ciclo precedente per tutti i successivi nodi di Tm in ordine decrescente. Si noti che per fare ciò occorre tenere traccia del nodo esaminato nella precedente iterazione del ciclo: indicando con N tale nodo, occorre quindi individuare il nodo a valore massimo a sinistra di N (assumendo che i nodi a valore minore siano a sinistra), ricerca che può comunque essere eseguite in tempo O(log(m)).
68 68 Soluzione La complessità totale è quindi O(m(log(m) + log(n))), che, essendo m < n è anche O(mlog(n)). Un altro algoritmo a complessità sostanzialmente equivalente potrebbe linearizzare Tm in una lista ordinata in ordine crescente (a costo O(m)) e successivamente, per ogni elemento della lista verificare se si trova in Tn (costo (O(log(n)) e in caso negativo eliminarlo dalla lista con costo O(1).
69 69 Soluzione Si noti che la scelta di un tale algoritmo è giustificata dall ipotesi che m << n. In caso contrario, ad esempio se n ed m fossero sostanzialmente vicini, converrebbe linearizzare entrambi gli alberi in O(n) e poi calcolarne l intersezione sempre in O(n). Tuttavia, se, ad esempio, m fosse O(log(n)), una complessità O(log2(n)) sarebbe nettamente preferibile. Si noti anche che in caso di ripetizioni entrambi gli algoritmi manterrebbero nella lista risultante il numero di occorrenze in Tm, non quello delle occorrenze in Tn.
70 70 Esercizio 4 10/09/2012 Si considerino gli algoritmi RB-INSERT e RB-DELETE per l inserimento e la cancellazione di nodi in e da alberi red-black. E' possibile, usando solo tali algoritmi, costruire un albero red-black fatto di esattamente 3 nodi, tutti neri? Se sì, scrivere una sequenza di invocazioni di RB-INSERT e RB-DELETE che crea l albero desiderato, motivando il perché la sequenza scritta produce la struttura richiesta.
71 71 Soluzione Per ottenere l'albero desiderato è sufficiente inserire 4 valori nell albero. Questo crea un albero in cui i nodi ai primi 2 livelli sono neri, e sul terzo livello c è un solo nodo di colore rosso, per esempio l albero seguente (la posizione del nodo rosso dipende dai valori inseriti, comunque è poco rilevante): Per ottenere l albero desiderato, è a questo punto sufficiente cancellare, mediante RB-DELETE, il nodo rosso.
72 72 Esercizio 4 27/09/2012 Si stabilisca quali sono i rapporti minimo e massimo tra il numero di nodi interni rossi e neri in un generico albero rosso-nero. Si giustifichi brevemente la risposta.
73 73 Soluzione Un albero può essere totalmente nero (si noti che normalmente ciò avviene solo attraverso qualche cancellazione che trasformi un nodo rosso in uno nero, perché ogni nuova inserzione in un albero totalmente nero inserisce un nodo rosso; quindi l unico modo per avere un albero totalmente nero senza operare cancellazioni è che esso consista della sola radice). In tal caso il rapporto minimo è evidentemente 0. Al contrario, il massimo numero di nodi rossi lo si può ottenere se ogni nodo nero ha entrambi i figli rossi e tutti i nodi pseudofoglie, ossia interni ma puntanti al NIL, sono rossi. In tal caso con una semplice induzione si dimostra che il rapporto massimo è 2.
74 74 Esercizio Dimostrare che, in un albero rosso-nero, il percorso semplice più lungo che va da un nodo x ad una foglia discendente di x ha una altezza al massimo doppia di quello del percorso semplice più breve dal nodo x a una foglia discendente
75 75 Soluzione Per le proprietà degli alberi rosso-neri tutti i cammini semplici da x ad una foglia discendente contengono lo stesso numero di nodi neri b. Poiché lungo un cammino semplice non possiamo avere due nodi rossi consecutivi, denotando con r il numero di nodi rossi in un cammino semplice da x ad una foglia discendente, abbiamo che 0 < r < b +1. Pertanto, per la lunghezza ò = r +b di un cammino da un nodo x ad una foglia discendente abbiamo b < l < 2b+1 Possiamo quindi concludere che il rapporto tra il più lungo e il più breve cammino semplice da x ad una foglia discendente è al più 2 + 1/b
Algoritmi e Strutture Dati
Alberi Rosso-Neri (RB-Trees) Maria Rita Di Berardini, Emanuela Merelli 1 1 Dipartimento di Matematica e Informatica Università di Camerino Alberi Rosso-Neri Definizione Altezza nera di un red-black tree
DettagliAlgoritmi e Strutture Dati
Alberi Rosso-Neri (RB-Trees) Maria Rita Di Berardini, Emanuela Merelli 1 1 Dipartimento di Matematica e Informatica Università di Camerino Alberi Rosso-Neri Altezza nera di un red-black tree Un albero
DettagliAlberi Rosso-Neri: definizione
Alberi Rosso-Neri: definizione Altezza di un red-black tree Un albero Rosso Nero (Red Black Tree, RB tree) èunalbero binario di ricerca in cui ad ogni nodo viene associato un colore rosso o nero Ogni nodo
DettagliAlgoritmi e Strutture Dati
Alberi Rosso-Neri (RB-Trees) Maria Rita Di Berardini, Emanuela Merelli 1 1 Dipartimento di Matematica e Informatica Università di Camerino A.A. 2007/08 Alberi Rosso-Neri: definizione Un albero rosso-nero
DettagliAlberi binari. Alberi binari di ricerca
Alberi binari Alberi binari Alberi binari di ricerca Cause: Inserimenti Sbilanciamento Cancellazioni Alberi binari Alberi binari di ricerca Alberi binari di ricerca bilanciati Alberi binari Alberi binari
DettagliAlgoritmi e Principi dell Informatica
Algoritmi e Principi dell Informatica Appello del 20 Febbraio 2012 Chi deve sostenere l esame integrato (API) deve svolgere tutti gli esercizi in 2h e 30 Chi deve sostenere solo il modulo di Informatica
DettagliDipartimento 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
DettagliAlberi rosso-neri. Le operazioni sugli alberi binari di ricerca hanno complessità proporzionale all altezza h dell albero.
Alberi rosso-neri Le operazioni sugli alberi binari di ricerca hanno complessità proporzionale all altezza h dell albero. Gli alberi rosso-neri sono alberi binari di ricerca in cui le operazioni Insert
Dettaglialgoritmi e strutture di dati
algoritmi e strutture di dati alberi rosso-neri m.patrignani contenuto definizione di alberi rosso-neri proprietà degli alberi rosso-neri complessità delle operazioni elementari rotazioni inserimenti e
DettagliAlberi 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
DettagliAlgoritmi e Strutture di Dati
Algoritmi e Strutture di Dati Alberi rosso-neri m.patrignani Contenuto Definizione di alberi rosso-neri Proprietà degli alberi rosso-neri Complessità delle operazioni elementari Rotazioni Inserimenti e
DettagliAlberi 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
DettagliDizionari. 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
DettagliAlberi 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
DettagliAlgoritmi e Strutture Dati. Alberi Bilanciati: Alberi Red-Black
Algoritmi e Strutture Dati Alberi Bilanciati: Alberi Red-Black Alberi bilanciati di ricerca Gli alberi binari di ricerca sono semplici da gestire (inserimenti e cancellazioni facili da implementare) ma
DettagliAlberi 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
DettagliDizionari. Dizionari con gli alberi. Alberi binari di ricerca. Realizzazione con alberi binari di ricerca. Alberi rosso-neri.
Dizionari Realizzazione con alberi binari di ricerca. Alberi rosso-neri. Dizionari con gli alberi Astro, Dado, Lana, Mela, Tasto,Vela, Zappa Astro Mela Tasto Zappa Alberi binari di ricerca Gli alberi binari
DettagliAlberi 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
DettagliAlberi 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
DettagliAlgoritmi e Principi dell'informatica Seconda Prova in Itinere - 14 Febbraio 2014
Algoritmi e Principi dell'informatica Seconda Prova in Itinere - 14 Febbraio 2014 Nome..Cognome.Matr. Laureando Avvisi importanti Il tempo a disposizione è di 1 ora e 30 minuti. Se non verranno risolti
DettagliAlgoritmi 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
DettagliAlgoritmi e Strutture Dati. Capitolo 3 Strutture dati elementari
lgoritmi e Strutture Dati Capitolo 3 Strutture dati elementari Gestione di collezioni di oggetti Tipo di dato: Specifica una collezione di oggetti e delle operazioni di interesse su tale collezione (es.
DettagliAlgoritmi e Strutture Dati. Alberi Bilanciati: Alberi Red-Black
Algoritmi e Strutture Dati Alberi Bilanciati: Alberi Red-Black Alberi bilanciati di ricerca Gli alberi binari di ricerca sono semplici da gestire (inserimenti e cancellazioni facili da implementare) ma
DettagliAlberi binari: definizione e alcune proprietà
Alberi binari: definizione e alcune proprietà Alberi binari Un albero binario è un albero con radice in cui ogni nodo ha al più due figli. In maniera più formale: Definizione. (Alberi binari) Un albero
DettagliGianpiero 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:
DettagliAlberi 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
DettagliAlgoritmi e Strutture Dati. Capitolo 3 Strutture dati elementari
Algoritmi e Strutture Dati Capitolo 3 Strutture dati elementari Gestione di collezioni di oggetti Tipo di dato: Specifica una collezione di oggetti e delle operazioni di interesse su tale collezione (es.
DettagliAlgoritmi 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)
DettagliAlberi 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
DettagliAlberi 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,
DettagliAlberi Binari di Ricerca: Definizione. Ricerca, inserimento, cancellazione, min, max, predecessore, successore.
Nella scorsa lezione: Alberi. Definizioni: come grafo e come struttura ricorsiva. Alberi binari: Attraversamenti inorder, preorder, postorder. Costruzione di un albero binario da un array. Esercizio: stampa
DettagliAlberi. CORDA Informatica. A. Ferrari. Testi da. Marco Bernardo Edoardo Bontà. Dispense del Corso di. Algoritmi e Strutture Dati
Alberi CORDA Informatica A. Ferrari Testi da Marco Bernardo Edoardo Bontà Dispense del Corso di Algoritmi e Strutture Dati Albero - definizione Albero Figli, fratelli, nodi, foglie Grado, livello, altezza,
DettagliAlberi. Alberi: definizioni. Alberi Binari. Esercizi su alberi binari: metodi ricorsivi. Struttura dati per alberi generici. ASD-L - Luca Tesei
Alberi Alberi: definizioni Alberi Binari Esercizi su alberi binari: metodi ricorsivi Struttura dati per alberi generici 1 Alberi Gli alberi sono strutture dati naturalmente ricorsive Un albero è un particolare
DettagliAlberi. 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;
DettagliCome aumentare gli alberi La soluzione di alcuni problemi algoritmici richiede la progettazione di una struttura dati appropriata.
Come aumentare gli alberi La soluzione di alcuni problemi algoritmici richiede la progettazione di una struttura dati appropriata. Spesso una tale struttura si può ottenere aumentando strutture dati note.
DettagliAlberi 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.
DettagliAlgoritmi 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
DettagliESERCIZI 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
DettagliIn questa lezione Alberi rosso-neri
In questa lezione Alberi rosso-neri Prof. E. Fachini - Intr. Alg. 1 ABR di altezza logaritmica Esistono vari criteri di bilanciamento di alberi binari che ne garantiscono l altezza logaritmica, per esempio:
DettagliHeap 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
DettagliMulti-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(
DettagliUn 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
DettagliLE 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
Dettaglid. 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
DettagliEsercizi Capitolo 6 - Alberi binari di ricerca
Esercizi Capitolo 6 - Alberi binari di ricerca Alberto Montresor 9 Agosto, 204 Alcuni degli esercizi che seguono sono associati alle rispettive soluzioni. Se il vostro lettore PDF lo consente, è possibile
DettagliAlgoritmo di ordinamento sul posto che ha tempo di esecuzione :
QuickSort Algoritmo di ordinamento sul posto che ha tempo di esecuzione : O(n2 ) nel caso peggiore O(n log n) nel caso medio Nonostante le cattive prestazioni nel caso peggiore, rimane il miglior algoritmo
DettagliEsercizio Per quali valori di t l albero in figura è un B-Albero legale?
Esercizi di Algoritmi e strutture dati II: B-Alberi. A cura di: Teresa E. NARDIELLO Esercizio 19.1-2 Per quali valori di t l albero in figura è un B-Albero legale? M D H Q T X B C F G J K L N P R S V W
DettagliEsercitazione 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)
DettagliGli heap. Sommario. Algoritmi e Programmazione Avanzata. Fulvio CORNO - Matteo SONZA REORDA Dip. Automatica e Informatica Politecnico di Torino
Gli heap Fulvio CORNO - Matteo SONZA REORDA Dip. Automatica e Informatica Politecnico di Torino 1 a.a. 2001/2002 Sommario Gli heap L algoritmo Heapsort Le code con priorità. 2 a.a. 2001/2002 Politecnico
DettagliAlgoritmi, Strutture Dati e Programmi. UD 3.d: Strutture Dati Dinamiche Alberi
Algoritmi, Strutture Dati e Programmi : Strutture Dati Dinamiche Alberi Prof. Alberto Postiglione AA 2007-2008 ALBERO BINARIO DI RICERCA Dispense, cap. 3.3.3 1 Albero Binario di Ricerca Struttura bidimensionale.
DettagliFondamenti teorici e programmazione
Fondamenti teorici e programmazione FTP(A) - modb Lezione 9 di ricerca binaria F.Bonchi Dip.to Informatica Fondamenti teorici e programmazione (A) - modb a.a. 2018/19 pag. 1 liberi Un albero libero è un
DettagliESERCIZI SUGLI HEAP BINOMIALI (CAPITOLO 20) Catalano Pietro 56/100592
ESERCIZI SUGLI HEAP BINOMIALI (CAPITOLO 20) Catalano Pietro 5/100592 20.1-1 Supponiamo che x sia un nodo di un albero binomiale contenuto in uno heap binomiale e che sibling[x] NIL. Se x non è una radice
DettagliGli heap. Sommario. Fulvio CORNO - Matteo SONZA REORDA Dip. Automatica e Informatica Politecnico di Torino
Gli heap Fulvio CORNO - Matteo SONZA REORDA Dip. Automatica e Informatica Politecnico di Torino 1 a.a. 2001/2002 Sommario Gli heap L algoritmo Heapsort Le code con priorità. 2 a.a. 2001/2002 Matteo SONZA
DettagliF(<M>, <w>) = 1, se quando M opera su w esistono due configurazioni di M. 0 altrimenti. Parte b
Algoritmi e Prin Appello del 16 Luglio 2015 Informatica 2 ore e 30 minuti. Chi deve sostenere solo il modulo di Informatica teorica deve svolgere gli Esercizi 1 e 2 in 1 ora e 15 minuti. Chi deve sostenere
DettagliCode a priorità. Progettazione di Algoritmi Matricole congrue a 1. Docente: Annalisa De Bonis
Code a priorità Progettazione di Algoritmi 2018-19 Matricole congrue a 1 Docente: Annalisa De Bonis 26 Coda a priorità Una coda a priorità è un collezione di elementi a ciascuno dei quali è assegnata una
Dettaglialla categoria di automi a minor potenza riconoscitiva possibile. }, dove k è un parametro.
Algoritmi e Prin Appello del 2 Settembre 20 Informatica 2 ore e 30 minuti. Chi deve sostenere solo il modulo di Informatica teorica deve svolgere gli Esercizi 1 e 2 in 1 ora e minuti. Chi deve sostenere
DettagliESERCITAZIONI DI INTRODUZIONE AGLI ALGORITMI (A.A. 08/09)
ESERCITAZIONI DI INTRODUZIONE AGLI ALGORITMI (A.A. 0/0) DISPENSA N. 6 Esercizi su alberi di ricerca e AVL Notazione: Per un albero T scriviamo T per indicare il numero dei nodi di T e h(t ) per indicare
DettagliProva 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).
DettagliAlberi 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
DettagliAlberi 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
DettagliEsercizi su alberi binari
Esercizi su alberi binari Esercizi svolti: Determinazione nodi contenti verifica completezza verifica quasi completezza lunghezza del cammino interno determinazione ultima foglia in un quasi completo verifica
DettagliAlbero 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
DettagliEsercizi proposti Risolvere i problemi seguenti su espressioni rappresentate come alberi binari, mediante la dichiarazione di tipo
Esercizi proposti 8 INDICZIONI DI CRTTERE GENERLE: Quando scrivete una funzione che ne utilizza una ausiliaria, chiedetevi sempre se l ausiliaria è necessaria, ricordando che è utile quando: (a) servono
DettagliPROGRAMMAZIONE 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
DettagliEsercizio. 2 i=i*2) j=j*2)
Esercizio 1 Esercizio 2 i=i*2) j=j*2) Soluzione Il frammento è composto da due parti quasi identiche. L unica differenza è il modo in cui crescono i contatori. Nella prima parte la crescita è lineare mentre
DettagliEsercizio 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
DettagliProblemi 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
DettagliStruttura 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
DettagliAlberi e alberi binari I Un albero è un caso particolare di grafo
Alberi e alberi binari I Un albero è un caso particolare di grafo I I I I È costituito da un insieme di nodi collegati tra di loro mediante archi Gli archi sono orientati (ogni arco esce da un nodo origine
DettagliAlberi e alberi binari I Un albero è un caso particolare di grafo
Alberi e alberi binari Un albero è un caso particolare di grafo È costituito da un insieme di nodi collegati tra di loro mediante archi Gli archi sono orientati (ogni arco esce da un nodo origine ed entra
DettagliStruttura 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
DettagliCorso di Programmazione
II Accertamento del 27 Marzo 2001 / A Risolvi i seguenti esercizi, riporta le soluzioni in modo chiaro negli appositi riquadri e giustifica sinteticamente le risposte utilizzando i fogli protocollo. Cosa
DettagliGLI ALBERI BINARI DI RICERCA. Cosimo Laneve
GLI ALBERI BINARI DI RICERCA Cosimo Laneve argomenti 1. alberi binari di ricerca 2. la ricerca di elementi e la complessità computazionale 3. operazione di cancellazione di elementi 4. esempi/esercizi
Dettaglidizionari alberi bilanciati
dizionari alberi bilanciati dizionari ADT che supportano le seguenti operazioni membership anche detta search insert delete o remove le liste e i BST sono dizionari maggio 2002 ASD2002 - Alberi bilanciati
DettagliEsame di Algoritmi e Strutture Dati Corso di Laurea in Ingegneria Informatica Canali A-L, M-Z
Esame di Algoritmi e Strutture Dati Corso di Laurea in Ingegneria Informatica Canali A-L, M-Z Anno Accademico 2002-2003 9 luglio 2002-03 Domanda 1, punti 6 Si consideri la seguente classe Java, in cui,
DettagliIl 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
DettagliAlgoritmi 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
DettagliAlgoritmi e Strutture di Dati
Algoritmi e Strutture di Dati Capitolo 0 - Code con priorità e insiemi disgiunti This work is licensed under the Creative Commons Attribution-NonCommercial-ShareAlike License. To view a copy of this license,
DettagliAlgoritmi e Strutture Dati
Alberi AVL Maria Rita Di Berardini, Emanuela Merelli 1 1 Dipartimento di Matematica e Informatica Università di Camerino A.A. 26/7 Alberi AVL Definizione (bilanciamento in altezza): un albero è bilanciato
DettagliAlgoritmi e Strutture Dati
Maria Rita Di Berardini, Emanuela Merelli Scuola di Scienze e Tecnologie Università di Camerino Definizione (bilanciamento in altezza): un albero è bilanciato in altezza se le altezze dei sottoalberi sinistro
DettagliAlgoritmi 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
DettagliLezione 12 Tabelle Hash
Lezione 12 Tabelle Hash Rossano Venturini rossano@di.unipi.it Pagina web del corso http://didawiki.cli.di.unipi.it/doku.php/informatica/all-b/start Esercizio 2 ABR: Visita Scrivere un programma che legga
DettagliAlgoritmi e Strutture Dati. Alberi binari di ricerca
Algoritmi e Strutture Dati Alberi binari di ricerca Alberto Montresor Università di Trento 2018/10/25 This work is licensed under a Creative Commons Attribution-ShareAlike 4.0 International License. Sommario
Dettaglialberi 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
DettagliIntroduzione agli algoritmi Prova di esame del 19/9/2016 Prof.sse E. Fachini - R. Petreschi. Parte prima
Introduzione agli algoritmi Prova di esame del 19/9/2016 Prof.sse E. Fachini - R. Petreschi Parte prima 1) Si dimostri il teorema sulla limitazione inferiore per il tempo asintotico di esecuzione nel caso
DettagliAlberi 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
DettagliUniversità degli Studi di L Aquila Facoltà di Scienze M.F.N. Corso di Laurea in Informatica. Modulo di Laboratorio di Algoritmi e Strutture Dati
Università degli Studi di L Aquila Facoltà di Scienze M.F.N. Corso di Laurea in Informatica Modulo di Laboratorio di Algoritmi e Strutture Dati Alberi binari Giovanna Melideo melideo@di.univaq.it 1 Alberi
DettagliProgrammazione Greedy I codici di Huffman
Programmazione Greedy I codici di Huffman Codifica dell informazione La rappresentazione ordinaria dell informazione prevede l impiego di un numero costante di bit; per esempio ad ogni carattere del codice
DettagliPer semplicità eliminiamo le ripetizioni nell'albero.
Albero binario di ricerca 20 40 100 95 Un albero binario di ricerca é un albero binario in cui ogni nodo ha un etichetta minore o uguale a quelle dei nodi nel sottoalbero radicato nel figlio destro e maggiore
DettagliAlberi binari (radicati e ordinati) della radice Il padre del nodo 5 e del nodo 3
Alberi binari (radicati e ordinati) Il figlio sinistro della radice Il padre del nodo 5 e del nodo 3 4 3 Il figlio sinistro del nodo 2 2 5 1 6 7 8 9 La radice Il figlio destro della radice una foglia Figlio
DettagliOrganigramma 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
DettagliDati e Algoritmi I (Pietracaprina) Esercizi su Priority Queue e Heap
Dati e Algoritmi I (Pietracaprina) Esercizi su Priority Queue e Heap g Dati e Algoritmi I (Pietracaprina): Esercizi 1 Problema 1 Si definisca un albero ternario completo di altezza h come un albero con
DettagliAlgoritmi e Principi dell Informatica
Algoritmi e Principi dell Informatica Appello del 27 Settembre 2012 Chi deve sostenere l esame integrato (API) deve svolgere tutti gli esercizi in 3 ore. Chi deve sostenere solo il modulo di Informatica
DettagliIndici 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
DettagliAlberi. Gli alberi sono una generalizzazione delle liste che consente di modellare delle strutture gerarchiche come questa: Largo. Fosco.
Alberi Alberi Gli alberi sono una generalizzazione delle liste che consente di modellare delle strutture gerarchiche come questa: Largo Fosco Dora Drogo Frodo Dudo Daisy Alberi Gli alberi sono una generalizzazione
DettagliABR di altezza logaritmica
R di altezza logaritmica Esistono vari criteri di bilanciamento di alberi binari di ricerca ce ne garantiscono l altezza logaritmica. iamiamo bilanciato ogni albero binario di altezza logaritmica nel numero
Dettagliricerca di un elemento, verifica dell appartenenza di un elemento
Alberi Binari di Ricerca Gli alberi binari di ricerca (o, alberi di ricerca binaria) sono strutture dati che consentono, su un insieme di elementi con un ordine totale le operazioni di: ricerca di un elemento,
Dettagli