AiSD W7

background image

Algorytmy i struktury danych

Wykład 7: Drzewa AVL



Poj

ę

cie drzewa AVL



Rotacje



Podstawowe operacje na drzewie AVL

6

5

9

12

8

2

0

0

0

0

0

+1

background image

2

Algorytmy i struktury danych

Drzewa AVL



Drzewo AVL (1962 –

A

delson-

V

elskij,

L

andis)



Drzewo AVL jest rozwini

ę

ciem drzewa BST

(z zachowaniem wszystkich jego własno

ś

ci);



Dla ka

ż

dego wierzchołka w drzewie AVL wysoko

ś

ci jego dwóch

poddrzew (lewego i prawego) o korzeniu w tym wierzchołku ró

ż

ni

ą

si

ę

co najwy

ż

ej o 1;



W

ę

zeł oprócz pól danych oraz lewego i prawego wska

ź

nika ma te

ż

pole

opisuj

ą

ce ró

ż

nic

ę

wysoko

ś

ci lewego i prawego poddrzewa;



Z definicji wynika,

ż

e to pole mo

ż

e mie

ć

warto

ść

ze zbioru {-1, 0, 1};

6

5

9

12

8

2

0

0

0

0

0

+1

Drzewo AVL

w( x) = h(LD)

−−−−

h(PD)

background image

3

Algorytmy i struktury danych

Obliczanie wag wierzchołków drzewa AVL



Dla ka

ż

dego wierzchołka drzewa x współczynnik zrównowa

ż

enia w(x)

ma posta

ć

w( x) = h(LD)

−−−−

h(PD),

gdzie LD i PD s

ą

odpowiednio lewym i prawym poddrzewem

o korzeniu x;

H

C

M

J

A

-1

+1

-1

Drzewo BST jest drzewem AVL









dla każdego wierzchołka x:

w(x)

{-1, 0, +1}

+2

W jakiej kolejności dodawano poszczególne wartości do

drzewa?

0

K

0

background image

4

Algorytmy i struktury danych

Operacje na drzewie AVL



Wyszukiwanie:



poniewa

ż

drzewo AVL jest te

ż

drzewem BST, ta operacja

wygl

ą

da tak jak dla drzew BST;



Wstawianie:



polega na wyszukaniu miejsca w drzewie, a nast

ę

pnie

wstawieniu elementu (jak w BST);



poniewa

ż

podczas operacji struktura drzewa zmienia si

ę

i mo

ż

e nie zosta

ć

zachowany warunek AVL (dotycz

ą

cy

ż

nicy w wysoko

ś

ci poddrzew), trzeba t

ę

struktur

ę

przywróci

ć

(wymagana tzw. rotacja);

background image

5

Algorytmy i struktury danych

Operacje na drzewie AVL

6

5

9

12

8

2

0

+1

0

0

Drzewo wyjściowe

+1

+2

-1

0

0

0

0

0

6

5

9

12

8

2

3

0

Drzewo z nowym węzłem

Jak przywrócić równowagę?

Dodajemy węzeł z wartością 3

background image

6

Algorytmy i struktury danych

Operacje na drzewie AVL



Usuwanie:



polega na wyszukaniu elementu w drzewie a potem jego
usuni

ę

ciu (patrz BST)



mo

ż

e zaj

ść

potrzeba przywrócenia równowagi drzewa

(wymagana rotacja);

background image

7

Algorytmy i struktury danych

Operacje na drzewie AVL



Rotacja:



zmiana konfiguracji w

ę

złów;



cel: przywrócenie struktury drzewa AVL;



podstawowa własno

ść

: po rotacji drzewo jest nadal

drzewem BST;



rodzaje rotacji:



lewe i prawe,



pojedyncze i podwójne;

background image

8

Algorytmy i struktury danych

Operacje na drzewie AVL



Usuwanie – niespełniony warunek AVL



Usuni

ę

cie elementu z drzewa BST mo

ż

e zmniejszy

ć

wysoko

ść

poddrzewa (wymagana rotacja)

6

5

9

12

8

-1

0

0

0

6

9

12

8

0

-2

0

0

0

W jaki sposób zrównoważyć

otrzymane drzewo?

background image

9

Algorytmy i struktury danych

Operacje na drzewie AVL

6

9

12

8

0

-2

0

0

W jaki sposób zrównoważyć

otrzymane drzewo?

8

0

9

12

6

1

-1

0

9

0

8

12

6

-1

0

1

background image

10

Algorytmy i struktury danych

Operacje na drzewie AVL



Lewa rotacja (lub „rotacja w lewo”) w

ę

zła

y

wokół w

ę

zła

x



Polega na obrocie w

ę

zła

y

wokół wyró

ż

nionego w

ę

zła

x

przeciwnie do ruchu wskazówek zegara;



