1 © alberto montresor algoritmi e strutture dati alberi binari di ricerca alberto montresor...

82
1 © Alberto Montresor Algoritmi e Strutture Dati Alberi binari di ricerca Alberto Montresor Università di Trento This work is licensed under the Creative Commons Attribution- NonCommercial-ShareAlike License. To view a copy of this license, visit http://creativecommons.org/licenses/by-nc-sa/2.5/ or send a letter to Creative Commons, 543 Howard Street, 5th Floor, San Francisco, California, 94105, USA.

Upload: baldovino-elia

Post on 01-May-2015

214 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: 1 © Alberto Montresor Algoritmi e Strutture Dati Alberi binari di ricerca Alberto Montresor Università di Trento This work is licensed under the Creative

1© Alberto Montresor

Algoritmi e Strutture DatiAlberi binari di ricerca

Alberto MontresorUniversità di Trento

This work is licensed under the Creative Commons Attribution-NonCommercial-ShareAlike License. To view a copy of this license, visit http://creativecommons.org/licenses/by-nc-sa/2.5/ or send a letter to Creative Commons, 543 Howard Street, 5th Floor, San Francisco, California, 94105, USA.

Page 2: 1 © Alberto Montresor Algoritmi e Strutture Dati Alberi binari di ricerca Alberto Montresor Università di Trento This work is licensed under the Creative

2© Alberto Montresor

DizionariDizionari

✦Dizionario

✦Insieme dinamico che implementa le seguenti funzionalità

Item lookup(Item k)

insert(Item k, Item v)

remove(Item k)

✦Esempi di implementazione

✦Array ordinato✦ Ricerca O(log n), inserimento/cancellazione O(n)

✦Lista non ordinata✦ Ricerca/cancellazione O(n), inserimento O(1)

Page 3: 1 © Alberto Montresor Algoritmi e Strutture Dati Alberi binari di ricerca Alberto Montresor Università di Trento This work is licensed under the Creative

3© Alberto Montresor

Alberi binari di ricerca (ABR)Alberi binari di ricerca (ABR)

✦Idea “ispiratrice”

✦Portare l'idea di ricerca binaria in un albero

✦Definizione

✦Ogni nodo u contiene una chiave u.key associata ad un valore u.value

✦Le chiavi appartengono ad un insieme totalmente ordinato

✦Proprietà

✦ Le chiavi dei nodi del sottoalbero sinistro di u sono minori di u.key

✦ Le chiavi dei nodi del sottoalbero destro di u sono maggiori di u.key

10

6 15

4 8 12 18

Page 4: 1 © Alberto Montresor Algoritmi e Strutture Dati Alberi binari di ricerca Alberto Montresor Università di Trento This work is licensed under the Creative

4© Alberto Montresor

Alberi binari di ricerca (ABR)Alberi binari di ricerca (ABR)

✦Proprietà di ricerca

✦Le proprietà 1. e 2. permettono di realizzare un algoritmo di ricerca dicotomica

✦Domanda – Proprietà di ordine

✦Come devo visitare l'albero per ottenere la lista ordinata dei valori?

✦Dettagli implementativi

✦Ogni nodo deve mantenere✦Figlio sinistro, destro✦Padre✦Chiave✦Valore

Figliosinistro

Padre

Figliodestro

Key, Value

Page 5: 1 © Alberto Montresor Algoritmi e Strutture Dati Alberi binari di ricerca Alberto Montresor Università di Trento This work is licensed under the Creative

5© Alberto Montresor

Alberi binari di ricerca: SpecificaAlberi binari di ricerca: Specifica

✦Operazioni ammesse su ABR

Tree key()

Tree value()

Tree left()

Tree right()

Tree parent()

Tree lookup(Item k)

Tree insert(Item k, Item d)

Tree delete()

Tree successorNode(Item T)

Tree predecessorNode(Item T)

Tree min()

Tree max()

Page 6: 1 © Alberto Montresor Algoritmi e Strutture Dati Alberi binari di ricerca Alberto Montresor Università di Trento This work is licensed under the Creative

6© Alberto Montresor

4 < 64 sta nel sottoalbero sinistro di 6

4 < 64 sta nel sottoalbero sinistro di 6

Ricerca: esempioRicerca: esempio

Ricerca del valore 4Ricerca del valore 4

66

22 88

11 44

33

T

Page 7: 1 © Alberto Montresor Algoritmi e Strutture Dati Alberi binari di ricerca Alberto Montresor Università di Trento This work is licensed under the Creative

7© Alberto Montresor

4 > 24 sta nel sottoalbero destro di 2

4 > 24 sta nel sottoalbero destro di 2

Ricerca: esempioRicerca: esempio

T

66

22 88

11 44

33

Ricerca del valore 4Ricerca del valore 4

Page 8: 1 © Alberto Montresor Algoritmi e Strutture Dati Alberi binari di ricerca Alberto Montresor Università di Trento This work is licensed under the Creative

8© Alberto Montresor

4 = 4trovato!

4 = 4trovato!

Ricerca: esempioRicerca: esempio

T

66

22 88

11 44

33

Ricerca del valore 4Ricerca del valore 4

Page 9: 1 © Alberto Montresor Algoritmi e Strutture Dati Alberi binari di ricerca Alberto Montresor Università di Trento This work is licensed under the Creative

9© Alberto Montresor

Ricerca: ImplementazioneRicerca: Implementazione

Ricorsiva

Iterativa

Page 10: 1 © Alberto Montresor Algoritmi e Strutture Dati Alberi binari di ricerca Alberto Montresor Università di Trento This work is licensed under the Creative

10

© Alberto Montresor

Ricerca del minimo e del massimo: EsempiRicerca del minimo e del massimo: Esempi

