La presentazione è in caricamento. Aspetta per favore

La presentazione è in caricamento. Aspetta per favore

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

Presentazioni simili


Presentazione sul tema: "1 © Alberto Montresor Algoritmi e Strutture Dati Alberi binari di ricerca Alberto Montresor Università di Trento This work is licensed under the Creative."— Transcript della presentazione:

1 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 or send a letter to Creative Commons, 543 Howard Street, 5th Floor, San Francisco, California, 94105, USA.

2 2 © Alberto Montresor Dizionari 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)

3 3 © Alberto Montresor 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à 1. Le chiavi dei nodi del sottoalbero sinistro di u sono minori di u.key 2. Le chiavi dei nodi del sottoalbero destro di u sono maggiori di u.key

4 4 © Alberto Montresor 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 Figlio sinistro Padre Figlio destro Key, Value

5 5 © Alberto Montresor Alberi 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 ()

6 6 © Alberto Montresor 4 < 6 4 sta nel sottoalbero sinistro di 6 4 < 6 4 sta nel sottoalbero sinistro di 6 Ricerca: esempio Ricerca del valore T

7 7 © Alberto Montresor 4 > 2 4 sta nel sottoalbero destro di 2 4 > 2 4 sta nel sottoalbero destro di 2 Ricerca: esempio T Ricerca del valore 4

8 8 © Alberto Montresor 4 = 4 trovato! 4 = 4 trovato! Ricerca: esempio T Ricerca del valore 4

9 9 © Alberto Montresor Ricerca: Implementazione Ricorsiva Iterativa

10 10 © Alberto Montresor Ricerca del minimo e del massimo: Esempi Sottoalbero con radice 2: - minimo 1 - massimo T Sottoalbero con radice 8: - minimo 8 - massimo

11 11 © Alberto Montresor Ricerca del minimo e del massimo: Pseudo-codice

12 12 © Alberto Montresor Ricerca 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 minimo del sottoalbero destro di u Esempio: successore di 2 è 3 T u u'

13 13 © Alberto Montresor Ricerca 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 u u'

14 14 © Alberto Montresor Ricerca del successore: Pseudo-codice (iterativo)

15 15 © Alberto Montresor Ricerca: costo computazionale In generale Le operazioni di ricerca sono confinate 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 dellalbero

16 16 © Alberto Montresor Inserimento T 5 < 6 Inserimento valore > > 4

17 17 © Alberto Montresor Inserimento: pseudo-codice (iterativo)

18 18 © Alberto Montresor Inserimento: pseudo-codice (iterativo)

19 19 © Alberto Montresor Cancellazione Caso 1: Il nodo u da eliminare non ha figli Semplicemente si elimina Esempio: Eliminazione nodo 5 T u

20 20 © Alberto Montresor Cancellazione Caso 2: Il nodo u da eliminare ha un unico figlio f Si elimina u Si attacca f all'ex-padre p di u in sostituzione di u (short-cut) Esempio: Cancellazione di 4 T u f p

21 21 © Alberto Montresor Cancellazione Caso 3: Il nodo u da eliminare ha due figli Si individua il successore s del nodo u Il successore non ha figlio sinistro Si stacca il successore Si attacca l'eventuale figlio destro di s al padre di s (short-cut) Si copia s su u Si rimuove il nodo s T s u

22 22 © Alberto Montresor Cancellazione: Pseudo-codice

23 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

24 24 © Alberto Montresor Modifica: costo computazionale In generale Le operazioni di modifica sono confinate ai nodi posizionati lungo un singolo percorso (path) dalla radice ad una foglia Tempo di ricerca: O(h) h = altezza dellalbero

25 25 © Alberto Montresor Complessità 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

26 26 © Alberto Montresor Algoritmi 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)

27 27 © Alberto Montresor T3 T1 T2 Esempio di rotazione vu T1 T2 vu

