Algoritmi e Strutture Dati 20 aprile 2001

Slides:



Advertisements
Presentazioni simili
Andrea Zandatutoraggio strutture dati STRUTTURE DATI e LABORATORIO II ESERCITAZIONE N°14 albero di ricerca binario.
Advertisements

Strutture dati per insiemi disgiunti
Alberi binari Definizione Sottoalberi Padre, figli
Algoritmi e Strutture Dati
RB-alberi (Red-Black trees)
Code a priorità (Heap) Definizione
Alberi binari di ricerca
Breath-first search Visita in ampiezza di un grafo Algoritmo Esempio
Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Copyright © The McGraw - Hill Companies, srl 1 Stesso approccio.
Capitolo 3 Strutture dati elementari Algoritmi e Strutture Dati.
Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Copyright © The McGraw - Hill Companies, srl 1 Ordinamenti ottimi.
Capitolo 4 Ordinamento Algoritmi e Strutture Dati.
Algoritmi e Strutture Dati
Algoritmi e Strutture Dati
Capitolo 3 Strutture dati elementari Algoritmi e Strutture Dati.
Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Copyright © The McGraw - Hill Companies, srl 1 Stesso approccio.
Capitolo 6 Alberi di ricerca Algoritmi e Strutture Dati.
Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Copyright © The McGraw - Hill Companies, srl 1 Stesso approccio.
1 Strutture dati avanzate Vedremo alcune strutture dati che permettono di eseguire in modo particolarmente efficiente un determinato insieme di operazioni.
Algoritmi e strutture Dati - Lezione 7
Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Copyright © The McGraw - Hill Companies, srl Capitolo 6 Interrogazioni.
Il problema del dizionario
Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Capitolo 4 Ordinamento: Heapsort Algoritmi e Strutture Dati.
Algoritmi e Strutture Dati
Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Copyright © The McGraw - Hill Companies, srl Capitolo 6 Il problema.
Capitolo 4 Ordinamento Algoritmi e Strutture Dati.
Capitolo 9 Il problema della gestione di insiemi disgiunti (Union-find) Algoritmi e Strutture Dati.
Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Copyright © The McGraw - Hill Companies, srl Capitolo 6 Il problema.
Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Copyright © The McGraw - Hill Companies, srl Alberi AVL (Adelson-Velskii.
Interrogazioni su un albero binario di ricerca Search(S,k) – dato un insieme S ed un valore chiave k restituisce un puntatore x ad un elemento in S tale.
Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Copyright © The McGraw - Hill Companies, srl Alberi AVL (Adelson-Velskii.
Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Copyright © The McGraw - Hill Companies, srl Capitolo 6 Rotazioni.
Algoritmi e Strutture Dati
Capitolo 4 Ordinamento Algoritmi e Strutture Dati.
Algoritmi e Strutture Dati Alberi Binari di Ricerca.
Algoritmi e Strutture Dati (Mod. A)
Algoritmi e Strutture Dati
Dizionari alberi bilanciati.
Algoritmi e Strutture Dati
Modello dati ALBERO Albero: Albero: insieme di punti chiamati NODI e linee chiamate EDGES EDGE: linea che unisce due nodi distinti Radice (root): in una.
Modello dati ALBERO Albero: Albero: insieme di punti chiamati NODI e linee chiamate EDGES EDGE: linea che unisce due nodi distinti Radice (root): in una.
Heap binari e HeapSort.
Heap binomiali Gli heap binomiali sono strutture dati su cui si possono eseguire efficientemente le operazioni: Make(H) : crea uno heap vuoto Insert(H,
Alberi di ricerca binari
Anche la RB-Delete ha due fasi: Nella prima viene tolto un nodo y avente uno dei sottoalberi vuoto sostituendolo con la radice dellaltro sottoalbero. Per.
Ispezione lineare La funzione hash h(k,i) si ottiene da una funzione hash ordinaria h'(k) ponendo L’esplorazione inizia dalla cella h(k,0) = h'(k) e continua.
RB-insert(T, z) // z.left = z.right = T.nil Insert(T, z) z.color = RED // z è rosso. Lunica violazione // possibile delle proprietà degli alberi // rosso-neri.
Heap Ordinamento e code di priorità Ugo de Liguoro.
1/32 Algoritmi e Strutture Dati HEAP Anno accademico
alberi completamente sbilanciati
Algoritmi e Strutture Dati
Capitolo 6 Alberi di ricerca Algoritmi e Strutture Dati.
Alberi Alberi radicati : alberi liberi in cui un vertice è stato scelto come radice. Alberi liberi : grafi non orientati connessi e senza cicli. Alberi.
Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Copyright © The McGraw - Hill Companies, srl Capitolo 6 Rotazioni.
MODULO STRUTTURE DATI FONDAMENTALI: Strutture dinamiche
Capitolo 8 Code con priorità Algoritmi e Strutture Dati Camil Demetrescu, Irene Finocchi, Giuseppe F. Italiano.
Alberi rosso-neri Le operazioni sugli alberi binari di ricerca hanno complessità proporzionale all’altezza h dell’albero. Gli alberi rosso-neri sono alberi.
Algoritmi e strutture Dati - Lezione 7 1 Algoritmi di ordinamento ottimali L’algoritmo Merge-Sort ha complessità O(n log(n))  Algoritmo di ordinamento.
Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Copyright © The McGraw - Hill Companies, srl 1 Soluzione esercizio.
Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Copyright © The McGraw - Hill Companies, srl 1 Soluzione esercizio.
Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Capitolo 4 Ordinamento: Heapsort Algoritmi e Strutture Dati.
Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Copyright © The McGraw - Hill Companies, srl Capitolo 6 Il problema.
Capitolo 6 Il problema del dizionario Algoritmi e Strutture Dati.
Didattica e Fondamenti degli Algoritmi e della Calcolabilità Sesta giornata Risolvere efficientemente un problema in P: Il problema dell’ordinamento: Insertion.
Capitolo 4 Ordinamento: lower bound Ω(n log n) e MergeSort ((*) l’intera lezione) Algoritmi e Strutture Dati.
Algoritmi e Strutture Dati HeapSort. Select Sort: intuizioni L’algoritmo Select-Sort  scandisce tutti gli elementi dell’array a partire dall’ultimo elemento.
Capitolo 6 Alberi di ricerca Algoritmi e Strutture Dati Camil Demetrescu, Irene Finocchi, Giuseppe F. Italiano.
Prof.ssa Rossella Petreschi Lezione del 15 /10/2012 del Corso di Algoritmi e Strutture Dati Riferimenti: Paragrafo 7.4 del testo Kingston “Algorithms and.
Prof.ssa Rossella Petreschi Lezione del 15 /10/2012 del Corso di Algoritmica B-alberi Lezione n°5.
Transcript della presentazione:

Algoritmi e Strutture Dati 20 aprile 2001 Alberi Rosso-Neri Algoritmi e Strutture Dati 20 aprile 2001

Alberi Binari di Ricerca Gli alberi di ricerca binari consentono l’individuazione di un elemento al proprio interno in un tempo mediamente proporzionale all’altezza dell’albero considerato Costruiamo un albero a partire dalla sequenza: 4, 2, 6, 1, 3, 5, 7 3 = O(log(n)) 4 2 6 1 3 5 7

Alberi Binari di Ricerca Inseriamo gli stessi elementi con un diverso ordine: 1, 2, 3, 4, 5, 6, 7 4 5 6 1 2 3 7 7 = O(n)

Alberi Rosso-Neri Gli alberi Rosso-Neri sono alberi binari di ricerca estesi Ciascun nodo di tali alberi contiene un campo addizionale che riporta il suo colore Le operazioni di inserimento e cancellazione vengono opportunamente integrate in modo tale da rendere l’albero binario bilanciato

Un esempio di albero Rosso-Nero

Caratterizzazione La caratterizzazione degli alberi Rosso-Neri avviene attraverso la formulazione di quattro proprietà vincolanti

Proprietà n. 1 Ogni nodo dell’albero è rosso o nero 46 26 62 21 31 51 85

Proprietà n. 2 Ogni foglia dell’albero (NIL) è nera 52 45 NIL NIL NIL

Proprietà n.3 Se un nodo è rosso entrambi i suoi figli sono neri 42 12 78

Proprietà n.4 Dato un nodo, tutti i percorsi discendenti che raggiungono una foglia contengono lo stesso numero di nodi neri 65 42 73 32 51 NIL 26

Proprietà Ogni nodo è rosso o nero Ogni foglia (NIL) è nera Se un nodo è rosso entrambi i suoi figli sono neri Dato un nodo, tutti i percorsi discendenti che raggiungono una foglia contengono lo stesso numero di nodi neri

Osservazione Proviamo a costruire un albero Rosso-Nero sbilanciato… 1 4 5 6 1 2 3 NIL

Osservazione 1 NIL 2 NIL 3 NIL 4 NIL 5 NIL 6 NIL NIL

Altezza-nero Definiamo altezza-nero di un nodo x (black-height(x)) il numero di nodi neri che si incontrano in un qualsiasi cammino discendente da x verso una foglia Definiamo l’altezza-nero di un albero Rosso-Nero come l’altezza-nero della sua radice

Altezza-nero black-height(32) = 2 black-height(42) = 2 black-height(T) 65 42 73 32 51 NIL 26 black-height(42) = 2 black-height(T) = black-height(65) = 3

Lemma 1 Un albero Rosso-Nero con n nodi interni ha altezza al più 2lg(n+1)

Lemma 2 Dato un nodo x appartenente ad un albero Rosso-Nero, il sottoalbero ivi radicato contiene almeno 2bh(x)-1 nodi interni

Dimostrazione Lemma 2 Dimostriamo il Lemma 2 per induzione sull’altezza del nodo x. Se l’altezza di x è 0, x è una foglia… questo implica che Il sottoalbero radicato in x ha 0 = 20-1 nodi interni NIL

Dimostrazione Lemma 2 Consideriamo un nodo x che ha altezza > 0, esso avrà quindi due figli… Ciascuno dei due figli di x avrà altezza bh(x) oppure bh(x)-1. 6 8 2 6 2 8

Dimostrazione Lemma 2 Per l’ipotesi induttiva, poiché l’altezza dei figli di x è inferiore all’altezza di x possiamo affermare che ciascun figlio ha almeno 2bh(x)-1-1 nodi interni Quindi, il sottoalbero radicato in x ha almeno (2bh(x)-1-1) + (2bh(x)-1-1) + 1 nodi interni (2bh(x)-1-1) + (2bh(x)-1-1) + 1 = 2bh(x)-1 + 2bh(x)-1 –1 = 2*2bh(x)-1 – 1 = 2bh(x) –1

Dimostrazione Lemma 1 Un albero Rosso-Nero con n nodi interni ha altezza al più 2lg(n+1) Dim. Sia h l’altezza dell’albero considerato. La proprietà 3 degli alberi Rosso-Neri impone che almeno la metà dei nodi che separano la radice dalle foglie siano neri. Questo implica che l’altezza-nero dell’albero è perlomeno h/2.

Dimostrazione Lemma 1 Dall’applicazione del Lemma 2 possiamo affermare che il numero di nodi interni n è maggiore o uguale di 2h/2 –1 n 2h/2 –1 n +1 2h/2 log(n+1) h/2 h 2lg(n+1)

Alberi Rosso-Neri Il mantenimento delle proprietà caratterizzanti gli alberi Rosso-Neri deve essere garantito in corrispondenza delle comuni operazioni che vanno a modificare la struttura dell’albero stesso Le operazioni di inserimento e cancellazione già viste per gli alberi binari di ricerca vengono mantenute ed integrate con una successiva operazione di ribilanciamento

Rotazioni Ai fini dell’implementazione delle procedure di ribilanciamento si rivela utile l’introduzione delle operazioni di left-rotation (rotazione sinistra) e right-rotation (rotazione destra) y x b a c Right-Rotate(T,y) Left-Rotate(T,x)

Rotazione sinistra b z y x a c

Left-Rotate Left-Rotate(T,x) Yright[x] right[x] left[y] b z y x a c Left-Rotate(T,x) Yright[x] right[x] left[y] If left[y]  NIL then p[left[y]]  x p[y]p[x] If p[x] = NIL then root[T]  y else if x = left[p[x]] then left[p[x]]  y else right[p[x]]  y left[y]  x p[x]  y

Inserimento L’algoritmo di inserimento di un nodo x in un albero Rosso-Nero: Inserisce il nuovo nodo nell’albero secondo il tradizionale algoritmo di inserimento per alberi binari di ricerca Verifica se l’albero risultante viola le proprietà degli alberi Rosso-Neri In caso di violazione, si risale l’albero sino alla radice operando opportunamente rotazioni e cambiamenti di colore

Inserimento L’algoritmo di inserimento che presenteremo distingue tre possibili casi di intervento per ripristinare le proprietà degli alberi Rosso-Neri più altri tre simmetrici

RB-Insert(T,x) RB-Insert(T,x) Tree-Insert(T,x) color[x] RED While x  root[T] and color[p[x]] = RED do if p[x] = left[p[p[x]]] then y  right[p[p[x]]] if color[y] = RED then color[p[x]] = BLACK color[y] = BLACK color[p[p[x]]] = RED x p[p[x]] …

RB-Insert(T,x) …. else if x = right[p[x]] then x  p[x] Left-Rotate(T,x) color[p[x]] = BLACK color[p[p[x]]] = RED Right-Rotate(T,p[p[x]]) else Color[root[T]]  BLACK

Un esempio 1/3 Inseriamo nell’albero corrente l’elemento x = 24 65 42 73 32 51 NIL 26 NIL NIL NIL NIL NIL

Un esempio 2/3 Ci troviamo nel terzo caso della procedura di ribilanciamento 65 42 73 32 51 NIL p[p[x]] p[x] 26 NIL NIL NIL x 24 NIL NIL NIL

Un esempio 3/3 65 42 73 32 51 NIL 26 24 x

Cancellazione L’algoritmo di cancellazione di un nodo x da un albero Rosso-Nero opera secondo la stessa filosofia dell’algoritmo di inserimento: Cancella il nodo dall’albero secondo il tradizionale algoritmo di cancellazione per alberi binari di ricerca Verifica se l’albero risultante viola le proprietà degli alberi Rosso-Neri In caso di violazione, si risale l’albero sino alla radice operando opportunamente rotazioni e cambiamenti di colore

Cancellazione L’algoritmo di cancellazione prevede quattro possibili casi di intervento più altri quattro simmetrici La complessità di tale algoritmo è di ordine O(h)

Un esempio 65 26 73 24 42 NIL NIL x 32 51 NIL NIL NIL NIL NIL NIL