Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Copyright © 2004 -...

21
Camil Demetrescu, Irene Finocchi, Giuseppe F. Italiano Algoritmi e strutture dati Copyright © 2004 - The McGraw - Hill Companies, srl Capitolo 6 Interrogazioni AVL Algoritmi e Strutture Dati

Transcript of Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Copyright © 2004 -...

Page 1: Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Copyright © 2004 - The McGraw - Hill Companies, srl Capitolo 6 Interrogazioni.

Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati

Copyright © 2004 - The McGraw - Hill Companies, srl

Capitolo 6Interrogazioni AVL

Algoritmi e Strutture Dati

Page 2: Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Copyright © 2004 - The McGraw - Hill Companies, srl Capitolo 6 Interrogazioni.

Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati

Copyright © 2004 - The McGraw - Hill Companies, srl

15

6 18

3 8 17 20

2 4

13

107

9

+1

-1 -1

-10-1

0

0

0

00 0

0

25

0

Posso usare un albero AVL per implementare un dizionario?

come implemento Insert(14)? …e delete(25)?

+2 !

-2 !

-2 !

-1

-1

14

0

0

Page 3: Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Copyright © 2004 - The McGraw - Hill Companies, srl Capitolo 6 Interrogazioni.

Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati

Copyright © 2004 - The McGraw - Hill Companies, srl

Implementazione delle operazioni

• L’operazione search procede come in un BST

• Ma inserimenti e cancellazioni potrebbero sbilanciare l’albero

• Manteniamo il bilanciamento tramite opportune rotazioni

Page 4: Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Copyright © 2004 - The McGraw - Hill Companies, srl Capitolo 6 Interrogazioni.

Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati

Copyright © 2004 - The McGraw - Hill Companies, srl

Rotazione di base

• Mantiene la proprietà di ricerca• Richiede tempo O(1)

Page 5: Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Copyright © 2004 - The McGraw - Hill Companies, srl Capitolo 6 Interrogazioni.

Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati

Copyright © 2004 - The McGraw - Hill Companies, srl

Ribilanciamento tramite rotazioni

• Le rotazioni sono effettuate su nodi sbilanciati

• Sia v un nodo con fattore di bilanciamento (v) ± 2

• Esiste un sottoalbero T di v che lo sbilancia• A seconda della posizione di T si hanno 4 casi:

• I quattro casi sono simmetrici a coppie (SD (DS) andrebbe meglio definito come segue: T è nel sottoalbero sinistro (destro) di v, ma non è il sottoalbero sinistro (destro) del figlio sinistro (destro) di v)

(v)=+2 (v)=-2

Page 6: Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Copyright © 2004 - The McGraw - Hill Companies, srl Capitolo 6 Interrogazioni.

Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati

Copyright © 2004 - The McGraw - Hill Companies, srl

Caso SS (v)=+2, l’altezza di T è h+3, e l’altezza di T1 è h+1

• Si applica una rotazione semplice verso destra su v; 2 sottocasi possibili:(i) l’altezza di T2 è h l’altezza dell’albero coinvolto nella rotazione passa da h+3 a h+2, e

il fattore di bilanciamento di u e v diventa pari a 0

(ii) l’altezza di T2 è h+1 (NOTA: questo può essere visto anche come un caso SD) l’altezza dell’albero coinvolto nella rotazione rimane pari a h+3, e il fattore di bilanciamento di u diventa pari a -1, mentre quello di v diventa pari a 1

0/-1

0/+1

Page 7: Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Copyright © 2004 - The McGraw - Hill Companies, srl Capitolo 6 Interrogazioni.

Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati

Copyright © 2004 - The McGraw - Hill Companies, srl

Osservazioni sul caso SS

• Aggiungendo una foglia a un albero bilanciato si può verificare solo il caso (i) (perché altrimenti l’AVL era già sbilanciato!)

• Invece, cancellando una foglia da un albero bilanciato si possono verificare entrambi i casi (ad esempio, se cancello una foglia da T3)

Page 8: Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Copyright © 2004 - The McGraw - Hill Companies, srl Capitolo 6 Interrogazioni.

Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati

Copyright © 2004 - The McGraw - Hill Companies, srl

Caso SD (v)=+2, altezza di T è h+3, altezza di T(z) è h+2, altezza di T1 è h

sottoalbero destro di z ha altezza h+1 e (z)=-1

• Due sottocasi: (1) altezza di T2 è h (e quindi l’altezza di T3 è h o h-1); (2) altezza di T2 è h-1 (e quindi l’altezza di T3 è h)

• Applicare due rotazioni semplici: una verso sinistra sul figlio del nodo critico (nodo z), l’altra verso destra sul nodo critico (nodo v)

• In entrambi i sottocasi, l’altezza dell’albero coinvolto nella rotazione passa da h+3 a h+2

h+1

h+1

Page 9: Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Copyright © 2004 - The McGraw - Hill Companies, srl Capitolo 6 Interrogazioni.

Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati

Copyright © 2004 - The McGraw - Hill Companies, srl

+1 0

…i due sottocasi del caso SD…

0/-1