Sottoalbero conradice 2:

- minimo 1

- massimo 4 66

22

11

33

4

T

Sottoalbero conradice 8:

- minimo 8

- massimo 15

88

44 1212

151599

Page 11: 1 © Alberto Montresor Algoritmi e Strutture Dati Alberi binari di ricerca Alberto Montresor Università di Trento This work is licensed under the Creative

11

© Alberto Montresor

Ricerca del minimo e del massimo: Pseudo-codiceRicerca del minimo e del massimo: Pseudo-codice

Page 12: 1 © Alberto Montresor Algoritmi e Strutture Dati Alberi binari di ricerca Alberto Montresor Università di Trento This work is licensed under the Creative

12

© Alberto Montresor

Ricerca del successore/predecessoreRicerca del successore/predecessore

✦Definizione

✦Il successore di un nodo u è il più piccolo nodo maggiore di u

✦Due casi

✦u ha un figlio destro

✦Il successore u' è il minimodel sottoalbero destro di u

✦Esempio: successore di 2 è 3

T

6

1 4

8

3

12

159

2

u

u'

Page 13: 1 © Alberto Montresor Algoritmi e Strutture Dati Alberi binari di ricerca Alberto Montresor Università di Trento This work is licensed under the Creative

13

© Alberto Montresor

Ricerca del successore/predecessoreRicerca del successore/predecessore

✦Definizione

✦Il successore di un nodo u è il più piccolo nodo maggiore di u

✦Due casi

✦u non ha un figlio destro

✦Il successore è il primo avo u' tale per cui u sta nel sottoalbero sinistro di u'

✦Esempio: successore di 4 è 6

T

66

11 33

88

44

1212

151599

22

u

u'

Page 14: 1 © Alberto Montresor Algoritmi e Strutture Dati Alberi binari di ricerca Alberto Montresor Università di Trento This work is licensed under the Creative

14

© Alberto Montresor

Ricerca del successore: Pseudo-codice (iterativo)Ricerca del successore: Pseudo-codice (iterativo)

Page 15: 1 © Alberto Montresor Algoritmi e Strutture Dati Alberi binari di ricerca Alberto Montresor Università di Trento This work is licensed under the Creative

15

© Alberto Montresor

Ricerca: costo computazionaleRicerca: costo computazionale

✦In generale

✦Le operazioni di ricerca sonoconfinate ai nodi posizionati lungo un singolo percorso (path) dalla radice ad una foglia

✦Tempo di ricerca: O(h)

✦Domanda

✦Qual è il caso pessimo?

✦Domanda

✦Qual è il caso ottimo?

h = altezza dell’albero

Page 16: 1 © Alberto Montresor Algoritmi e Strutture Dati Alberi binari di ricerca Alberto Montresor Università di Trento This work is licensed under the Creative

16

© Alberto Montresor

InserimentoInserimento

T

5 < 6Inserimento valore 5

66

22

11

33

4

88

44 1212

151599

5 > 2

55

5 > 4

Page 17: 1 © Alberto Montresor Algoritmi e Strutture Dati Alberi binari di ricerca Alberto Montresor Università di Trento This work is licensed under the Creative

17

© Alberto Montresor

Inserimento: pseudo-codice (iterativo)Inserimento: pseudo-codice (iterativo)

Page 18: 1 © Alberto Montresor Algoritmi e Strutture Dati Alberi binari di ricerca Alberto Montresor Università di Trento This work is licensed under the Creative

18

© Alberto Montresor

Inserimento: pseudo-codice (iterativo)

Page 19: 1 © Alberto Montresor Algoritmi e Strutture Dati Alberi binari di ricerca Alberto Montresor Università di Trento This work is licensed under the Creative

19

© Alberto Montresor

CancellazioneCancellazione

✦Caso 1: Il nodo u da eliminare non ha figli

✦Semplicemente si elimina

✦Esempio:

✦Eliminazione nodo 5

T

66

22

11

33

4

88

44 1212

15159955

u

Page 20: 1 © Alberto Montresor Algoritmi e Strutture Dati Alberi binari di ricerca Alberto Montresor Università di Trento This work is licensed under the Creative

20

© Alberto Montresor

CancellazioneCancellazione

✦Caso 2: Il nodo u da eliminare ha un unico figlio f

✦Si elimina u

✦Si attacca f all'ex-padre p di uin sostituzione di u (short-cut)

✦Esempio:

✦Cancellazione di 4

T

66

22

11

33

88

44 1212

151599

u

f

p

Page 21: 1 © Alberto Montresor Algoritmi e Strutture Dati Alberi binari di ricerca Alberto Montresor Università di Trento This work is licensed under the Creative

21

© Alberto Montresor

CancellazioneCancellazione

✦Caso 3: Il nodo u da eliminare ha due figli

✦Si individua il successore s del nodo uIl successore non ha figlio sinistro

✦Si “stacca” il successore

✦Si attacca l'eventualefiglio destro di s alpadre di s (short-cut)

✦Si copia s su u

✦Si rimuove il nodo s

T

77

22

11

33

88

55 1212

151599s

u

44

66

33

Page 22: 1 © Alberto Montresor Algoritmi e Strutture Dati Alberi binari di ricerca Alberto Montresor Università di Trento This work is licensed under the Creative

22

© Alberto Montresor

Cancellazione: Pseudo-codiceCancellazione: Pseudo-codice

Page 23: 1 © Alberto Montresor Algoritmi e Strutture Dati Alberi binari di ricerca Alberto Montresor Università di Trento This work is licensed under the Creative

23

© Alberto Montresor

Cancellazione – Dimostrazione di correttezza

✦Caso 1 - nessun figlio

