La presentazione è in caricamento. Aspetta per favore

La presentazione è in caricamento. Aspetta per favore

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

Presentazioni simili


Presentazione sul tema: "Alberi Rosso-Neri Algoritmi e Strutture Dati 20 aprile 2001."— Transcript della presentazione:

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

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

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

4 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 lalbero binario bilanciato Alberi Rosso-Neri

5 Un esempio di albero Rosso-Nero

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

7 Proprietà n. 1 Ogni nodo dellalbero è rosso o nero

8 Proprietà n. 2 NIL Ogni foglia dellalbero (NIL) è nera NIL

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

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

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

12 Osservazione Proviamo a costruire un albero Rosso-Nero sbilanciato… NIL

13 Osservazione NIL

14 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 laltezza-nero di un albero Rosso-Nero come laltezza-nero della sua radice

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

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

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

18 Dimostrazione Lemma 2 Dimostriamo il Lemma 2 per induzione sullaltezza del nodo x. Se laltezza di x è 0, x è una foglia… questo implica che Il sottoalbero radicato in x ha 0 = nodi interni NIL

19 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.

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

21 Dimostrazione Lemma 1 Dim. Sia h laltezza dellalbero 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 laltezza-nero dellalbero è perlomeno h/2. Un albero Rosso-Nero con n nodi interni ha altezza al più 2lg(n+1)

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

23 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 dellalbero 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

24 Rotazioni Ai fini dellimplementazione delle procedure di ribilanciamento si rivela utile lintroduzione delle operazioni di left-rotation (rotazione sinistra) e right-rotation (rotazione destra) y x ba c y x b a c Right-Rotate(T,y) Left-Rotate(T,x)

25 Rotazione sinistra b z b y x a c y x a c z

26 Left-Rotate 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 b z b y x a c y x a c z

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

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

29 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]] …

30 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

31 Un esempio 1/ NIL 26 NIL Inseriamo nellalbero corrente lelemento x = 24

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

33 Un esempio 3/ NIL 26 NIL 24 NIL x

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

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

36 Un esempio NIL 26 NIL 24 NIL x


Scaricare ppt "Alberi Rosso-Neri Algoritmi e Strutture Dati 20 aprile 2001."

Presentazioni simili


Annunci Google