28 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 dellalbero Le foglie sono costituite da nodi nil Un albero Red-Black deve soddisfare i seguenti vincoli: 1. La radice è nera 2. Tutte le foglie sono nere 3. Entrambi i figli di un nodo rosso sono neri 4. 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

29 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

30 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 allaltezza nera della sua radice

31 31 © Alberto Montresor Alberi Red-Black: esempio I 3. Entrambi i figli di un nodo rosso sono neri. Ma un nodo nero può avere figli neri! Nil

32 32 © Alberto Montresor Alberi 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: Nil

33 33 © Alberto Montresor Alberi Red-Black: più colorazioni sono possibili Nil Albero Red-Black con 3 nodi neri lungo ogni percorso dalla radice ai nodi Nil

34 34 © Alberto Montresor Alberi Red-Black: più colorazioni sono possibili Nil Albero Red-Black con 3 nodi neri lungo ogni percorso dalla radice ai nodi Nil

35 35 © Alberto Montresor Alberi Red-Black: colorazione diversa, altezza nera diversa Nil Albero RB con 3 nodi neri lungo ogni percorso dalla radice ai nodi Nil

36 36 © Alberto Montresor Alberi Red-Black: colorazione diversa, altezza nera diversa Nil Stesso albero con 2 nodi neri lungo ogni percorso dalla radice ai nodi Nil

37 37 © Alberto Montresor Alberi Red-Black: questo albero può essere un albero RB? Nil 4055 Nil 85 Nil

38 38 © Alberto Montresor Alberi Red-Black: questo albero può essere un albero RB? Nil 4055 Nil 85 Nil Per vincolo sull'altezza nera ci possono essere al più 3 nodi neri lungo un percorso!

39 39 © Alberto Montresor Alberi Red-Black: questo albero può essere un albero RB? Nil 4055 Nil 85 Nil Impossibile! Perché dovremmo violare vincolo 3 La radice è nera. Supponiamo che 60 e 70 siano entrambi neri.

40 40 © Alberto Montresor Alberi Red-Black: questo albero può essere un albero RB? Nil 4055 Nil 85 Nil Quindi uno di questi due nodi deve essere rosso

41 41 © Alberto Montresor Alberi Red-Black: questo albero può essere un albero RB? Nil 4055 Nil 85 Nil Impossibile per il vincolo sulla lunghezza Proviamo a colorare di rosso il nodo 60. Esiste un percorso con 2 nodi neri Esiste un percorso con 3 nodi neri

42 42 © Alberto Montresor Alberi Red-Black: questo albero può essere un albero RB? Nil 4055 Nil 85 Nil Esistono due percorsi con 2 soli nodi neri Proviamo a colorare di rosso il nodo 70

43 43 © Alberto Montresor Alberi Red-Black: questo albero può essere un albero RB? Nil 4055 Nil 85 Nil Per vincolo 4 e il vincolo 3, ci possono essere al più 2 nodi neri lungo un percorso!

44 44 © Alberto Montresor Alberi Red-Black: questo albero può essere un albero RB? Nil 4055 Nil 85 Nil Questa sarebbe lunica 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!

45 45 © Alberto Montresor Alberi Red-Black: questo albero può essere un albero RB? Nil 4055 Nil 85 Nil Questo albero NON può essere un albero Red-Black!

46 46 © Alberto Montresor Alberi Red-Black: Proprietà Da cui segue: Le operazioni di ricerca hanno costo O(log n) Cosa succede per le operazioni di modifica?

47 47 © Alberto Montresor Inserimenti 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 dellalbero tramite rotazioni: Rotazione destra Rotazione sinistra

48 48 © Alberto Montresor Rotazione a sinistra A BC 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

49 49 © Alberto Montresor Rotazione a sinistra AB 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

50 50 © Alberto Montresor Rotazione a sinistra AB 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

51 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

52 52 © Alberto Montresor Come modificare la insertNode() balanceTree ( n )

