Alberi Rosso-Neri - PowerPoint PPT Presentation

1 / 36
About This Presentation
Title:

Alberi Rosso-Neri

Description:

Alberi Rosso-Neri Algoritmi e Strutture Dati 20 aprile 2001 Alberi Binari di Ricerca Alberi Binari di Ricerca Caratterizzazione Propriet n. 1 Propriet n. 2 ... – PowerPoint PPT presentation

Number of Views:76
Avg rating:3.0/5.0
Slides: 37
Provided by: UMBE48
Category:
Tags: alberi | neri | nero | rosso

less

Transcript and Presenter's Notes

Title: Alberi Rosso-Neri


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

2
Alberi Binari di Ricerca
Gli alberi di ricerca binari consentonolindividu
azione di un elemento al propriointerno in un
tempo mediamente proporzionaleallaltezza
dellalbero considerato
Costruiamo un albero a partire dalla sequenza4,
2, 6, 1, 3, 5, 7
3
Alberi Binari di Ricerca
Inseriamo gli stessi elementi con un diverso
ordine
1, 2, 3, 4, 5, 6, 7
4
Alberi Rosso-Neri
  • Gli alberi Rosso-Neri sono alberi binari di
    ricerca estesi
  • Ciascun nodo di tali alberi contiene uncampo
    addizionale che riporta il suo colore
  • Le operazioni di inserimento e cancellazionevengo
    no opportunamente integrate in modotale da
    rendere lalbero binario bilanciato

5
Un esempio di albero Rosso-Nero
6
Caratterizzazione
La caratterizzazione degli alberi
Rosso-Neriavviene attraverso la formulazione
diquattro proprietà vincolanti
7
Proprietà n. 1
Ogni nodo dellalbero è rosso o nero
8
Proprietà n. 2
Ogni foglia dellalbero (NIL) è nera
NIL
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
11
Proprietà
  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

12
Osservazione
Proviamo a costruire un albero Rosso-Nero sbilanci
ato
13
Osservazione
1
2
3
4
5
6
NIL
14
Altezza-nero
  • Definiamo altezza-nero di un nodo
    x(black-height(x)) il numero di nodi neriche si
    incontrano in un qualsiasi camminodiscendente da
    x verso una foglia
  • Definiamo laltezza-nero di un alberoRosso-Nero
    come laltezza-nero della suaradice

15
Altezza-nero
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(n1)
17
Lemma 2
Dato un nodo x appartenente ad un
alberoRosso-Nero, il sottoalbero ivi radicato
contiene almeno 2bh(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 20-1 nodi interni
19
Dimostrazione Lemma 2
Consideriamo un nodo x che ha altezza gt 0, esso
avrà quindi due figli
Ciascuno dei due figli di x avrà altezza bh(x)
oppure bh(x)-1.
6
8
2
20
Dimostrazione Lemma 2
Per lipotesi induttiva, poiché laltezza dei
figli di x è inferiore allaltezza 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
22bh(x)-1 1 2bh(x)
1
21
Dimostrazione Lemma 1
Un albero Rosso-Nero con n nodi interni
ha altezza al più 2lg(n1)
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.
22
Dimostrazione Lemma 1
Dallapplicazione 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(n1) h/2 h
2lg(n1)
23
Alberi Rosso-Neri
Il mantenimento delle proprietà
caratterizzanti gli alberi Rosso-Neri deve essere
garantito in corrispondenza delle comuni
operazioni chevanno a modificare la struttura
dellalbero stesso Le operazioni di inserimento
e cancellazionegià viste per gli alberi binari
di ricerca vengonomantenute ed integrate con una
successiva operazione di ribilanciamento
24
Rotazioni
Ai fini dellimplementazione delle proceduredi
ribilanciamento si rivela utile
lintroduzione delle operazioni di left-rotation
(rotazione sinistra) e right-rotation (rotazione
destra)
25
Rotazione sinistra
26
Left-Rotate
Left-Rotate(T,x) Y?rightx rightx? lefty If
lefty ? NIL then plefty ? x py?px If
px NIL then rootT ? y else if x
leftpx then leftpx ? y else rightpx
? y lefty ? x px ? y
27
Inserimento
  • Lalgoritmo di inserimento di un nodo x in
    unalbero Rosso-Nero
  • Inserisce il nuovo nodo nellalbero secondoil
    tradizionale algoritmo di inserimento per
    alberibinari di ricerca
  • Verifica se lalbero risultante viola le
    proprietàdegli alberi Rosso-Neri
  • In caso di violazione, si risale lalbero sino
    allaradice operando opportunamente rotazioni
    ecambiamenti di colore

28
Inserimento
Lalgoritmo di inserimento che presenteremodistin
gue tre possibili casi di intervento
perripristinare le proprietà degli alberi
Rosso-Neripiù altri tre simmetrici
29
RB-Insert(T,x)
RB-Insert(T,x) Tree-Insert(T,x) colorx?
RED While x ? rootT and colorpx RED do
if px leftppx then y ?
rightppx if colory RED then
colorpx BLACK colory
BLACK colorppx RED x ?ppx
30
RB-Insert(T,x)
. else if x rightpx then x ?
px Left-Rotate(T,x) colorpx
BLACK colorppx RED
Right-Rotate(T,ppx) else . ColorrootT
? BLACK
31
Un esempio 1/3
Inseriamo nellalbero corrente lelemento x 24
26
NIL
NIL
NIL
NIL
NIL
32
Un esempio 2/3
Ci troviamo nel terzo caso della proceduradi
ribilanciamento
ppx
px
26
NIL
NIL
NIL
x
NIL
24
NIL
NIL
33
Un esempio 3/3
34
Cancellazione
  • Lalgoritmo di cancellazione di un nodo x da
    unalbero Rosso-Nero opera secondo la
    stessafilosofia dellalgoritmo di inserimento
  • Cancella il nodo dallalbero secondo
    iltradizionale algoritmo di cancellazione
    peralberi binari di ricerca
  • Verifica se lalbero risultante viola le
    proprietàdegli alberi Rosso-Neri
  • In caso di violazione, si risale lalbero sino
    allaradice operando opportunamente rotazioni
    ecambiamenti di colore

35
Cancellazione
  • Lalgoritmo di cancellazione prevede
    quattropossibili casi di intervento più altri
    quattrosimmetrici
  • La complessità di tale algoritmo è di ordineO(h)

36
Un esempio
65
26
73
42
NIL
NIL
24
x
32
51
NIL
NIL
NIL
NIL
NIL
NIL
Write a Comment
User Comments (0)
About PowerShow.com