✦Eliminare foglie non cambia la proprietà di ordine dei nodi rimanenti

✦Caso 2 - solo un figlio (destro o sinistro)

✦Se u è il figlio destro (sinistro) di p, tutti i i valori nel sottoalbero di f sono maggiori (minori) di p

✦Quindi f può essere attaccato come figlio destro (sinistro) di p al posto di u

✦Caso 3 - due figli

✦Il successore s ✦è sicuramente maggiore di tutti i nodi del sottoalbero sinistro di u✦è sicuramente minore di tutti i nodi del sottoalbero destro di u

✦Quindi può essere sostituito a u

Page 24: 1 © Alberto Montresor Algoritmi e Strutture Dati Alberi binari di ricerca Alberto Montresor Università di Trento This work is licensed under the Creative

24

© Alberto Montresor

Modifica: costo computazionaleModifica: costo computazionale

✦In generale

✦Le operazioni di modifica sonoconfinate ai nodi posizionati lungo un singolo percorso (path) dalla radice ad una foglia

✦Tempo di ricerca: O(h)

h = altezza dell’albero

Page 25: 1 © Alberto Montresor Algoritmi e Strutture Dati Alberi binari di ricerca Alberto Montresor Università di Trento This work is licensed under the Creative

25

© Alberto Montresor

Complessità mediaComplessità media

✦Qual è l'altezza media di un albero di ricerca?

✦Caso generale (inserimenti + cancellazione)✦Difficile da trattare

✦Caso “semplice”: inserimenti in ordine casuale✦E' possibile dimostrare che l'altezza media è O(log n)

✦Fattore di bilanciamento

✦Il fattore di bilanciamento β(v) di un nodo v è la massima differenza di altezza fra i sottoalberi di v

✦Esempio: albero perfetto:

✦β(v)=0 per ogni nodo v

✦In generale:

✦Sono necessarie tecniche per mantenere bilanciato l'albero

Page 26: 1 © Alberto Montresor Algoritmi e Strutture Dati Alberi binari di ricerca Alberto Montresor Università di Trento This work is licensed under the Creative

26

© Alberto Montresor

Algoritmi di bilanciamentoAlgoritmi di bilanciamento

✦Alberi AVL (Adel'son-Vel'skii e Landis, 1962)

✦β(v) ≤ 1 per ogni nodo v

✦Bilanciamento ottenuto tramite rotazioni

✦B-Alberi (Bayer, McCreight, 1972)

✦β(v) = 0 per ogni nodo v

✦Specializzati per strutture in memoria secondaria

✦Alberi 2-3 (Hopcroft, 1983)

✦β(v) = 0 per ogni nodo v

✦Bilanciamento ottenuto tramite merge/split, grado variabile

✦B-alberi binari (Andersson, 1993)

✦Alberi Red-Black (Bayer, 1972)

Page 27: 1 © Alberto Montresor Algoritmi e Strutture Dati Alberi binari di ricerca Alberto Montresor Università di Trento This work is licensed under the Creative

27

© Alberto Montresor

T3

T3

T1

T2

Esempio di rotazione

v

u

T1T2

v

u

Page 28: 1 © Alberto Montresor Algoritmi e Strutture Dati Alberi binari di ricerca Alberto Montresor Università di Trento This work is licensed under the Creative

28

© Alberto Montresor

Alberi Rosso-Nero (Red-Black Treee, RB-Tree)

✦Un albero Red-Black è un albero binario di ricerca in cui:

✦Ogni nodo è colorato di rosso o di nero

✦Le chiavi vengono mantenute solo nei nodi interni dell’albero

✦Le foglie sono costituite da nodi nil

✦Un albero Red-Black deve soddisfare i seguenti vincoli:

1. La radice è nera

✦ Tutte le foglie sono nere

✦ Entrambi i figli di un nodo rosso sono neri

✦ Tutti i cammini semplici da ogni nodo u ad una delle foglie contenute nel sottoalbero radicato in u hanno lo stesso numero di nodi neri

Page 29: 1 © Alberto Montresor Algoritmi e Strutture Dati Alberi binari di ricerca Alberto Montresor Università di Trento This work is licensed under the Creative

29

© Alberto Montresor

Alberi Red-Black

✦Ogni nodo mantiene

✦parent puntatore al padre

✦left, right puntatori ai figli sinistro/destro

✦color colore

✦key, data chiave e dati

✦Nodo Nil

✦nodo sentinella il cui scopo è evitare di trattare diversamente i puntatori ai nodi dai puntatori nil

✦al posto di un puntatore nil, si usa un puntatore ad un nodo Nil

✦ne esiste solo uno, per risparmiare memoria

✦nodo con figli Nil → foglia nell'ABR corrispondente

Page 30: 1 © Alberto Montresor Algoritmi e Strutture Dati Alberi binari di ricerca Alberto Montresor Università di Trento This work is licensed under the Creative

30

© Alberto Montresor

Alberi Red-Black

✦Definizione:

✦Il numero di nodi neri lungo ogni percorso da un nodo v (escluso) ad ogni foglia (inclusa) del suo sottoalbero è detto altezza nera di v, indicato b(v)

✦Ben definito perché tutti i percorsi hanno lo stesso numero di nodi neri (regola 4)

✦Definizione:

✦L’altezza nera di un albero Red-Black è pari all’altezza nera della sua radice

Page 31: 1 © Alberto Montresor Algoritmi e Strutture Dati Alberi binari di ricerca Alberto Montresor Università di Trento This work is licensed under the Creative

31

© Alberto Montresor

Alberi Red-Black: esempio IAlberi Red-Black: esempio I

3. Entrambi i figli di un nodo rosso sono neri.Ma un nodo nero può avere figli neri!

30

70

85

