AiSD W10

background image

Algorytmy i struktury danych

Temat: Metody równowa

ż

enia drzew BST

background image

2

Algorytmy i struktury danych

Techniki równoważenia drzew BST

K

B

P

R

M

D

B

M

K

P

R

D

Różne drzewa BST zawierające te same dane

a)

b)

c)

B

M

D

K

R

P

background image

3

Algorytmy i struktury danych

Techniki równoważenia drzew BST

Ile maksymalnie w

ę

złów mo

ż

e mie

ć

drzewo binarne w zale

ż

no

ś

ci

od wysoko

ś

ci h?

...

...

...

n= 2

h

-1

2

h-1

h

...

...

...

16383= 2

14

-1

2

13

=8192

14

...

2047= 2

11

-1

2

10

=1024

11

...

...

...

15= 2

4

-1

2

3

=8

4

7= 2

3

-1

2

2

=4

3

3= 2

2

-1

2

1

=2

2

1= 2

1

-1

2

0

=1

1

W

ę

złów

w drzewie

W

ę

złów na

poziomie h

Wysoko

ść

dla np. n=10 000

 

14

3

,

13

10001

log

)

1

(

log

2

2

=

=

=

=

+

n

h

background image

4

Algorytmy i struktury danych

Techniki równoważenia drzew BST

Sposoby równowa

ż

enia drzewa BST:

1.

Uporz

ą

dkowanie danych przed tworzeniem drzewa

(wybór na korze

ń

elementu ze

ś

rodka listy danych)

2.

Stałe poprawianie drzewa w miar

ę

wstawiania w

ę

złów

(np. z wykorzystaniem rotacji; przykład: drzewa AVL,
drzewa czerwono-czarne))

background image

5

Algorytmy i struktury danych

Techniki równoważenia drzew BST

Tworzenie drzewa po uprzednim posortowaniu jego
elementów:



przed utworzeniem drzewa dane porz

ą

dkowane s

ą

w tablicy;



na korze

ń

drzewa wybierany jest element bliski warto

ś

ci

ś

rodkowej; element ten wyznacza podział tablicy na lew

ą

i praw

ą

podtablic

ę

;



lewy nast

ę

pnik korzenia:

ś

rodek lewej podtablicy;

prawy nast

ę

pnik korzenia:

ś

rodek prawej podtablicy;



otrzymane drzewo jest dobrze zrównowa

ż

one

( liczba elementów na drodze od korzenia do dowolnego
li

ś

cia jest rz

ę

du log

2

n );

background image

6

Algorytmy i struktury danych

Techniki równoważenia drzew BST

Tworzenie drzewa po uprzednim posortowaniu jego
elementów (idea algorytmu):

void balance(T data[ ], int first, int last) {

if (first<=last) {

int mid=(first+last)/2;
insert(data[mid]);
balance(data, first, mid-1);
balance(data, mid+1, last);

}

}

background image

7

Algorytmy i struktury danych

Techniki równoważenia drzew BST

Przykład u

ż

ycia funkcji balance

9

8

7

6

5

4

3

2

1

0

Strumie

ń

uporz

ą

dkowany

6

4

3

2

0

7

8

9

1

5

Strumie

ń

danych

9

8

7

6

5

4

3

2

1

0

9

8

7

6

5

4

3

2

1

0

9

8

7

6

5

4

3

2

1

0

9

8

7

6

5

4

3

2

1

0

4

1

7

8

5

2

0

3

6

9

background image

8

Algorytmy i struktury danych

Techniki równoważenia drzew BST

Metoda poprawiania struktury drzewa:



Zasadnicza wada poprzedniej metody: przed utworzeniem
drzewa dane nale

ż

ało posortowa

ć

;



Inny sposób (bez sortowania): rozło

ż

y

ć

niezrównowa

ż

one

drzewo i zło

ż

y

ć

je ponownie;



Stosunkowo efektywny mo

ż

e okaza

ć

si

ę

algorytm DSW

(C.

D

ay, Q.

S

tout, B.

W

arren):

1)

przekształcenie drzewa w winoro

ś

l;

2)

przekształcenie winoro

ś

li w drzewo zrównowa

ż

one

(z wykorzystaniem rotacji).

background image

9

Algorytmy i struktury danych

Techniki równoważenia drzew BST

Przekształcenie drzewa w winoro

ś

l:

UtwórzWinoro

ś

l (root, n ) {

tmp=root;
while ( tmp != 0 )

if ( tmp ma lewy nast

ę

pnik) {

obró

ć

lewy nast

ę

pnik w prawo wokół tmp;

ustaw tmp na nast

ę

pnik, który stał si

ę

poprzednikiem;

}

else

ustaw tmp na jego prawy nast

ę

pnik;

}

background image

10

Algorytmy i struktury danych