W wyniku rotacji w

ę

zeł

y

staje si

ę

nowym korzeniem

poddrzewa, w

ę

zeł

x

zostaje jego lewym nast

ę

pnikiem, a lewy

nast

ę

pnik w

ę

zła

y

zostaje prawym nast

ę

pnikiem w

ę

zła

x

;



Jej wykonanie ma sens, je

ż

eli prawy nast

ę

pnik w

ę

zła

y

nie jest

NULL;

x

y

αααα

ββββ

γγγγ

y

x

αααα

ββββ

γγγγ

Left_Rotate(x, y)

background image

11

Algorytmy i struktury danych

Operacje na drzewie AVL



Prawa rotacja (lub „rotacja w prawo”) w

ę

zła

x

wokół w

ę

zła

y

:



Polega na obrocie w

ę

zła

x

wokół wyró

ż

nionego w

ę

zła

y

zgodnie z ruchem wskazówek zegara;



W wyniku rotacji w

ę

zeł

x

staje si

ę

nowym korzeniem

poddrzewa, w

ę

zeł

y

zostaje jego prawym nast

ę

pnikiem, a

prawy nast

ę

pnik w

ę

zła

x

zostaje lewym nast

ę

pnikiem w

ę

zła

y

;



Jej wykonanie ma sens, je

ż

eli lewy syn w

ę

zła

x

nie jest NULL;

y

x

αααα

ββββ

γγγγ

x

y

αααα

ββββ

γγγγ

Right_Rotate(y, x)

background image

12

Algorytmy i struktury danych

Operacje na drzewie AVL



Rotacja:



Lewa i prawa rotacja działaj

ą

symetrycznie

x

αααα

y

γγγγ

ββββ

y

x

γγγγ

ββββ

αααα

LeftRotate(x, y)

RightRotate(y, x)

background image

13

Algorytmy i struktury danych

Operacje na drzewie AVL



Przykład – rotacja pojedyncza 7 wokół 5



Wynik: warunek AVL spełniony

3

5

4

7

6

9

2

1

8

3

5

4

7

6

9

2

1

8

C

B

A

y

x

C

B

A

y

x

-2

0

-2

-1

background image

14

Algorytmy i struktury danych

Operacje na drzewie AVL



Przykład – rotacja pojedyncza 8 wokół 5



Wynik: warunek AVL niespełniony

3

5

4

8

6

9

2

1

7

3

5

4

8

6

9

2

1

7

C

B

A

y

x

C

B

A

y

x

-2

+2

Co dalej?

-2

-2

background image

15

Algorytmy i struktury danych

Operacje na drzewie AVL

3

2

1

5

+1

-1

+2

Rotacja 2 wokół 3

2

1

3

5

0

-2

11

9

7

6

8

10

13

12

14

-1

-1

Po rotacji 9 wokół 5

5

2

7

9

0

0

13

11

10

6

8

12

14

-1

0

1

3

Co teraz?

3

2

4

1

5

+1

-1

11

9

7

6

8

10

13

12

14

-1

-1



Przykład – rotacja podwójna



Wynik: warunek AVL spełniony

background image

16

Algorytmy i struktury danych

Operacje na drzewie AVL

Wstawianie



Po wstawieniu elementu do drzewa AVL na ogół trzeba
wykona

ć

1 rotacj

ę

pojedyncz

ą

lub podwójn

ą

w celu jego

zrównowa

ż

enia;



Przypadki charakterystyczne:

1.

wstawienie w

ę

zła do prawego poddrzewa prawego nast

ę

pnika

2.

wstawienie w

ę

zła do lewego poddrzewa lewego nast

ę

pnika

3.

wstawienie w

ę

zła do lewego poddrzewa prawego nast

ę

pnika

4.

wstawienie w

ę

zła do prawego poddrzewa lewego nast

ę

pnika

background image

17

Algorytmy i struktury danych

1. Wstawienie węzła do prawego poddrzewa prawego następnika



Korekta: rotacja lewa w

ę

zła A wokół B

-2

A

B

Z

X

*

Y

*

B

A

Z

X

*

Y

0

0

h

h+1

h

h

h

h+1

-1

background image

18

Algorytmy i struktury danych

2. Wstawienie węzła do lewego poddrzewa lewego następnika



Korekta: rotacja prawa w

ę

zła A wokół B

A

B

Z

X

*

Y

+2

+1

B

A

Z

X

*

Y

0

0

*

h

h+1

h

h+1

h

h

background image

19

Algorytmy i struktury danych

3. Wstawienie węzła do lewego poddrzewa prawego następnika



Korekta: rotacja lewa w

ę

zła B wokół A i prawa w

ę

zła B wokół C

C

B

U

X

Z

0

-1

A

Y

0

A

C