5

60

80

10

90

15

20

50

40 55

65

NilNil

Nil Nil Nil

Nil Nil NilNil

Nil Nil Nil Nil NilNil

Page 32: 1 © Alberto Montresor Algoritmi e Strutture Dati Alberi binari di ricerca Alberto Montresor Università di Trento This work is licensed under the Creative

32

© Alberto Montresor

Alberi Red-Black: esempio IAlberi Red-Black: esempio I

4. Ogni percorso da un nodo interno ad un nodo Nil ha lo stesso numero di nodi neri.Altezza nera di questo albero: 3

30

70

85

5

60

80

10

90

15

20

50

40 55

65

NilNil

Nil Nil Nil

Nil Nil NilNil

Nil Nil Nil Nil NilNil

Page 33: 1 © Alberto Montresor Algoritmi e Strutture Dati Alberi binari di ricerca Alberto Montresor Università di Trento This work is licensed under the Creative

33

© Alberto Montresor

Alberi Red-Black: più colorazioni sono possibiliAlberi Red-Black: più colorazioni sono possibili

30

70

85

5

60

80

10

90

15

20

50

40 55

65

NilNil

Nil Nil Nil

Nil Nil NilNil

Nil Nil Nil Nil NilNil

Albero Red-Black con 3 nodi neri lungo ogni percorso dalla radice ai nodi Nil

Page 34: 1 © Alberto Montresor Algoritmi e Strutture Dati Alberi binari di ricerca Alberto Montresor Università di Trento This work is licensed under the Creative

34

© Alberto Montresor

Alberi Red-Black: più colorazioni sono possibiliAlberi Red-Black: più colorazioni sono possibili

30

70

85

5

60

80

10

90

15

20

50

40 55

65

NilNil

Nil Nil Nil

Nil Nil NilNil

Nil Nil Nil Nil NilNil

Albero Red-Black con 3 nodi neri lungo ogni percorso dalla radice ai nodi Nil

Page 35: 1 © Alberto Montresor Algoritmi e Strutture Dati Alberi binari di ricerca Alberto Montresor Università di Trento This work is licensed under the Creative

35

© Alberto Montresor

Alberi Red-Black: colorazione diversa, altezza nera diversaAlberi Red-Black: colorazione diversa, altezza nera diversa

30

70

8560

80

10

90

15

20

50 65Nil Nil Nil Nil

Nil Nil Nil Nil Nil Nil NilNil

Albero RB con 3 nodi neri lungo ogni percorso dalla radice ai nodi Nil

Page 36: 1 © Alberto Montresor Algoritmi e Strutture Dati Alberi binari di ricerca Alberto Montresor Università di Trento This work is licensed under the Creative

36

© Alberto Montresor

Alberi Red-Black: colorazione diversa, altezza nera diversaAlberi Red-Black: colorazione diversa, altezza nera diversa

30

70

8560

80

10

90

15

20

50 65Nil Nil Nil Nil

Nil Nil Nil Nil Nil Nil NilNil

Stesso albero con 2 nodi neri lungo ogni percorso dalla radice ai nodi Nil

Page 37: 1 © Alberto Montresor Algoritmi e Strutture Dati Alberi binari di ricerca Alberto Montresor Università di Trento This work is licensed under the Creative

37

© Alberto Montresor

Alberi Red-Black: questo albero può essere un albero RB?Alberi Red-Black: questo albero può essere un albero RB?

30

70

6010

15

20

50Nil Nil Nil Nil Nil Nil

40 55

Nil Nil NilNil

85

Nil

Page 38: 1 © Alberto Montresor Algoritmi e Strutture Dati Alberi binari di ricerca Alberto Montresor Università di Trento This work is licensed under the Creative

38

© Alberto Montresor

Alberi Red-Black: questo albero può essere un albero RB?Alberi Red-Black: questo albero può essere un albero RB?

30

70

6010

15

20

50Nil Nil Nil Nil Nil Nil

40 55

Nil Nil NilNil

85

Nil

Per vincolo sull'altezza nera ci possono essere al più 3 nodi neri lungo un percorso!

Page 39: 1 © Alberto Montresor Algoritmi e Strutture Dati Alberi binari di ricerca Alberto Montresor Università di Trento This work is licensed under the Creative

39

© Alberto Montresor

Alberi Red-Black: questo albero può essere un albero RB?Alberi Red-Black: questo albero può essere un albero RB?

30

70

6010

15

20

50Nil Nil Nil Nil Nil Nil

40 55

Nil Nil NilNil

85

Nil

Impossibile!Perché dovremmo violare vincolo 3

La radice è nera. Supponiamo che 60 e 70 siano entrambi neri.

Page 40: 1 © Alberto Montresor Algoritmi e Strutture Dati Alberi binari di ricerca Alberto Montresor Università di Trento This work is licensed under the Creative

40

© Alberto Montresor

Alberi Red-Black: questo albero può essere un albero RB?Alberi Red-Black: questo albero può essere un albero RB?

30

70

6010

15

20

50Nil Nil Nil Nil Nil Nil

40 55

Nil Nil NilNil

85

Nil

Quindi uno di questidue nodi deve essererosso

Page 41: 1 © Alberto Montresor Algoritmi e Strutture Dati Alberi binari di ricerca Alberto Montresor Università di Trento This work is licensed under the Creative

41

© Alberto Montresor

Alberi Red-Black: questo albero può essere un albero RB?Alberi Red-Black: questo albero può essere un albero RB?

30

70

6010

15

20

50Nil Nil Nil Nil Nil Nil

40 55

Nil Nil NilNil

85

Nil

Impossibile per ilvincolo sulla lunghezza