Techniki równoważenia drzew BST

Przykład przekształcenia drzewa w winoro

ś

l

5

10

20

30

40

15

25

28

23

tmp

5

10

20

30

40

15

25

28

23

tmp

5

10

20

15

tmp

30

40

28

23

25

5

10

20

15

tmp

30

40

28

25

23

5

10

20

15

tmp

28

40

25

23

30

background image

11

Algorytmy i struktury danych

Techniki równoważenia drzew BST

Zło

ż

ono

ść

tworzenia winoro

ś

li



Przypadek optymistyczny (drzewo jest ju

ż

winoro

ś

l

ą

):

p

ę

tla while wykonuje si

ę

n razy, nie s

ą

wykonywane

ż

adne

rotacje (tylko n instrukcji podstawienia); zatem T(n)=O(n)



Przypadek pesymistyczny (korze

ń

nie ma prawego nast

ę

pnika):

p

ę

tla while wykonuje si

ę

2n – 1 razy, w tym wykonywanych jest

n – 1 rotacji; zatem: T(n)=O(n)

Pokaż algorytm

background image

12

Algorytmy i struktury danych

Techniki równoważenia drzew BST

Tworzenie drzewa zrównowa

ż

onego

UtwórzDrzewoZrównowa

ż

one( n ) {

wykonaj n-m rotacji w lewo, zaczynaj

ą

c od prawego nast

ę

pnika

korzenia winoro

ś

li;

while (m>1) {

m =

m/2

;

wykonaj m rotacji w lewo, zaczynaj

ą

c od prawego nast

ę

pnika

korzenia winoro

ś

li;

}

}

;

1

2

m

)

1

n

(

log

2

=

+

background image

13

Algorytmy i struktury danych

Techniki równoważenia drzew BST

Przykład tworzenia drzewa zrównowa

ż

onego

40

5

15

28

25

23

30

10

20

5

15

10

28

23

20

40

25

30

30

10

15

20

28

23

25

40

5

winorośl: n=9
m=2

3

-1=7

n-m=9-7=2

40

20

23

25

28

10

5

15

30

drzewo zrównoważone

background image

14

Algorytmy i struktury danych

Zło

ż

ono

ść

przekształcania winoro

ś

li w drzewo

zrównowa

ż

one



Liczba rotacji w ramach p

ę

tli while:



Ł

ą

czna liczba rotacji:

)

1

n

(

log

n

)

1

2

(

1

3

7

15

...

)

1

2

(

1

)

1

n

(

log

1

i

2

i

1

)

1

n

(

log

2

2

+

=

+

+

=

=

=

+

+

+

+

+

)

1

n

(

log

m

n

2

)

)

1

n

(

log

n

(

m

n

2

2

+

=

=

+

+

T(n)=O(n)

1

q

1

q

a

S

n

1

n

=

Pokaż algorytm

background image

15

Algorytmy i struktury danych

Techniki równoważenia drzew BST

Zło

ż

ono

ść

równowa

ż

enia drzewa

T(n) = max { O(n), O(n) } = O(n)

1.

Przekształcenie drzewa niezrównowa

ż

onego w winoro

ś

l: O(n)

2.

Przekształcenie winoro

ś

li w drzewo zrównowa

ż

one: O(n)

background image

16

Algorytmy i struktury danych

Techniki równoważenia drzew BST

Metoda poprawiania drzewa w miar

ę

wstawiania

w

ę

złów

Idea: elementy (dane), które wykorzystywane s

ą

najcz

ęś

ciej

przesuwane s

ą

w gór

ę

drzewa (blisko korzenia)

1. Drzewa samonaprawiaj

ą

ce si

ę

2. Ukosowanie (ang. splaying) drzewa

background image

17

Algorytmy i struktury danych

Techniki równoważenia drzew BST

Drzewa samonaprawiaj

ą

ce si

ę

Idea:

Przy si

ę

ganiu do elementu nast

ę

puje korekta struktury drzewa

poprzez:

a) pojedyncz

ą

rotacj

ę

(wokół poprzednika)

b) przesuni

ę

cie elementu do korzenia

background image

18

Algorytmy i struktury danych

Rotacja



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 synem, a lewy syn

w

ę

zła

y

zostaje prawym synem w

ę

zła

x

;



Mo

ż

na j

ą

wykona

ć

, je

ż

eli prawy syn w

ę

zła

y

nie jest NULL;

x

α

y

γ

β

y

x

γ

β

α

background image

19

Algorytmy i struktury danych

Rotacja



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 synem, a prawy syn

w

ę

zła

x

zostaje lewym synem w

ę

zła

y

;



Mo

ż

na j

ą

wykona

ć

, je

ż

eli lewy syn w

ę

zła

x

nie jest NULL;

x

α

y

γ

β

y

x

γ

