Algoritmi e Strutture Dati

Slides:



Advertisements
Presentazioni simili
Training On Line - CONP. 2 Richiesta Da Menu: Conferimenti ad inizio anno termico > Agosto > Pluriennali > Nuova Richiesta Si accede alla pagina di Richiesta.
Advertisements

Algoritmi e Strutture Dati
Dipartimento di Ingegneria Idraulica e Ambientale - Universita di Pavia 1 Caduta non guidata di un corpo rettangolare in un serbatoio Velocità e rotazione.
Strutture dati per insiemi disgiunti
1 MeDeC - Centro Demoscopico Metropolitano Provincia di Bologna - per Valutazione su alcuni servizi erogati nel.
1 Pregnana Milanese Assessorato alle Risorse Economiche Bilancio Preventivo P R O P O S T A.
Frontespizio Economia Monetaria Anno Accademico
Lez. 91 Universita' di Ferrara Facolta' di Scienze Matematiche, Fisiche e Naturali Laurea Specialistica in Informatica Algoritmi Avanzati Alberi di ricerca.
RB-alberi (Red-Black trees)
Alberi binari di ricerca
Capitolo 3 Strutture dati elementari Algoritmi e Strutture Dati Camil Demetrescu, Irene Finocchi, Giuseppe F. Italiano.
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.
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.
Algoritmi e Strutture Dati Capitolo 2 Modelli di calcolo e metodologie di analisi.
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.
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 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.
ELEZIONI REGIONALI 2010 PRIMI RISULTATI E SCENARI 14 aprile 2010.
Canale A. Prof.Ciapetti AA2003/04
Algoritmi e Strutture Dati Alberi Binari di Ricerca.
Algoritmi e Strutture Dati (Mod. A)
Algoritmi e Strutture Dati
Algoritmi e Strutture Dati 20 aprile 2001
Algoritmi e Strutture Dati
Algoritmi e Strutture Dati
Algoritmi e Strutture Dati
1 © Alberto Montresor Algoritmi e Strutture Dati Capitolo 7 - Tabelle hash Alberto Montresor Università di Trento This work is licensed under the Creative.
Algoritmi e Strutture Dati
Algoritmi e Strutture Dati
Algoritmi e Strutture Dati
Algoritmi e Strutture Dati
Algoritmi e Strutture Dati
Algoritmi e Strutture Dati
Algoritmi e Strutture Dati
La partita è molto combattuta perché le due squadre tentano di vincere fino all'ultimo minuto. Era l'ultima giornata del campionato e il risultato era.
Heap binomiali Gli heap binomiali sono strutture dati su cui si possono eseguire efficientemente le operazioni: Make(H) : crea uno heap vuoto Insert(H,
Cos’è un problema?.
CHARGE PUMP Principio di Funzionamento
Settimana: 3-7 marzo Orariolunedimartedi Mercoledi 5 Giovedi 6 Venerdi lezione intro alla fis mod DR lezione intro alla fis mod DR.
Q UESTIONI ETICHE E BIOETICHE DELLA DIFESA DELLA VITA NELL AGIRE SANITARIO 1 Casa di Cura Villa San Giuseppe Ascoli Piceno 12 e 13 dicembre 2011.
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.
1 Negozi Nuove idee realizzate per. 2 Negozi 3 4.
ORDINE DI CHIAMATA a 1minuto e 2 minuti PRINCIPALI TEMPI DELLA COMPETIZIONE ORDINE DI CHIAMATA a 1minuto e 2 minuti PRINCIPALI TEMPI DELLA COMPETIZIONE.
ISTITUTO COMPRENSIVO “G. BATTAGLINI” MARTINA FRANCA (TA)
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.
Un trucchetto di Moltiplicazione per il calcolo mentale
Esempi risolti mediante immagini (e con excel)
NO WASTE Progetto continuità scuola primaria scuola secondaria Salorno a.s. 2013_
IL GIOCO DEL PORTIERE CASISTICA. Caso n. 1 Il portiere nella seguente azione NON commette infrazioni.
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.
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 Algoritmica B-alberi Lezione n°5.
Transcript della presentazione:

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. © Alberto Montresor

Insieme dinamico che implementa le seguenti funzionalità 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) © 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à 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 © 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 destro Key, Value © 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() © Alberto Montresor

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