Proviamo a colorare di rosso il nodo 60.Esiste un percorso con 2 nodi neriEsiste un percorso con 3 nodi neri

Page 42: 1 © Alberto Montresor Algoritmi e Strutture Dati Alberi binari di ricerca Alberto Montresor Università di Trento This work is licensed under the Creative

42

© Alberto Montresor

Alberi Red-Black: questo albero può essere un albero RB?Alberi Red-Black: questo albero può essere un albero RB?

30

70

6010

15

20

50Nil Nil Nil Nil Nil Nil

40 55

Nil Nil NilNil

85

Nil

Esistono due percorsicon 2 soli nodi neri

Proviamo a colorare di rosso il nodo 70

Page 43: 1 © Alberto Montresor Algoritmi e Strutture Dati Alberi binari di ricerca Alberto Montresor Università di Trento This work is licensed under the Creative

43

© Alberto Montresor

Alberi Red-Black: questo albero può essere un albero RB?Alberi Red-Black: questo albero può essere un albero RB?

30

70

6010

15

20

50Nil Nil Nil Nil Nil Nil

40 55

Nil Nil NilNil

85

Nil

Per vincolo 4 e il vincolo 3, ci possono essere al più 2 nodi neri lungo un percorso!

Page 44: 1 © Alberto Montresor Algoritmi e Strutture Dati Alberi binari di ricerca Alberto Montresor Università di Trento This work is licensed under the Creative

44

© Alberto Montresor

Alberi Red-Black: questo albero può essere un albero RB?Alberi Red-Black: questo albero può essere un albero RB?

30

70

6010

15

20

50Nil Nil Nil Nil Nil Nil

40 55

Nil Nil NilNil

85

Nil

Questa sarebbel’unica possibilità!

Impossibile!Perché dovremmo violare vincolo 1

Per vincolo 4 e il vincolo 3, ci possono essere al più 2 nodi neri lungo un percorso!

Page 45: 1 © Alberto Montresor Algoritmi e Strutture Dati Alberi binari di ricerca Alberto Montresor Università di Trento This work is licensed under the Creative

45

© Alberto Montresor

Alberi Red-Black: questo albero può essere un albero RB?Alberi Red-Black: questo albero può essere un albero RB?

30

70

6010

15

20

50Nil Nil Nil Nil Nil Nil

40 55

Nil Nil NilNil

85

Nil

Questo albero NON può essere un albero Red-Black!

Page 46: 1 © Alberto Montresor Algoritmi e Strutture Dati Alberi binari di ricerca Alberto Montresor Università di Trento This work is licensed under the Creative

46

© Alberto Montresor

Alberi Red-Black: ProprietàAlberi Red-Black: Proprietà

✦Da cui segue:

✦Le operazioni di ricerca hanno costo O(log n)

✦Cosa succede per le operazioni di modifica?

Page 47: 1 © Alberto Montresor Algoritmi e Strutture Dati Alberi binari di ricerca Alberto Montresor Università di Trento This work is licensed under the Creative

47

© Alberto Montresor

InserimentiInserimenti

✦Durante la modifica di un albero Red-Black:

✦è possibile che le condizioni di bilanciamento risultino violate.

✦Quando le proprietà Red-Black vengono violate si può agire:

✦modificando i colori nella zona della violazione;

✦operando dei ribilanciamenti dell’albero tramite rotazioni:✦Rotazione destra✦Rotazione sinistra

Page 48: 1 © Alberto Montresor Algoritmi e Strutture Dati Alberi binari di ricerca Alberto Montresor Università di Trento This work is licensed under the Creative

48

© Alberto Montresor

Rotazione a sinistraRotazione a sinistra

A

B C

y

x

p

✦Operazioni

(1) far diventare B figlio destro di x

(2) far diventare x il figlio sinistro di y

(3) far diventare y figlio di p, il vecchio padre di x

Page 49: 1 © Alberto Montresor Algoritmi e Strutture Dati Alberi binari di ricerca Alberto Montresor Università di Trento This work is licensed under the Creative

49

© Alberto Montresor

Rotazione a sinistraRotazione a sinistra

A B

C

y

x

p

✦Operazioni

(1) far diventare B figlio destro di x

(2) far diventare x il figlio sinistro di y

(3) far diventare y figlio di p, il vecchio padre di x

Page 50: 1 © Alberto Montresor Algoritmi e Strutture Dati Alberi binari di ricerca Alberto Montresor Università di Trento This work is licensed under the Creative

50

© Alberto Montresor

Rotazione a sinistraRotazione a sinistra

A B

C

y

x

p

✦Operazioni

(1) far diventare B figlio destro di x

(2) far diventare x il figlio sinistro di y

(3) far diventare y figlio di p, il vecchio padre di x

Page 51: 1 © Alberto Montresor Algoritmi e Strutture Dati Alberi binari di ricerca Alberto Montresor Università di Trento This work is licensed under the Creative

51

© Alberto Montresor

Inserimento in alberi Red-Black

✦Inserimento

✦Ricerca della posizione usando la stessa procedura usata per gli alberi binari di ricerca

✦Coloriamo il nuovo nodo di rosso

✦Quale delle quattro proprietà può essere violata?

✦Ripasso:

✦la radice è nera

✦i nodi Nil sono neri;

✦se un nodo è rosso, allora entrambi i suoi figli sono neri;

✦ogni percorso da un nodo interno ad una foglia ha lo stesso numero di nodi neri

Page 52: 1 © Alberto Montresor Algoritmi e Strutture Dati Alberi binari di ricerca Alberto Montresor Università di Trento This work is licensed under the Creative

52

© Alberto Montresor

Come modificare la insertNode()

balanceTree(n)