53 53 © Alberto Montresor Inserimento in alberi Red-Black Come sistemare: Ci spostiamo verso lalto lungo il percorso di inserimento per ripristinare la proprietà 3 (red-black) spostando le violazioni verso lalto rispettando il vincolo 4 (mantenendo laltezza nera dellalbero) Al termine, coloriamo la radice di nero Nota Le operazioni di ripristino sono necessarie solo quando due nodi consecutivi sono rossi!

54 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

55 55 © Alberto Montresor Inserimento - 7 casi possibili Caso 1: Nuovo nodo t non ha padre Primo nodo ad essere inserito o siamo risaliti fino alla radice Si colora t di nero Caso 2 Padre p di t è nero Nessun vincolo violato

56 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

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

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

59 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

60 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

61 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

62 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

63 63 © Alberto Montresor All together, now!

64 64 © Alberto Montresor Inserimento in alberi Red-Black Nil 16 T t Nil

65 65 © Alberto Montresor Inserimento in alberi Red-Black Nil 16 T t Caso 2: nessun cambiamento Non cambia laltezza nera di nessun nodo! Nil p è nero, t è rosso

66 66 © Alberto Montresor Inserimento in alberi Red-Black: Nil T 42 x Nil

67 67 © Alberto Montresor Inserimento in alberi Red-Black Nil T 42 Vincolo 3 è violato Caso 3: z è rosso Nil t p è rosso, t è rosso p n z

68 68 © Alberto Montresor Inserimento in alberi Red-Black Nil T 42 Nil Coloriamo di nero p Coloriamo di nero z Coloriamo di rosso n t p n z p è rosso, t è rosso

69 69 © Alberto Montresor Inserimento in alberi Red-Black Nil T 42 t Nil Il padre del padre di t è il nuovo t p è rosso, t è rosso Vincolo 3 è ripristinato Altri vincoli mai stati violati

70 70 © Alberto Montresor Inserimento in alberi Red-Black Nil T 42 t Nil Vincolo 3 è nuovamente violato tra il nuovo t e suo padre Caso 5a: z è nero p è rosso, t è rosso p n z

71 71 © Alberto Montresor Inserimento in alberi Red-Black Nil T 42 x Nil Coloriamo di nero t Coloriamo di rosso n Rotazione sinistra Caso 5a: z è nero p è rosso, t è rosso

72 72 © Alberto Montresor Inserimento in alberi Red-Black Nil T 42 t Nil Caso 5a: z è nero p è rosso, t è rosso Vincolo 3 è ripristinato Altri vincoli mai stati violati Abbiamo finito

73 73 © Alberto Montresor Inserimento in alberi Red-Black Nil T 42 x Nil Lunico caso un cui si procede a ripristinare verso lalto è il caso 3. Negli altri casi, si esce dal while e si termina

74 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

75 75 © Alberto Montresor Cancellazione in RB Lalgoritmo di cancellazione per alberi RB è costruito sullalgoritmo 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é?)

76 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 nodo cancellato erano rossi abbiamo violato il vincolo 4: altezza nera cambiata Lalgoritmo balanceDelete(T,t) ripristina la proprietà Red-Black con rotazioni e cambiamenti di colore: ci sono 4 casi possibili (e 4 simmetrici)!

77 77 © Alberto Montresor Cancellazione if u.color = BLACK then balanceDelete (T, t)

78 78 © Alberto Montresor Cancellazione - 8 casi possibili

79 79 © Alberto Montresor Cancellazione - 8 casi possibili

80 80 © Alberto Montresor Cancellazione in RB

81 81 © Alberto Montresor Cancellazione in RB Loperazione 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 lalbero 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)

82 82 © Alberto Montresor Esercizi Esercizio - visita non ricorsiva Scrivere lalgoritmo 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?


Scaricare ppt "1 © Alberto Montresor Algoritmi e Strutture Dati Alberi binari di ricerca Alberto Montresor Università di Trento This work is licensed under the Creative."

Presentazioni simili


Annunci Google