Alberi Rosso-Neri: definizione
|
|
|
- Agnolo Brescia
- 8 anni fa
- Visualizzazioni
Transcript
1 Alberi Rosso-Neri: definizione Altezza di un red-black tree Un albero Rosso Nero (Red Black Tree, RB tree) èunalbero binario di ricerca in cui ad ogni nodo viene associato un colore rosso o nero Ogni nodo di un RB tree ha quattro campi: key, left, right e p (come nel caso degli alberi di ricerca ordinari) + color Vincolando il modo in cui possiamo colorare i nodi lungo un qualsiasi percorso che va dalla radice ad una foglia, riusciamo a garantire che l abero sia approssivatimente bilanciato
2 Alberi Rosso-Neri: proprietà Altezza di un red-black tree Un RB tree è un albero binario di ricerca che soddisfa le seguenti proprietà (dette RB-properties): 1 ogni nodo è rosso o nero 2 la radice è nera 3 ogni foglia è nera 4 se un nodo è rosso, entrambi i suoi figli devono essere neri 5 per ogni nodo n, tutti i percorsi da n ad una qualsiasi delle sue foglie discendenti contengono lo stesso numero di nodi neri
3 Alberi Rosso-Neri: proprietà Altezza di un red-black tree (1) ogni nodo è rosso o nero (2) la radice è nera
4 Alberi Rosso-Neri: proprietà Altezza di un red-black tree (3) ogni foglia è nera (basta aggiungere un ulteriore livello fittizio)
5 Alberi Rosso-Neri: proprietà Altezza di un red-black tree (4) se un nodo è rosso entrambi i suoi figli sono neri
6 Alberi Rosso-Neri: proprietà Altezza di un red-black tree (5) per ogni nodo n, tutti i percorsi da n ad una qualsiasi delle sue foglie discendenti contengono lo stesso numero di nodi neri
7 Alberi Rosso-Neri: un esempio Altezza di un red-black tree Figura: red-black trees una versione semplificata
8 Alberi Rosso-Neri: proprietà 5 Altezza di un red-black tree Un albero rosso-nero senza nodi rossi è bilanciato: tutti i suoi livelli sono completi tranne al più l ultimo, al quale può mancare qualche foglia
9 Alberi bilanciati Alberi Rosso-Neri: definizione Altezza di un red-black tree Definizione (fattore di bilanciamento): il fattore di bilanciamento (v) diunnodov è definito come la differenza tra l altezza del suo sottoalbero sinistro e quella del suo sottoalbero destro (v) =altezza[left[v]] altezza[right[v]] Definizione (bilanciamento in altezza) definizione alternativa: un albero è bilanciato in altezza se, per ogni nodo v, (v) 1
10 Alberi Rosso-Neri: proprietà 4 Altezza di un red-black tree
11 Idea di base Alberi Rosso-Neri: definizione Altezza di un red-black tree Per la proprietà 5 (tutti i cammini da un nodo x alle foglie contengono lo stesso numero di nodi neri) un albero rosso-nero senza nodi rossi deve essere bilanciato: tutti i suoi livelli sono completi tranne al più l ultimo, al quale può mancare qualche foglia Non èperò quasi completo (come nel caso di alberi che rappresentano un heap) perchè le foglie mancanti non sono necessariamente quelle più a destra A questo albero bilanciato possiamo aggiungere non troppi nodi rossi (grazie alla proprietà 4:se un nodo è rosso i suoi figli deveno essere neri) Ciò rende l albero quasi bilanciato. Cerchiamo di formalizzare questo concetto
12 Black-height di un RB tree Altezza di un red-black tree Sia T un red-black tree: Per ogni nodo x di T,l altezza nera di x bh(x) èparial numero di nodi neri (escluso x) che si incontrano lungo un cammino da x ad una foglia L altezza nera dell albero è definita come l altezza nera della sua radice r, ossia bh(t )=bh(r) Per la proprietà 5, il concetto di altezza nera è ben definito,in quanto tutti i percorsi che scendono da un nodo contengono lo stesso numero di nodi neri
13 Alberi Rosso-Neri: altezza nera Altezza di un red-black tree
14 Calcolo dell altezza nera di x Altezza di un red-black tree bh(x) =0 x bh(x) =h +1 x bh(x) =h h l (a) r h h l (b) r h x bh(x) =h x bh(x) =h h l r h 1 (c) h 1 l (d) r h
15 Altre proprietà dell altezza nera Altezza di un red-black tree 1 se x è rosso bh(x) = bh(p[x]) 2 se x ènerobh(x) =bh(p[x]) 1 3 in entrambi i casi bh(x) bh(p[x]) 1
16 Un paio di risultati utili Altezza di un red-black tree Lemma 1: Il numero di nodi interni di un sottoalbero radicato in x è maggiore o uguale di 2 bh(x) 1. Teorema 1: L altezza massima di un RB tree con n nodi interni è2log(n +1).
17 Un paio di risultati utili Altezza di un red-black tree Lemma 1: Il numero di nodi interni di un sottoalbero radicato in x è maggiore o uguale di 2 bh(x) 1 Proof: Procediamo per induzione sull altezza h di x. Nel seguito, denoteremo con int(x) il numero dei nodi interni del sottoalbero radicato in x. h = 0 e quindi x è una foglia (i.e. x = Nil). In questo caso int(x) =0ebh(x) = 0. Quindi: int(x) =0 2 bh(x) 1=2 0 1=0
18 Un paio di risultati utili Altezza di un red-black tree Lemma 1: Il numero di nodi interni di un sottoalbero radicato in x è maggiore o uguale di 2 bh(x) 1 Proof: h > 0. In questo caso x ha due figli l = left[x] edr = right[x] con bh(l), bh(r) bh(x) 1 (proprietà 3 dell altezza nera). Inoltre, per ipotesi induttiva int(l) 2 bh(l) 1 2 bh(x) 1 1 e int(r) 2 bh(r) 1 2 bh(x) 1 1. Allora: int(x) 1+int(l)+int(x) 1+(2 bh(x) 1 1) + (2 bh(x) 1 1) = 2 2 bh(x) 1 1 = 2 bh(x) 1
19 Un paio di risultati utili Altezza di un red-black tree Teorema 2: L altezza massima di un RB tree con n nodi interni è 2log(n +1). Proof: sia h l altezza dell albero per la un prop. 4, almeno metà dei nodi in qualsiasi cammino dalla radice ad una foglia (esclusa la radice) devono essere neri (dopo ogni nodo rosso c è almenounnodonero) di conseguenza, bh(t )=bh(root) h/2 Per il Lemma 1, n = int(root) 2 bh(root) 1 2 h/2 1, ossia 2 h/2 n +1 Allora: h/2 log(n +1)e h 2log(n +1)
20 Alberi Rosso-Neri: definizione Sono delle operazioni di ristrutturazione locale dell albero
21 Vediamo nel dettaglio le operazioni di inserimento e cancellazione di un nodo Le operazioni Search, Minimum e Maximum, Successor e Predecessor possono essere implementate esattamente come per gli alberi binari di ricerca ordinari
22 di un nodo z Come per gli alberi binari di ricerca, l inserimento di un nodo z in un RB tree cerca un cammino dalla root dell albero fino al nodo p che diventerà suo padre Una volta identificato p, z viene aggiunto come figlio sinistro (se key [z] < key [p])odestro(sekey [z] > key [p]) di p e colorato di rosso Quali RB-properties possono essere violate in conseguenza di questo inserimento? Solo due: - la proprietà 2(sez viene inserito in un albero vuoto) - la proprietà 4(sez viene aggiunto come figlio di un nodo rosso) La procedura che elimina violazioni delle RB-properties dovute all inserimento di una chiave èlarb-insert-fixup(t, z); qui z è il nodo che da luogo alla violazione
23 RB-Insert-Fixup(T, z) Ripristina la proprietà 2 colorando la root z (che in questo caso è rossa) di nero Ripristina la proprietà 4, eseguendo (ricorsivamente) delle rotazioni e ricolazioni sul nodo z; decidiamo in base a tre possibili casi: 1 lo zio y di z è rosso 2 lo zio y di z èneroez è un figlio destro 3 lo zio y di z èneroez è un figlio sinistro
24 Caso 1: lo zio y di z è rosso C = C new z A p[z] D y A D B z δ ɛ B δ ɛ Figura: in questo caso, A e D diventano neri e C diventa rosso. Inoltre C diventa il nuovo z dato che il suo cambiamento di colore potrebbe aver causato una violazione della proprietà 4
25 Caso 2: lo zio y di z èneroez è un figlio sinistro C = B B p[z] D y A C A z δ ɛ D δ ɛ Figura: B (i.e. p[z]) diventa nero; C (i.e. p[p[z]]) diventa rosso; ruotiamo C adestra
26 Caso 3: lo zio y di z èneroez è un figlio destro C = C A p[z] D y B D B z δ ɛ A new z δ ɛ Figura: viene ricondotto al caso 2 ruotando A, i.e. p[z] a sinistra. A questo punto non ci resta che colorare C di rosso, B di rosso e ruotare C adestra
27 Caso 3: lo zio y di z èneroez è un figlio destro Attenzione alle simmetrie!!! C = D B y D p[z] C E E z B δ ɛ δ ɛ Figura: D (i.e. p[z]) diventa nero; C (i.e. p[p[z]]) diventa rosso; ruotiamo C a sinistra
28 Caso 2: lo zio y di z èneroez è un figlio sinistro C = C B y E p[z] B D D z ɛ E new z δ δ ɛ Figura: ruotiamo E adestraede diventa il nuovo z. Osservate che, dopo la rotazione, z è un figlio destro di un nodo D che a sua volta èun figlio destro
29 Analisi Alberi Rosso-Neri: definizione RB-Insert-Fixup(T, z) richiede un tempo O(log 2 n) Di conseguenza, anche RB-Insert(T, z) richiede un tempo O(log 2 n)
30 : un esercizio Figura: inserimentodi41e Figura: inserimento di 31
31 : un esercizio Figura: inserimento di 12 12
32 : un esercizio Figura: inserimento di 19
33 : un esercizio Figura: inserimento di 8
34 di un nodo con due figli Nota: possiamo sempre assumere di eliminare un nodo che ha al più unfiglio. Infatti, nel caso in cui il nodo z da eliminare ha due figli, possiamo sostituire la chiave di z con quella di y = Tree-Successor(T, z) (il successore di z), e poi rimuovere y Poichè z è un nodo con due figli, il suo successore y èilnodopiùa sinistra del sottoalbero destro; inoltre: y non può avere un figlio sinistro (altrimenti non sarebbe il nodo più a sinistra del sottoalbero destro) di conseguenza, y ha al più il figlio destro
35 di un nodo con al più un figlio Sia z il nodo da cancellare, siano x e p l unico figlio ed il padre di z, rispettivamente (nota: sez è una foglia, allora x è Nil). Per eliminare z, eseguiamo i seguenti passi: 1. inanzitutto, rimuoviamo z collegando p con x (p diventa il padre di x ed x diventa il figlio di p); 2. z era rosso: possiamo semplicemente terminare perchè l eliminazione di z non causa violazioni delle RB-properties 3. z era nero: potremmo causare una violazione della proprietà 5
36 Eliminazione: z rosso p p z x x Figura: Eliminare un nodo rosso non causa violazioni delle RB-properties
37 Eliminazione: z nero e suo figlio x rosso p p z x x Figura: Il figlio rosso di z acquisisce un extra credito diventando nero
38 Eliminazione: z nero e suo figlio x nero p p z x x Figura: Il figlio nero di z acquisisce un extra credito diventando doppio nero. Eseguiamo RB-Delete-FixUp(T, x) per ripristinare la proprietà 5
39 di un nodo con al più un figlio Per ristabilire la proprietà 5nelcaso3 (eliminazione di un nodo z nero), si attribuisce al nodo x (figlio di z) un extra credito Questo significa che se x è rosso lo coloriamo di nero, mentre se x è gia nero assume un colore fittizio detto doppio nero, cheserve per ricordarci che abbiamo collassato due nodi neri in uno. Nel calcolo della black-height un nodo doppio nero conta due volte Infine, eseguiamo una procedura (RB-Delete-Fixup(T, x)) che spingerà, mediante rotazioni e ricolazioni, l extra credito verso la radice dove verrà ignorato Se lungo il cammino verso la radice incontriamo un nodo rosso, esso sarà semplicemente colorato di nero
40 RB-Delete-Fixup(T,x) Nel ripristinare la proprietà 5, teniamo conto di una serie di casi (ottenuti confrontando il colore di x con quello di suo fratello w) 1. w è nero ed ha almeno un figlio rosso. Possiamo distinguere ulteriori due sottocasi: 1.1 il figlio destro di w è rosso 1.2 il figlio sinistro di w è rosso e quello destro ènero 2. w è nero ed ha entrambi i figli neri. Anche in questo caso distinguiamo due possibili sottocasi 2.1 il nodo p[x] (cheè anche il padre di w) è rosso 2.2 il nodo p[x] ènero 3. w è rosso
41 Caso 1.1: w nero e figlio destro di w rosso = B D A x D w B E C E A C ɛ ζ δ ɛ ζ δ Figura: scambiamo il colore di B con quello di w; ruotiamob a sinistra 1 abbiamo aggiunto un nodo nero a sinistra (possiamo togliere il doppio nero da A) 2 eliminato un livello nero a destra; coloriamo E di rosso
42 Caso 1.1: w nero e figlio destro di w rosso B D A x D w B E C E A C ɛ ζ δ ɛ ζ δ Figura: eliminamo l extra nero rappresentato da x colorando B (il padre di x) ede (il figlio destro di w) di nero e ruotando B a sinistra
43 RB-Delete-Fixup, caso 1.2: w è nero, il figlio sinistro di w è rosso e quello destro ènero B B A x D w A x C new w C E D δ ɛ ζ δ E ɛ ζ Figura: questo caso è trasformato nel caso 1.1 colorando C (i.e. left[w]) di nero, D (i.e. w) di rosso e ruotando D adestra
44 RB-Delete-Fixup, caso 2.1: w haentrambiifiglinerie p[x] è rosso B B A x D w A D C E C E δ ɛ ζ δ ɛ ζ Figura: eliminamo il doppio nero del nodo x togliendo un credito nero sia ad A che a D (quindi A diventa nero ordinario e D diventa rosso) e facendo acquisire un extra credito a B (il padre di x) che da rosso diventa nero
45 RB-Delete-Fixup, caso 2.2: w haentrambiifiglinerie p[x] ènero B B new x A x D w A D C E C E δ ɛ ζ δ ɛ ζ Figura: è simile al caso 3.1, di nuovo togliamo un credito nero sia ad A che a D (A diventa nero ordinario e D diventa rosso) e facendo acquisire un extra credito a B che da nero diventa doppio-nero. A questo punto B diventa il nuovo x
46 RB-Delete-Fixup: caso 3 B D A x D w B E C E x A new w C ɛ ζ δ ɛ ζ δ Figura: viene trasformato in uno dei casi precedenti colorando D (i.e. w) di rosso, B (i.e. p[x]) di nero e ruotando il padre di x a sinistra
47 Analisi Alberi Rosso-Neri: definizione RB-Delete-Fixup(T, x) richiede un tempo O(log 2 n) Di conseguenza, anche RB-Delte(T, x) richiede un tempo O(log 2 n)
48 : un esempio Figura: cancellazione di 8
49 : un esempio Figura: cancellazione di 12 31
50 : un esempio Figura: cancellazione di 19
51 : un esempio Figura: cancellazione di Figura: cancellazione di 38
Alberi rosso-neri. Le operazioni sugli alberi binari di ricerca hanno complessità proporzionale all altezza h dell albero.
Alberi rosso-neri Le operazioni sugli alberi binari di ricerca hanno complessità proporzionale all altezza h dell albero. Gli alberi rosso-neri sono alberi binari di ricerca in cui le operazioni Insert
Alberi rosso-neri. Oltre ad essere alberi binari di ricerca, gli alberi rosso-neri soddisfano le seguenti proprietà:
Alberi rosso-neri Gli alberi rosso-neri sono alberi binari di ricerca in cui le operaioni Insert e Delete sono opportunamente modificate in modo tale da garantire un altea dell albero h = O(log n). A tale
Alberi binari di ricerca
Alberi binari di ricerca Ilaria Castelli [email protected] Università degli Studi di Siena Dipartimento di Ingegneria dell Informazione A.A. 2009/20010 I. Castelli Alberi binari di ricerca, A.A. 2009/20010
Multi-way search trees
Multi-way search trees GT. 10.4 1 Argomenti Multi-way search trees Multi-way searching 9 (2,4) Trees 2 5 7 10 14 2 1 Alberi Binari di Ricerca Bilanciati n numero di chiavi (entry(key,elem)) AVL tree log(
Alberi Binari di Ricerca
Alberi Binari di Ricerca Prof. G. M. Farinella [email protected] www.dmi.unict.it/farinella Riferimenti Bibliografici Cormen T.H., Leiserson C.E., Rivest R.L Introduction to Algorithms, Third Edition,
Alberi Binari di Ricerca
Alberi Binari di Ricerca Algoritmi su gli alberi binari: visite Dato un puntatore alla radice di un albero vogliamo scandire in modo sistematico tutti i nodi di tale albero In una lista abbiamo una unica
Alberi binari e alberi binari di ricerca
Alberi binari e alberi binari di ricerca Violetta Lonati Università degli studi di Milano Dipartimento di Scienze dell Informazione Laboratorio di algoritmi e strutture dati Corso di laurea in Informatica
Note per la Lezione 4 Ugo Vaccaro
Progettazione di Algoritmi Anno Accademico 2016 2017 Note per la Lezione 4 Ugo Vaccaro Ripasso di nozioni su Alberi Ricordiamo che gli alberi rappresentano una generalizzazione delle liste, nel senso che
Esercizi Capitolo 6 - Alberi binari di ricerca
Esercizi Capitolo 6 - Alberi binari di ricerca Alberto Montresor 9 Agosto, 204 Alcuni degli esercizi che seguono sono associati alle rispettive soluzioni. Se il vostro lettore PDF lo consente, è possibile
Algoritmi e Strutture Dati
Alberi Binari di Ricerca (BST) Maria Rita Di Berardini, Emanuela Merelli 1 1 Dipartimento di Matematica e Informatica Università di Camerino A.A. 2006/07 Alberi Binari di Ricerca (Binary Search Trees BST)
ADT Coda con priorità
Code con priorità ADT Coda con priorità Una coda con priorità è una struttura dati dinamica che permette di gestire una collezione di dati con chiave numerica. Una coda con priorità offre le operazioni
Esercizio 1. E vero che in un AVL il minimo si trova in una foglia o nel penultimo livello? FB = -1. livello 0 FB = -1. livello 1 FB = -1.
Esercizio 1 E vero che in un AVL il minimo si trova in una foglia o nel penultimo livello? FB = -1 livello 0 FB = -1 FB = -1 livello 1 FB = -1 livello 2 livello 3 L altezza è 3, il minimo si trova nel
Per semplicità eliminiamo le ripetizioni nell'albero.
Albero binario di ricerca 20 40 100 95 Un albero binario di ricerca é un albero binario in cui ogni nodo ha un etichetta minore o uguale a quelle dei nodi nel sottoalbero radicato nel figlio destro e maggiore
Esercitazione 6. Alberi binari di ricerca
Esercitazione 6 Alberi binari di ricerca Struttura base Rappresentabile attraverso una struttura dati concatenata in cui ogni nodo è un oggetto di tipo struttura Ogni nodo contiene: campo chiave (key)
Algoritmi e Strutture Dati
Heap Maria Rita Di Berardini, Emanuela Merelli 1 1 Dipartimento di Matematica e Informatica Università di Camerino A.A. 2006/07 Heap Heap binari: definizione Un heap binario è una struttura dati composta
Un heap binario è un albero binario con le seguenti caratteristiche:
Heap Un heap binario è un albero binario con le seguenti caratteristiche: È quasi completo: tutti i livelli, tranna al più l ultimo sono completi e le foglie dell ultimo livello sono tutte adossate a sinistra.
Problemi di ordinamento
Problemi di ordinamento Input: una sequenza di n numeri a 1, a 2,..., a n ; Output: una permutazione a 1, a 2,..., a n di a 1, a 2,..., a n tale che a 1 a 2... a n. Generalmente, la sequenza è rappresentata
Esercizi su alberi binari
Esercizi su alberi binari Esercizi svolti: Determinazione nodi contenti verifica completezza verifica quasi completezza lunghezza del cammino interno determinazione ultima foglia in un quasi completo verifica
Alberi. Alberi: definizioni. Alberi Binari. Esercizi su alberi binari: metodi ricorsivi. Struttura dati per alberi generici. ASD-L - Luca Tesei
Alberi Alberi: definizioni Alberi Binari Esercizi su alberi binari: metodi ricorsivi Struttura dati per alberi generici 1 Alberi Gli alberi sono strutture dati naturalmente ricorsive Un albero è un particolare
Alberi binari di ricerca
Alberi binari di ricerca Definizione Un albero si dice albero binario di ricerca è un albero binario in cui: - Ogni nodo è caratterizzato un valore chiamato chiave - L insieme delle chiavi è totalmente
Alberi binari. Ilaria Castelli [email protected] A.A. 2009/2010. Università degli Studi di Siena Dipartimento di Ingegneria dell Informazione
Alberi binari Ilaria Castelli [email protected] Università degli Studi di Siena Dipartimento di Ingegneria dell Informazione A.A. 2009/2010 I. Castelli Alberi binari, A.A. 2009/2010 1/20 Alberi binari
LE STRUTTURE DATI DINAMICHE: GLI ALBERI. Cosimo Laneve
LE STRUTTURE DATI DINAMICHE: GLI ALBERI Cosimo Laneve 1 argomenti 1. definizione di alberi e nozioni relative 2. implementazione degli alberi, creazione, visita 3. algoritmo di visita iterativa e sua implementazione
Algoritmi e Strutture di Dati I 1. Algoritmi e Strutture di Dati I Massimo Franceschet http://www.sci.unich.it/ francesc
Algoritmi e Strutture di Dati I 1 Algoritmi e Strutture di Dati I Massimo Franceschet http://www.sci.unich.it/ francesc Algoritmi e Strutture di Dati I 2 Grafo Un grafo G è una coppia (V, E) ove V è un
Algoritmi (9 CFU) (A.A ) Heap e Algoritmo HeapSort. Prof. V. Cutello Algoritmi 1
Algoritmi (9 CFU) (A.A. 2009-10) Heap e Algoritmo HeapSort. Prof. V. Cutello Algoritmi 1 Overview Definiamo la struttura dati heap Operazioni di costruzione e gestione di un heap Algoritmo Heapsort Code
Alberi binari di ricerca
Alberi binari di ricerca Definizione Visita dell albero inorder Ricerca Ricerca minimo, massimo e successore. Inserimento ed eliminazione di un nodo Problema del bilanciamento dell albero Albero binario
Espressioni aritmetiche
Espressioni aritmetiche Consideriamo espressioni costruite a partire da variabili e costanti intere mediante applicazione delle operazioni di somma, sottrazione, prodotto e divisione (intera). Ad esempio:
Un albero completamente bilanciato o pieno (full) alberi completamente sbilanciati. Un albero binario completo
alberi completamente sbilanciati Un albero completamente bilanciato o pieno (full) Definizione: Un albero è pieno se tutte le foglie sono sullo stesso livello e ogni nodo non foglia ha due figli. Il numero
Heap e code di priorità
Heap e code di priorità Violetta Lonati Università degli studi di Milano Dipartimento di Scienze dell Informazione Laboratorio di algoritmi e strutture dati Corso di laurea in Informatica AA 2009/2010
Lezione 12 Tabelle Hash
Lezione 12 Tabelle Hash Rossano Venturini [email protected] Pagina web del corso http://didawiki.cli.di.unipi.it/doku.php/informatica/all-b/start Esercizio 2 ABR: Visita Scrivere un programma che legga