Page 53: 1 © Alberto Montresor Algoritmi e Strutture Dati Alberi binari di ricerca Alberto Montresor Università di Trento This work is licensed under the Creative

53

© Alberto Montresor

Inserimento in alberi Red-Black

✦Come sistemare:

✦Ci spostiamo verso l’alto lungo il percorso di inserimento ✦per ripristinare la proprietà 3 (red-black)✦spostando le violazioni verso l’alto rispettando il vincolo 4 (mantenendo l’altezza nera dell’albero)

✦Al termine, coloriamo la radice di nero

✦Nota

✦Le operazioni di ripristino sono necessarie solo quando due nodi consecutivi sono rossi!

Page 54: 1 © Alberto Montresor Algoritmi e Strutture Dati Alberi binari di ricerca Alberto Montresor Università di Trento This work is licensed under the Creative

54

© Alberto Montresor

balanceNode(Tree t)

✦Nodi coinvolti

✦Il nodo inserito t

✦Suo padre p

✦Suo nonno n

✦Suo zio z

p

t

n

z

Page 55: 1 © Alberto Montresor Algoritmi e Strutture Dati Alberi binari di ricerca Alberto Montresor Università di Trento This work is licensed under the Creative

55

© Alberto Montresor

Inserimento - 7 casi possibili

✦Caso 1:

✦Nuovo nodo t non ha padre

✦Primo nodo ad essere inserito osiamo risaliti fino alla radice

✦Si colora t di nero

✦Caso 2

✦Padre p di t è nero

✦Nessun vincolo violato

Page 56: 1 © Alberto Montresor Algoritmi e Strutture Dati Alberi binari di ricerca Alberto Montresor Università di Trento This work is licensed under the Creative

56

© Alberto Montresor

Inserimento - 7 casi possibili

✦Caso 1:

✦Nuovo nodo t non ha padre

✦Primo nodo ad essere inserito

✦Si colora t di nero

✦Caso 2

✦Padre p di t è nero

✦Nessun vincolo violato

Page 57: 1 © Alberto Montresor Algoritmi e Strutture Dati Alberi binari di ricerca Alberto Montresor Università di Trento This work is licensed under the Creative

57

© Alberto Montresor

Inserimento - 7 casi possibili

✦Caso 3

✦t rosso

✦p rosso

✦z rosso✦Se z è rosso, è possibile colorare di nero p, z, e di rosso n. ✦Poiché tutti i cammini che passano per z e p passano per n, la lunghezza dei cammini neri non è cambiata. ✦Il problema può essere ora sul nonno:

✦violato vincolo (1), ovvero n può essere una radice rossa ✦violato vincolo (3), ovvero n rosso può avere un padre rosso.

✦Poniamo t = n, e il ciclo continua.

Page 58: 1 © Alberto Montresor Algoritmi e Strutture Dati Alberi binari di ricerca Alberto Montresor Università di Trento This work is licensed under the Creative

58

© Alberto Montresor

Inserimento - 7 casi possibili

✦Caso 3

✦t rosso

✦p rosso

✦z rosso

✦Se z è rosso, è possibile colorare di nero p, z, e di rosso n.

✦Poiché tutti i cammini che passano per z e p passano per n, la lunghezza dei cammini neri non è cambiata.

✦Il problema può essere ora sul nonno: ✦violato vincolo (1), ovvero n può essere una radice rossa ✦violato vincolo (3), ovvero n rosso può avere un padre rosso.

✦Poniamo t = n, e il ciclo continua.

Page 59: 1 © Alberto Montresor Algoritmi e Strutture Dati Alberi binari di ricerca Alberto Montresor Università di Trento This work is licensed under the Creative

59

© Alberto Montresor

Inserimento - 7 casi possibili

✦Caso 4a,4b

✦t rosso

✦p rosso

✦z nero

✦Si assuma che t sia figlio destro di p e che p sia figlio sinistro di n

✦Una rotazione a sinistra a partire dal nodo p scambia i ruoli di t e p ottenendo il caso (5a), dove i nodi rossi in conflitto sul vincolo (3) sono entrambi figli sinistri dei loro padri

✦I nodi coinvolti nel cambiamento sono p e t, entrambi rossi, quindi la lunghezza dei cammini neri non cambia

Page 60: 1 © Alberto Montresor Algoritmi e Strutture Dati Alberi binari di ricerca Alberto Montresor Università di Trento This work is licensed under the Creative

60

© Alberto Montresor

Inserimento - 7 casi possibili

✦Caso 4a,4b

✦t rosso

✦p rosso

✦z nero

✦Si assuma che t sia figlio destro di p e che p sia figlio sinistro di n

✦Una rotazione a sinistra a partire dal nodo p scambia i ruoli di t e p ottenendo il caso (5a), dove i nodi rossi in conflitto sul vincolo (3) sono entrambi figli sinistri dei loro padri

✦I nodi coinvolti nel cambiamento sono p e t, entrambi rossi, quindi la lunghezza dei cammini neri non cambia

Page 61: 1 © Alberto Montresor Algoritmi e Strutture Dati Alberi binari di ricerca Alberto Montresor Università di Trento This work is licensed under the Creative

61

© Alberto Montresor

Inserimento - 7 casi possibili

✦Caso 5a,5b

✦t rosso

✦p rosso

✦z nero

✦Si assuma che t sia figlio sinistro di p e p sia figlio sinistro di n

✦Una rotazione a destra a partire da n ci porta ad una situazione in cui t e n sono figli di p

✦Colorando n di rosso e p di nero ci troviamo in una situazione in cui tutti i vincoli Red-Black sono rispettati

✦in particolare, la lunghezza dei cammini neri che passano per la radice è uguale alla situazione iniziale