4 sta nel sottoalbero destro di 2 T Ricerca: esempio Ricerca del valore 4 4 > 2 4 sta nel sottoalbero destro di 2 T 6 2 8 1 4 3 © Alberto Montresor

Ricerca: esempio Ricerca del valore 4 4 = 4 trovato! T 6 2 8 1 4 3 © Alberto Montresor

Ricerca: Implementazione Ricorsiva Iterativa © Alberto Montresor

Ricerca del minimo e del massimo: Esempi Sottoalbero con radice 2: - minimo 1 - massimo 4 Sottoalbero con radice 8: - minimo 8 - massimo 15 T 6 2 8 1 4 4 12 3 9 15 © Alberto Montresor

Ricerca del minimo e del massimo: Pseudo-codice © 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 6 u 2 8 1 4 12 9 15 3 u' © 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' 6 2 8 1 3 12 4 9 15 u © Alberto Montresor

Ricerca del successore: Pseudo-codice (iterativo) © 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? Qual è il caso ottimo? h = altezza dell’albero Caso pessimo: l'albero è organizzato come una sequenza lineare di valori crescenti o decrescenti. il costo è lineare nella dimensione dell'albero (O(n)) Caso ottimo: l'albero è completo, o anche solo bilanciato (ovvero la differenza fra il livello del nodo minimo e il livello del nodo massimo differisce al più di una quantità costante. In questo caso, l'altezza dell'albero è O(log n) © Alberto Montresor

Inserimento 5 < 6 Inserimento valore 5 5 > 2 T 5 > 4 6 4 2 8 1 4 4 12 3 5 9 15 © Alberto Montresor

Inserimento: pseudo-codice (iterativo) © Alberto Montresor

Inserimento: pseudo-codice (iterativo) © Alberto Montresor

Caso 1: Il nodo u da eliminare non ha figli Semplicemente si elimina Cancellazione Caso 1: Il nodo u da eliminare non ha figli Semplicemente si elimina Esempio: Eliminazione nodo 5 T 6 2 8 1 4 4 12 3 5 9 15 u © Alberto Montresor

Caso 2: Il nodo u da eliminare ha un unico figlio f Si elimina u 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 6 2 p 8 1 4 12 u 3 9 15 f © Alberto Montresor

Caso 3: Il nodo u da eliminare ha due figli 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 7 2 u 8 3 1 5 12 s 3 6 9 15 4 © Alberto Montresor

Cancellazione: Pseudo-codice © 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 © 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 dell’albero Caso pessimo: l'albero è organizzato come una sequenza lineare di valori crescenti o decrescenti. il costo è lineare nella dimensione dell'albero (O(n)) Caso ottimo: l'albero è completo, o anche solo bilanciato (ovvero la differenza fra il livello del nodo minimo e il livello del nodo massimo differisce al più di una quantità costante. In questo caso, l'altezza dell'albero è O(log n) © Alberto Montresor

Qual è l'altezza media di un albero di ricerca? 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 © 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) Bilanciamento ottenuto tramite merge/split, grado variabile B-alberi binari (Andersson, 1993) Alberi Red-Black (Bayer, 1972) © Alberto Montresor

Esempio di rotazione v u u T3 T1 v T2 T3 T1 T2 © 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: 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 © Alberto Montresor

parent puntatore al padre 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 © 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) L’altezza nera di un albero Red-Black è pari all’altezza nera della sua radice © 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! 30 15 70 60 85 20 10 5 Nil Nil Nil 50 65 80 90 Nil Nil 40 55 Nil Nil Nil Nil Nil Nil Nil Nil Nil Nil © 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: 3 30 15 70 60 85 20 10 5 Nil Nil Nil 50 65 80 90 Nil Nil 40 55 Nil Nil Nil Nil Nil Nil Nil Nil Nil Nil © Alberto Montresor

Alberi Red-Black: più colorazioni sono possibili Albero Red-Black con 3 nodi neri lungo ogni percorso dalla radice ai nodi Nil 30 15 70 60 85 20 10 5 Nil Nil Nil 50 65 80 90 Nil Nil 40 55 Nil Nil Nil Nil Nil Nil Nil Nil Nil Nil © Alberto Montresor

Alberi Red-Black: più colorazioni sono possibili Albero Red-Black con 3 nodi neri lungo ogni percorso dalla radice ai nodi Nil 30 15 70 60 85 20 10 5 Nil Nil Nil 50 65 80 90 Nil Nil 40 55 Nil Nil Nil Nil Nil Nil Nil Nil Nil Nil © Alberto Montresor