U

X

Y

*

+2

-1

B

Z

+1

!

h

h

h-1

h

h

h

h

h-1

Stan po pierwszej rotacji?

background image

20

Algorytmy i struktury danych

4. Wstawienie węzła do prawego poddrzewa lewego następnika



Korekta: Rotacja prawa w

ę

zła B wokół A i lewa w

ę

zła B wokół C

C

B

U

X

Z

0

A

Y

*

0

A

C

U

X

Y

*

-2

B

Z

-1

*

+1

h

h-1

h

h

h

h

h

h-1

+1

Stan po pierwszej rotacji?

background image

21

Algorytmy i struktury danych

Równoważenie drzewa AVL po wstawieniu węzła

Wstawienie nowego węzła do lewego

poddrzewa węzła Q

-1

h

0

P

Q

h

h

-2

+1

P

Q

h

h

h+1

Przykład

-2

+1

P

Q

h

h

-1

R

h-1

h

4

Przypadek?

background image

22

Algorytmy i struktury danych

Równoważenie drzewa AVL po wstawieniu węzła

Przypadek 3: Podwójna rotacja węzła R: wokół węzła Q i wokół węzła P

P

-2

-2

R

h

h

h-1

h

0

Q

h

h

R

0

0

Q

h-1

+1

P

h

Przykład (cd.)

P

-2

+1

Q

h

h

-1

R

h-1

h

background image

23

Algorytmy i struktury danych

Operacje na drzewie AVL

Usuwanie



Po usuni

ę

ciu elementu z drzewa AVL mo

ż

e si

ę

zdarzy

ć

,

ż

e w celu jego zrównowa

ż

enia nale

ż

y wykona

ć

tyle rotacji,

ile jest poziomów w drzewie

background image

24

Algorytmy i struktury danych

Równoważenie drzewa AVL po usunięciu węzła

-1

h

-1

h-1

h

-2

h-1

-1

h-1

h

P

Q

P

Przypadek 1 (pojedyncza rotacja)

Q

Q

0

0

h-1

h

P

h-1

Przykład

background image

25

Algorytmy i struktury danych

Równoważenie drzewa AVL po usunięciu węzła

Przypadek 2 (pojedyncza rotacja)

-1

h

0

h

h

P

Q

-2

h-1

0

h

h

P

Q

Q

+1

-1

h-1

h

P

h

Przykład

background image

26

Algorytmy i struktury danych

Równoważenie drzewa AVL po usunięciu węzła

Przypadek 3 (podwójna rotacja)

-1

h

+1

P

Q

+1

R

h-1

-2

h-1

+1

P

Q

h-1

h-2

+1

R

h-1

R

0

P

Q

-1

h-2

h-1

0

h-1

h-1

Przykład

Jaka?

background image

27

Algorytmy i struktury danych

Równoważenie drzewa AVL po usunięciu węzła

h-2

h-1

Przypadek 4 (podwójna rotacja)

-1

h

+1

P

Q

-1

R

h-1

-2

h-1

+1

P

Q

-1

R

h-1

h-2

h-1

R

0

P

Q

0

h-1

+1

h-1

h-2

h-1

Przykład

Jaka?

background image

28

Algorytmy i struktury danych

Operacje na drzewie AVL

Koszt operacji usuni

ę

cia w

ę

zła z drzewa AVL



Rotacje działaj

ą

w czasie O(1) - zmieniaj

ą

si

ę

tylko warto

ś

ci wybranych

wska

ź

ników; pozostałe pola w

ę

złów nie s

ą

zmieniane;



Jaka jest minimalna liczba wierzchołków n w drzewie AVL o wysoko

ś

ci h?



Liczba rotacji wynosi zatem co najwy

ż

ej 2 lg n;



Zło

ż

ono

ść

obliczeniowa równowa

ż

enia drzewa AVL po usuni

ę

ciu w

ę

zła:

Θ

Θ

Θ

Θ

(lg n)

n

1

=1

n

h

= n

h-1

+ n

h-2

+1

Można udowodnić, że:

lg (n+1)

≤≤≤≤

h

≤≤≤≤

2 lg n

LD

PD

h

h-1

h-2

background image

29

Algorytmy i struktury danych


Wyszukiwarka

Podobne podstrony:
AiSD w7 8 Sortowanie
W7 zarządzanie zapasami
W7 Mosty
W7 IMMUNOLOGIA INFEKCJI
spoleczna w7
W7 WZNACNIACZ OPERACYJNY RZECZYWISTY
PRI W7 UML
FiR Matma w7 2011
FM zaocz W7 8 pp
Systemy Bezprzewodowe W7
IB w7
w7 kwestie spol bieda 2
AiSD Wyklad4 dzienne id 53497 Nieznany (2)

więcej podobnych podstron