Page 62: 1 © Alberto Montresor Algoritmi e Strutture Dati Alberi binari di ricerca Alberto Montresor Università di Trento This work is licensed under the Creative

62

© Alberto Montresor

Inserimento - 7 casi possibili

✦Caso 5a,5b

✦t rosso

✦p rosso

✦z nero

✦Si assuma che t sia figlio sinistro di p e p sia figlio sinistro di n

✦Una rotazione a destra a partire da n ci porta ad una situazione in cui t e n sono figli di p

✦Colorando n di rosso e p di nero ci troviamo in una situazione in cui tutti i vincoli Red-Black sono rispettati

✦in particolare, la lunghezza dei cammini neri che passano per la radice è uguale alla situazione iniziale

Page 63: 1 © Alberto Montresor Algoritmi e Strutture Dati Alberi binari di ricerca Alberto Montresor Università di Trento This work is licensed under the Creative

63

© Alberto Montresor

All together, now!

Page 64: 1 © Alberto Montresor Algoritmi e Strutture Dati Alberi binari di ricerca Alberto Montresor Università di Trento This work is licensed under the Creative

64

© Alberto Montresor

Inserimento in alberi Red-BlackInserimento in alberi Red-Black

30

70

8560

80

10

90

15

20

50

40 55

65Nil Nil Nil Nil

Nil Nil NilNil

Nil Nil Nil Nil NilNil

16T

t

Nil Nil

Page 65: 1 © Alberto Montresor Algoritmi e Strutture Dati Alberi binari di ricerca Alberto Montresor Università di Trento This work is licensed under the Creative

65

© Alberto Montresor

Inserimento in alberi Red-BlackInserimento in alberi Red-Black

30

70

8560

80

10

90

15

20

50

40 55

65Nil Nil Nil

Nil Nil NilNil

Nil Nil Nil Nil NilNil

16

T

t

Caso 2: nessun cambiamentoNon cambia l’altezza neradi nessun nodo!

Nil Nil

p è nero, t è rosso

Page 66: 1 © Alberto Montresor Algoritmi e Strutture Dati Alberi binari di ricerca Alberto Montresor Università di Trento This work is licensed under the Creative

66

© Alberto Montresor

Inserimento in alberi Red-Black: Inserimento in alberi Red-Black:

30

70

8560

80

10

90

15

20

50

40 55

65Nil Nil Nil

Nil Nil NilNil

Nil Nil Nil Nil NilNil

T42x

Nil Nil

Nil

Page 67: 1 © Alberto Montresor Algoritmi e Strutture Dati Alberi binari di ricerca Alberto Montresor Università di Trento This work is licensed under the Creative

67

© Alberto Montresor

Inserimento in alberi Red-BlackInserimento in alberi Red-Black

30

70

8560

80

10

90

15

20

50

40 55

65Nil Nil Nil

Nil NilNil

Nil Nil Nil Nil NilNil

T

Nil

42

Vincolo 3 è violato

Caso 3: z è rosso

Nil Nil

t

p è rosso, t è rosso

p

n

z

Page 68: 1 © Alberto Montresor Algoritmi e Strutture Dati Alberi binari di ricerca Alberto Montresor Università di Trento This work is licensed under the Creative

68

© Alberto Montresor

Inserimento in alberi Red-BlackInserimento in alberi Red-Black

30

70

8560

80

10

90

15

20

50

40 55

65Nil Nil Nil

Nil NilNil

Nil Nil Nil Nil NilNil

T

Nil

42

Nil Nil

Coloriamo di nero p Coloriamo di nero zColoriamo di rosso n t

p

n

z

p è rosso, t è rosso

Page 69: 1 © Alberto Montresor Algoritmi e Strutture Dati Alberi binari di ricerca Alberto Montresor Università di Trento This work is licensed under the Creative

69

© Alberto Montresor

Inserimento in alberi Red-BlackInserimento in alberi Red-Black

30

70

8560

80

10

90

15

20

50

40 55

65Nil Nil Nil

Nil NilNil

Nil Nil Nil Nil NilNil

T

Nil

42

t

Nil Nil

Il padre del padre di t è il nuovo t

p è rosso, t è rosso

Vincolo 3 è ripristinatoAltri vincoli mai stativiolati

Page 70: 1 © Alberto Montresor Algoritmi e Strutture Dati Alberi binari di ricerca Alberto Montresor Università di Trento This work is licensed under the Creative

70

© Alberto Montresor

Inserimento in alberi Red-BlackInserimento in alberi Red-Black

30

70

8560

80

10

90

15

20

50

40 55

65Nil Nil Nil

Nil NilNil

Nil Nil Nil Nil NilNil

T

Nil

42

t

Nil Nil

Vincolo 3 è nuovamente violato tra il nuovo t e suo padre

Caso 5a: z è nero

p è rosso, t è rosso

p

n

z

Page 71: 1 © Alberto Montresor Algoritmi e Strutture Dati Alberi binari di ricerca Alberto Montresor Università di Trento This work is licensed under the Creative

71

© Alberto Montresor

Inserimento in alberi Red-BlackInserimento in alberi Red-Black

30

70

8560

80

10

90

15

20

50

40 55

65Nil Nil Nil

Nil NilNil

Nil Nil Nil Nil NilNil

T

Nil

42

x

Nil Nil

Coloriamo di nero tColoriamo di rosso nRotazione sinistra

Caso 5a: z è nero

p è rosso, t è rosso

Page 72: 1 © Alberto Montresor Algoritmi e Strutture Dati Alberi binari di ricerca Alberto Montresor Università di Trento This work is licensed under the Creative

72

© Alberto Montresor

Inserimento in alberi Red-BlackInserimento in alberi Red-Black

30

70

85

60

80

10

90

15

20 50