Alberi Red-Black: colorazione diversa, altezza nera diversa Albero RB con 3 nodi neri lungo ogni percorso dalla radice ai nodi Nil 30 15 70 60 85 20 10 Nil Nil Nil Nil 50 65 80 90 Nil Nil Nil Nil Nil Nil Nil Nil © Alberto Montresor

Alberi Red-Black: colorazione diversa, altezza nera diversa Stesso albero con 2 nodi neri lungo ogni percorso dalla radice ai nodi Nil 30 15 70 60 85 20 10 Nil Nil Nil Nil 50 65 80 90 Nil Nil Nil Nil Nil Nil Nil Nil © Alberto Montresor

Alberi Red-Black: questo albero può essere un albero RB? 30 15 70 60 20 85 10 Nil Nil Nil Nil Nil Nil Nil 50 40 55 Nil Nil Nil Nil © Alberto Montresor

Alberi Red-Black: questo albero può essere un albero RB? Per vincolo sull'altezza nera ci possono essere al più 3 nodi neri lungo un percorso! 30 15 70 60 20 85 10 Nil Nil Nil Nil Nil Nil Nil 50 40 55 Nil Nil Nil Nil © Alberto Montresor

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

Alberi Red-Black: questo albero può essere un albero RB? 30 15 70 60 20 85 10 Nil Nil Nil Nil Nil Nil Nil 50 Quindi uno di questi due nodi deve essere rosso 40 55 Nil Nil Nil Nil © Alberto Montresor

Alberi Red-Black: questo albero può essere un albero RB? Proviamo a colorare di rosso il nodo 60. Esiste un percorso con 2 nodi neri Esiste un percorso con 3 nodi neri 30 Impossibile per il vincolo sulla lunghezza 15 70 60 20 85 10 Nil Nil Nil Nil Nil Nil Nil 50 40 55 Nil Nil Nil Nil © Alberto Montresor

Alberi Red-Black: questo albero può essere un albero RB? Proviamo a colorare di rosso il nodo 70 30 15 70 60 85 20 10 Nil Nil Nil Nil Nil Nil Nil 50 40 55 Esistono due percorsi con 2 soli nodi neri Nil Nil Nil Nil © Alberto Montresor

Alberi Red-Black: questo albero può essere un albero RB? Per vincolo 4 e il vincolo 3, ci possono essere al più 2 nodi neri lungo un percorso! 30 15 70 60 20 85 10 Nil Nil Nil Nil Nil Nil Nil 50 40 55 Nil Nil Nil Nil © Alberto Montresor

Alberi Red-Black: questo albero può essere un albero RB? Per vincolo 4 e il vincolo 3, ci possono essere al più 2 nodi neri lungo un percorso! 30 15 70 60 20 85 10 Nil Nil Nil Nil Nil Nil Nil 50 Questa sarebbe l’unica possibilità! 40 55 Impossibile! Perché dovremmo violare vincolo 1 Nil Nil Nil Nil © Alberto Montresor

Alberi Red-Black: questo albero può essere un albero RB? Questo albero NON può essere un albero Red-Black! 30 15 70 60 85 20 10 Nil Nil Nil Nil Nil Nil Nil 50 40 55 Nil Nil Nil Nil © 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? © Alberto Montresor

Durante la modifica di un albero Red-Black: 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 dell’albero tramite rotazioni: Rotazione destra Rotazione sinistra © Alberto Montresor

far diventare B figlio destro di x Rotazione a sinistra p x Operazioni far diventare B figlio destro di x far diventare x il figlio sinistro di y far diventare y figlio di p, il vecchio padre di x A y B C © Alberto Montresor

far diventare B figlio destro di x Rotazione a sinistra p y Operazioni far diventare B figlio destro di x far diventare x il figlio sinistro di y far diventare y figlio di p, il vecchio padre di x x C A B © Alberto Montresor

far diventare B figlio destro di x Rotazione a sinistra p y Operazioni far diventare B figlio destro di x far diventare x il figlio sinistro di y far diventare y figlio di p, il vecchio padre di x x C A B © Alberto Montresor

Inserimento in alberi Red-Black 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 © Alberto Montresor

Come modificare la insertNode() balanceTree(n) © 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! © Alberto Montresor