β

α

background image

20

Algorytmy i struktury danych

Techniki równoważenia drzew BST

Ilustracja idei: si

ę

gni

ę

cie do w

ę

zła D

P

F

E

D

A

H

Q

a) rotacja w prawo w

ę

zła D

P

D

A

F

H

E

Q

background image

21

Algorytmy i struktury danych

Techniki równoważenia drzew BST

Ilustracja idei: si

ę

gni

ę

cie do w

ę

zła R

b) przesuni

ę

cie w

ę

zła D do korzenia

(metod

ą

podwójnej rotacji w prawo)

D

A

Q

F

H

E

P

P

F

E

D

A

H

Q

P

D

A

F

H

E

Q

background image

22

Algorytmy i struktury danych

Techniki równoważenia drzew BST

Ukosowanie (1985)



Jest to modyfikacja strategii naprawiania drzewa poprzez
przenoszenie do korzenia.



Korekta

struktury

drzewa

nast

ę

puje

poprzez

stosowanie

pojedynczych rotacji parami, w kolejno

ś

ci zale

ż

nej od powi

ą

zania

dziecka, rodzica i rodzica rodzica.



Wyró

ż

nia si

ę

trzy przypadki (dost

ę

p do w

ę

zła R, którego rodzicem

jest Q, którego z kolei rodzicem jest P:

1.

Rodzic Q w

ę

zła R jest korzeniem.

2.

Układ jednorodny: w

ę

zeł R jest lewym dzieckiem Q, za

ś

Q

jest lewym dzieckiem P (lub kiedy w obu relacjach chodzi
o prawe dziecko).

3.

Układ niejednorodny: w

ę

zeł R jest lewym dzieckiem Q, za

ś

Q jest prawym dzieckiem P (lub kiedy R jest prawym
dzieckiem, natomiast Q lewym).

background image

23

Algorytmy i struktury danych

Techniki równoważenia drzew BST

Ukosowanie – przykład (po si

ę

gni

ę

ciu do w

ę

zła B)

Przypadek 1. Rodzic węzła B jest korzeniem

(rotacja w prawo węzła B)

Q

B

A

C

R

B

A

R

C

Q

background image

24

Algorytmy i struktury danych

Techniki równoważenia drzew BST

Ukosowanie – przykład (po si

ę

gni

ę

ciu do w

ę

zła F)

Przypadek 2. Układ jednorodny
(rotacja w prawo węzła K oraz rotacja w prawo węzła F)

F

A

Q

L

K

P

G

P

K

F

L

Q

G

A

K

F

G

A

P

Q

L

background image

25

Algorytmy i struktury danych

Techniki równoważenia drzew BST

Ukosowanie – przykład (po si

ę

gni

ę

ciu do w

ę

zła N)

Przypadek 2. Układ niejednorodny
(rotacja w lewo węzła N oraz rotacja w prawo węzła N)

P

K

A

N

Q

O

M

P

N

K

O

Q

M

A

N

K

M

A

P

Q

O

background image

26

Algorytmy i struktury danych

Techniki równoważenia drzew BST

Idea algorytmu ukosowania
(przenoszenia w

ę

zła do korzenia)

Ukosowanie ( P, Q, R ) {

while (R nie jest korzeniem)

if (rodzic R jest korzeniem)

wykonaj pojedyncze ukosowanie: rotacj

ę

R wokół jego

rodzica;

else

if (R jest ze swoimi przodkami w układzie jednorodnym)

wykonaj ukosowanie jednorodne: najpierw rotuj Q
wokół P, potem R wokół Q;

else

// R jest ze swoimi przodkami w układzie niejednorodnym

wykonaj ukosowanie niejednorodne: najpierw rotuj R
wokół Q, potem R wokół P;

}

background image

27

Algorytmy i struktury danych

Techniki równoważenia drzew BST

Przykład ukosowania (po dost

ę

pie do w

ę

zła E)

P

N

K

O

E

L

I

A

Q

J

F

P

N

E

O

I

A

Q

F

J

K

L

E

A

P

I

N

F

J

K

L

Q

O

Stan po pierwszej parze rotacji

Stan po drugiej parze rotacji

background image

28

Algorytmy i struktury danych

Techniki równoważenia drzew BST

Przykład ukosowania c.d. (dost

ę

p do w

ę

zła K)

K

E

N

A

I

Q

O

F

J

L

P

E

A

P

I

N

F

J

K

L

Q

O

background image

Algorytmy i struktury danych

Temat:

Zastosowania drzew binarnych



Drzewa wyra

ż

e

ń

arytmetycznych

background image

30

Algorytmy i struktury danych

Binarne drzewa wyrażeń



Jednym z zastosowa

ń

drzew binarnych jest jednoznaczny

zapis wyra

ż

e

ń

arytmetycznych lub logicznych (bez u

ż

ywania

nawiasów);



Drzewa wyra

ż

e

ń

konstruuje si

ę

, wykorzystuj

ą

c nast

ę

puj

ą

ce

zało

ż

enia:



ka

ż

dy li

ść

zawiera operand (argument) wyra

ż

enia;



ka

ż

dy w

ę

zeł wewn

ę

trzny zawiera operator np.: *, /, +, - itp.;



wyra

ż

enie powstaje w wyniku realizacji procedury

przechodzenia drzewa jedn

ą

z trzech metod:



bezpo

ś

redniej (inorder),



z wyprzedzeniem (preorder),



z opó

ź

nieniem (postorder).

background image

31

Algorytmy i struktury danych

Przykład drzewa wyrażeń

+

5

2

*

3

4

Wynik przej

ś

cia drzewa metod

ą

:



bezpo

ś

redni

ą

(inorder):

2 – 3 * 4 + 5



z wyprzedzeniem (preorder):

+ – 2 * 3 4 5



z opó

ź

nieniem (postorder):

2 3 4 * – 5 +

Binarne drzewa wyrażeń

= -5

= -5

= -5

background image

32

Algorytmy i struktury danych

Mnemotechniczna metoda przechodzenia drzewa:



wyruszamy z korzenia, okrążając drzewo w kierunku
przeciwnym do ruchu wskazówek zegara;



staramy się być jak najbliżej mijanych węzłów (niektóre węzły
odwiedzamy wielokrotnie);



chcą otrzymać listę węzłów odpowiadającą kolejności:



preorder, należy wypisywać każdy węzeł przy pierwszym jego

odwiedzeniu;



postorder, należy wypisywać każdy węzeł przy ostatnim jego
odwiedzeniu;



inorder, należy wypisywać każdy węzeł przy pierwszym jego
odwiedzeniu jeżeli jest liściem, natomiast przy drugim
odwiedzeniu, jeżeli jest węzłem wewnętrznym.

Binarne drzewa wyrażeń

background image

33

Algorytmy i struktury danych

Mnemotechniczna metoda przechodzenia drzewa:

Binarne drzewa wyrażeń

+

5

2

*

3

4

Wynik przej

ś

cia drzewa:

+ – 2 – * 3 * 4 * – + 5 +

 Kolejność preorder:

+

2 * 3 4 5

 Kolejność postorder:

2 3 4 * – 5 +

 Kolejność inorder:

2 – 3 * 4 + 5

UWAGA

Niezależnie od metody każdy liść odwiedzany jest dokładnie jeden raz
(i w tej samej kolejności)

background image

34

Algorytmy i struktury danych

Binarne drzewa wyrażeń

Z uwagi na sposób przechodzenia drzewa wyróżniamy notację wyrażeń:

 przedrostkową (prefiksową), np.

+

2 * 3 4 5

 wzrostkową (infiksową), np.

2 – 3 * 4 + 5

 przyrostkową (postfiksową), znanej jako notacja polska odwrotna,

np.

2 3 4 * – 5 +

background image

35

Algorytmy i struktury danych

Przykłady drzew wyrażeń

Zapis wyra

ż

enia metod

ą

:



wzrostkow

ą

(inorder):

Binarne drzewa wyrażeń

*

+

2

3

4

5



przedrostkow

ą

(preorder):



przyrostkow

ą

(postorder):

2 – 3 * 4 + 5

2 3 – 4 5 + *

* – 2 3 + 4 5

= -9

= -9

= -9

background image

36

Algorytmy i struktury danych

Przykłady drzew wyrażeń

Zapis wyra

ż

enia metod

ą

:



wzrostkow

ą

(inorder):

Binarne drzewa wyrażeń

2

+

3

4

*

5



przedrostkow

ą

(preorder):



przyrostkow

ą

(postorder):

2 – 3 * 4 + 5

2 3 4 * 5 + –

– 2 + * 3 4 5

= -15

= -15

= -15

background image

37

Algorytmy i struktury danych


Wyszukiwarka

Podobne podstrony:
spoleczna w10
W10
W10 Przetw A Cmin
W10
Filozofia W10 Etyka Zagadnienie norm lepsza wersja2 0bezKanta
W10 Ja Spoleczne
W10 Wpływ różnych metod obróbki wstępnej mięsa
epi w10 zasady dekontaminacji malych i duzych powierzchni
AiSD Wyklad4 dzienne id 53497 Nieznany (2)
choroszy, W10- mechaniczny
Zagad NE09, Politechnika Wrocławska, PWR - W10- Automatyka i Robotyka, Sem3, Elektro, Podstawy elekt
w10, finanse i zarzadzanie
TRB W10 11 12 02 montaż?
W10
aisd
Oe i To1 w10

więcej podobnych podstron