40 55 65Nil Nil Nil

Nil NilNil Nil

Nil Nil Nil Nil

Nil

T

Nil

42

t

Nil Nil

Caso 5a: z è nero

p è rosso, t è rosso

Vincolo 3 è ripristinatoAltri vincoli mai stativiolati

Abbiamo finito

Page 73: 1 © Alberto Montresor Algoritmi e Strutture Dati Alberi binari di ricerca Alberto Montresor Università di Trento This work is licensed under the Creative

73

© Alberto Montresor

Inserimento in alberi Red-BlackInserimento in alberi Red-Black

30

70

85

60

80

10

90

15

20 50

40 55 65Nil Nil Nil

Nil NilNil Nil

Nil Nil Nil Nil

Nil

T

Nil

42

x

Nil Nil

L’unico caso un cui si procede a ripristinare verso l’alto è il caso 3. Negli altri casi, si esce dal while e si termina

Page 74: 1 © Alberto Montresor Algoritmi e Strutture Dati Alberi binari di ricerca Alberto Montresor Università di Trento This work is licensed under the Creative

74

© Alberto Montresor

Inserimento: complessità

✦Totale: O(log n)

✦O(log n) per scendere fino al punto di inserimento

✦O(1) per effettuare l'inserimento

✦O(log n) per risalire e “aggiustare”(caso pessimo – solo nel caso 3)

✦Esiste anche la possibilità di effettuare una “top-down” insertion

✦Scendere fino al punto di inserimento, “aggiustando” l'albero mano a mano

✦Effettuare l'inserimento in una foglia

Page 75: 1 © Alberto Montresor Algoritmi e Strutture Dati Alberi binari di ricerca Alberto Montresor Università di Trento This work is licensed under the Creative

75

© Alberto Montresor

Cancellazione in RB

✦L’algoritmo di cancellazione per alberi RB è costruito sull’algoritmo di cancellazione per alberi binari di ricerca

✦Dopo la cancellazione si deve decidere se è necessario ribilanciare o meno

✦Le operazioni di ripristino del bilanciamento sono necessarie solo quando il nodo cancellato è nero! (perché?)

Page 76: 1 © Alberto Montresor Algoritmi e Strutture Dati Alberi binari di ricerca Alberto Montresor Università di Trento This work is licensed under the Creative

76

© Alberto Montresor

Cancellazione in RB

✦Se il nodo “cancellato” è rosso

✦altezza nera invariata

✦non sono stati creati nodi rossi consecutivi

✦la radice resta nera

✦Se il nodo “cancellato” è nero

✦possiamo violare il vincolo 1: la radice può essere un nodo rosso

✦possiamo violare il vincolo 3: se il padre e uno dei figli del nodocancellato erano rossi

✦abbiamo violato il vincolo 4: altezza nera cambiata

✦L’algoritmo balanceDelete(T,t) ripristina la proprietà Red-Black con rotazioni e cambiamenti di colore:

✦ci sono 4 casi possibili (e 4 simmetrici)!

Page 77: 1 © Alberto Montresor Algoritmi e Strutture Dati Alberi binari di ricerca Alberto Montresor Università di Trento This work is licensed under the Creative

77

© Alberto Montresor

Cancellazione

if u.color = BLACK then balanceDelete(T, t)

Page 78: 1 © Alberto Montresor Algoritmi e Strutture Dati Alberi binari di ricerca Alberto Montresor Università di Trento This work is licensed under the Creative

78

© Alberto Montresor

Cancellazione - 8 casi possibili

Page 79: 1 © Alberto Montresor Algoritmi e Strutture Dati Alberi binari di ricerca Alberto Montresor Università di Trento This work is licensed under the Creative

79

© Alberto Montresor

Cancellazione - 8 casi possibiliCancellazione - 8 casi possibili

Page 80: 1 © Alberto Montresor Algoritmi e Strutture Dati Alberi binari di ricerca Alberto Montresor Università di Trento This work is licensed under the Creative

80

© Alberto Montresor

Cancellazione in RBCancellazione in RB

Page 81: 1 © Alberto Montresor Algoritmi e Strutture Dati Alberi binari di ricerca Alberto Montresor Università di Trento This work is licensed under the Creative

81

© Alberto Montresor

Cancellazione in RBCancellazione in RB

✦L’operazione di cancellazione è concettualmente complicata!

✦Ma efficiente:

✦Dal caso (1) si passa ad uno dei casi (2), (3), (4)

✦Dal caso (2) si torna ad uno degli altri casi, ma risalendo di un livello l’albero

✦Dal caso (3) si passa al caso (4)

✦Nel caso (4) si termina

✦Quindi

✦In altre parole, è possibile visitare al massimo un numero O(log n) di casi, ognuno dei quali è gestito in tempo O(1)

Page 82: 1 © Alberto Montresor Algoritmi e Strutture Dati Alberi binari di ricerca Alberto Montresor Università di Trento This work is licensed under the Creative

82

© Alberto Montresor

Esercizi

✦Esercizio - visita non ricorsiva

✦Scrivere l’algoritmo non ricorsivo che effettua un attraversamento in ordine di un ABR

✦Qual è la sua complessità

✦Esercizio - limite inferiore

✦Dimostrare: poiché l'ordinamento basato su confronti di n elementi è Ω(n log n), allora qualunque algoritmo basato su confronti per costruire un ABR è Ω(n log n)

✦Esercizio - proprietà albero

✦Dimostrate che se un nodo in un ABR ha due figli, allora il suo successore non ha un figlio sinistro e il suo predecessore non ha un figlio destro

✦Esercizio

✦L'operazione di cancellazione è commutativa? Nel senso che cancellare x e y oppure cancellare y e x produce lo stesso ABR?