balanceNode(Tree t) Nodi coinvolti n Il nodo inserito t Suo padre p Suo nonno n Suo zio z n p z t © 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 © 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 © 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. © 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. © 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 © 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 © 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 © 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 © Alberto Montresor

All together, now! © Alberto Montresor

Inserimento in alberi Red-Black 16 30 Nil Nil 15 70 60 85 20 10 Nil Nil Nil Nil 50 65 80 90 40 55 Nil Nil Nil Nil Nil Nil Nil Nil Nil Nil © Alberto Montresor

Inserimento in alberi Red-Black p è nero, t è rosso 30 15 70 60 85 20 10 Nil Nil t 16 Nil 50 65 80 90 Nil Nil 40 55 Nil Nil Nil Nil Nil Nil Caso 2: nessun cambiamento Non cambia l’altezza nera di nessun nodo! Nil Nil Nil Nil © Alberto Montresor

Inserimento in alberi Red-Black: x 42 30 Nil Nil 15 70 60 85 20 10 Nil Nil Nil Nil 50 65 80 90 40 55 Nil Nil Nil Nil Nil Nil Nil Nil Nil Nil © Alberto Montresor

Inserimento in alberi Red-Black p è rosso, t è rosso T 30 15 70 60 85 20 10 n Nil Nil Nil Nil 50 65 80 90 p z Vincolo 3 è violato 40 55 Nil Nil Nil Nil Nil Nil t Caso 3: z è rosso Nil 42 Nil Nil Nil Nil © Alberto Montresor

Inserimento in alberi Red-Black p è rosso, t è rosso 30 15 70 60 85 20 10 n Nil Nil Nil Nil 50 65 80 90 p z Coloriamo di nero p Coloriamo di nero z Coloriamo di rosso n 40 55 Nil Nil Nil Nil Nil Nil t Nil 42 Nil Nil Nil Nil © Alberto Montresor

Inserimento in alberi Red-Black p è rosso, t è rosso 30 15 70 60 85 20 10 t Nil Nil Nil Nil 50 65 80 90 Vincolo 3 è ripristinato Altri vincoli mai stati violati 40 55 Nil Nil Nil Nil Nil Nil Nil 42 Nil Nil Il padre del padre di t è il nuovo t Nil Nil © Alberto Montresor

Inserimento in alberi Red-Black p è rosso, t è rosso 30 Caso 5a: z è nero n 15 70 p z 60 85 20 10 t Nil Nil Nil Nil 50 65 80 90 40 55 Nil Nil Nil Nil Nil Nil Vincolo 3 è nuovamente violato tra il nuovo t e suo padre Nil 42 Nil Nil Nil Nil © Alberto Montresor

Inserimento in alberi Red-Black p è rosso, t è rosso 30 Caso 5a: z è nero 15 70 60 85 20 10 x Nil Nil Nil Nil 50 65 80 90 Coloriamo di nero t Coloriamo di rosso n Rotazione sinistra 40 55 Nil Nil Nil Nil Nil Nil Nil 42 Nil Nil Nil Nil © Alberto Montresor

Inserimento in alberi Red-Black p è rosso, t è rosso 30 Caso 5a: z è nero 15 60 t 70 20 50 10 85 65 Nil Nil Nil 40 Nil 55 Vincolo 3 è ripristinato Altri vincoli mai stati violati Nil 42 Nil Nil Nil Nil 80 90 Nil Nil Nil Nil Nil Nil Abbiamo finito © Alberto Montresor

Inserimento in alberi Red-Black 30 15 60 x 70 20 50 10 85 65 Nil Nil Nil 40 Nil 55 Nil 42 Nil Nil Nil Nil 80 90 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 Nil Nil Nil Nil Nil Nil © 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 © 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é?) © Alberto Montresor

Se il nodo “cancellato” è rosso altezza nera invariata 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 L’algoritmo balanceDelete(T,t) ripristina la proprietà Red-Black con rotazioni e cambiamenti di colore: ci sono 4 casi possibili (e 4 simmetrici)! © Alberto Montresor

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

Cancellazione - 8 casi possibili © Alberto Montresor

Cancellazione - 8 casi possibili © Alberto Montresor

Cancellazione in RB © Alberto Montresor

L’operazione di cancellazione è concettualmente complicata! Cancellazione 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) © Alberto Montresor

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? © Alberto Montresor