Page 10: Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Copyright © 2004 - The McGraw - Hill Companies, srl Capitolo 6 Interrogazioni.

Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati

Copyright © 2004 - The McGraw - Hill Companies, srl

insert(elem e, chiave k)

1. Crea un nuovo nodo u con elem=e e chiave=k

2. Inserisci u come in un BST

3. Ricalcola i fattori di bilanciamento dei nodi nel cammino dalla radice a u: sia v il più profondo nodo con fattore di bilanciamento pari a ±2 (nodo critico)

4. Esegui una rotazione opportuna su vOss.: un solo ribilanciamento è sufficiente, poiché l’altezza dell’albero

coinvolto diminuisce di 1 (sottocaso 1 caso SS o DD, o i due sottocasi dei casi SD o DS)

Page 11: Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Copyright © 2004 - The McGraw - Hill Companies, srl Capitolo 6 Interrogazioni.

Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati

Copyright © 2004 - The McGraw - Hill Companies, srl

15

6 18

3 8 17 20

2 4 13

9

7

10

insert (10,e)

+1

-1 -1

-10-1

+10

0

00

0

0

25

0

+2

-2

-2

+2

-1

caso SD

Page 12: Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Copyright © 2004 - The McGraw - Hill Companies, srl Capitolo 6 Interrogazioni.

Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati

Copyright © 2004 - The McGraw - Hill Companies, srl

15

6 18

3 8 17 20

2 4 13

10

7

9

insert (10,e)

+1

-1 -1

-10-1

+10

0

00

0

0

25

0

+2

-2

-2

+2

-1

Page 13: Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Copyright © 2004 - The McGraw - Hill Companies, srl Capitolo 6 Interrogazioni.

Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati

Copyright © 2004 - The McGraw - Hill Companies, srl

15

6 18

3 8 17 20

2 4

13

107

9

insert (10,e)

+1

-1 -1

-10-1

+1

0

0

00 0

0

25

0

+2

-2

-2

+2

-1

0

Page 14: Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Copyright © 2004 - The McGraw - Hill Companies, srl Capitolo 6 Interrogazioni.

Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati

Copyright © 2004 - The McGraw - Hill Companies, srl

delete(elem e)

1. Cancella il nodo come in un BST2. Ricalcola i fattori di bilanciamento dei nodi

nel cammino dalla radice al padre del nodo eliminato fisicamente (che potrebbe essere il predecessore del nodo contenente e)

3. Ripercorrendo il cammino dal basso verso l’alto, esegui l’opportuna rotazione semplice o doppia sui nodi sbilanciati

Oss.: potrebbero essere necessarie O(log n) rotazioni: infatti eventuali diminuzioni di altezza indotte dalle rotazioni fanno permanere lo sbilanciamento

Page 15: Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Copyright © 2004 - The McGraw - Hill Companies, srl Capitolo 6 Interrogazioni.

Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati

Copyright © 2004 - The McGraw - Hill Companies, srl

15

6 18

3 8 17 20

2 4 13

9

7

delete (18)

+1

-1 -1

-10-1

+10

0

00

0

25

0

successore di 18

20

+2

0caso SD

Page 16: Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Copyright © 2004 - The McGraw - Hill Companies, srl Capitolo 6 Interrogazioni.

Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati

Copyright © 2004 - The McGraw - Hill Companies, srl

15

6

3

8

17

2 4

13

97

delete (18)

+1

+1

-1

0

+1

+1

00

00

025

0

+2

0

20

Page 17: Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Copyright © 2004 - The McGraw - Hill Companies, srl Capitolo 6 Interrogazioni.

Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati

Copyright © 2004 - The McGraw - Hill Companies, srl

156

3

8

172 4

13

9

7

delete (18)

0+1

0

0

0

+100

000

25

0

20

Page 18: Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Copyright © 2004 - The McGraw - Hill Companies, srl Capitolo 6 Interrogazioni.

Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati

Copyright © 2004 - The McGraw - Hill Companies, srl

Cancellazione con rotazioni a cascata

Page 19: Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Copyright © 2004 - The McGraw - Hill Companies, srl Capitolo 6 Interrogazioni.

Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati

Copyright © 2004 - The McGraw - Hill Companies, srl

Classe AlberoAVL

Page 20: Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Copyright © 2004 - The McGraw - Hill Companies, srl Capitolo 6 Interrogazioni.

Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati

Copyright © 2004 - The McGraw - Hill Companies, srl

• Tutte le operazioni hanno costo O(log n) poiché l’altezza dell’albero è O(log n) e ciascuna rotazione richiede solo tempo costante

Costo delle operazioni

Page 21: Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Copyright © 2004 - The McGraw - Hill Companies, srl Capitolo 6 Interrogazioni.

Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati

Copyright © 2004 - The McGraw - Hill Companies, srl

• Mantenere il bilanciamento è risultato cruciale per ottenere buone prestazioni

• Esistono vari approcci per mantenere il bilanciamento:– Tramite rotazioni– Tramite fusioni o separazioni di nodi (alberi 2-3, B-

alberi )

• In tutti questi casi si ottengono tempi di esecuzione logaritmici nel caso peggiore

Riepilogo