+ All Categories
Home > Documents > Splay tree

Splay tree

Date post: 01-Jan-2016
Category:
Upload: salvador-spencer
View: 42 times
Download: 0 times
Share this document with a friend
Description:
Splay tree. 1.Seminarska naloga. Splay tree. Lomljena drevesa so dvojiška iskalna drevesa, ki se spremenijo (lomijo) ob vsakem posegu v drevo. To je pri iskanju elementa v drevesu, vstavljanju elementa v drevo in pri brisanju elementa iz drevesa. - PowerPoint PPT Presentation
24
Splay tree 1.Seminarska naloga
Transcript
Page 1: Splay tree

Splay tree

1.Seminarska naloga

Page 2: Splay tree

Splay tree

• Lomljena drevesa so dvojiška iskalna drevesa, ki se spremenijo (lomijo) ob vsakem posegu v drevo.

• To je pri iskanju elementa v drevesu, vstavljanju elementa v drevo in pri brisanju elementa iz drevesa.

• Lomljenje drevesa trenutni element premakne proti korenu drevesa oziroma v koren drevesa.

• Za lomljenje drevesa uporabljamo rotacije.

Page 3: Splay tree

Rotacije• Lomljenje drevesa premakne z rotacijo dani

element v koren drevesa. Rotacija je postopek, ki zamenja vlogo sinov in očeta v iskalnem dvojiškem drevesu. Preoblikovano drevo je ravno tako iskalno dvojiško drevo.

• Odvisno od primera uporabljamo enojne in dvojne rotacije. Dvojna rotacija je kombinacija dveh enojnih.

• Rotacije so lahko leve ali desne. • Pri lomljenju lahko nastopijo štirje primeri:

Page 4: Splay tree

1.Kadar je iskani element X v korenu drevesa, rotacija ni potrebna.

Page 5: Splay tree

OČE

X

Cpoddrevo

Apoddrevo

Bpoddrevo

X

Apoddrevo

OČE

Bpoddrevo

Cpoddrevo

Desna rotacija

2.Kadar je oče vozlišča z elementom koren drevesa, uporabimo enojno rotacijo. -Do desne rotacije pride, če je iskani element X levi sin.

Page 6: Splay tree

-Do leve rotacije pride, če je iskani element X desni sin. Leva rotacija je zrcalna desni.

OČE

Apoddrevo

X

Cpoddrevo

Bpoddrevo

X

OČE

Cpoddrevo

Apoddrevo

Bpoddrevo

Leva rotacija

Page 7: Splay tree

3.Kadar sta vozlišče z obravnavanim elementom in oče oba leva ali oba desna sinova svojih očetov uporabimo dvojno rotacijo.-Desno-desno rotacijo uporabimo, če sta oba leva sinova.

Page 8: Splay tree

OČE OČETA

OČE

Dpoddrevo

X

Cpoddrevo

Apoddrevo

Bpoddrevo

OČE

X

OČEOČETA

Apoddrevo

Bpoddrevo

Cpoddrevo

Dpoddrevo

1.desna rotacija 2.desna rotacija

Page 9: Splay tree

X

Apoddrevo

OČE

Bpoddrevo

OČE OČETA

Cpoddrevo

Dpoddrevo

2.desna rotacija

-Levo-levo rotacijo uporabimo, če sta oba sinova desna. Levo-leva rotacija je zrcalna slika desno desne rotacije.

Page 10: Splay tree

4. Kadar je vozlišče z obravnavanim elementom na nasprotni strani očeta, kot oče glede na svojega očeta uporabimo dvojno rotacijo. Če je vozlišče z obravnavanim elementom desni sin, njegov oče pa levi sin, je to levo-desna rotacija.

Page 11: Splay tree

Očeočeta

oče

Poddrevod

Poddrevoa

X

Poddrevob

Poddrevoc

Očeočeta

X

Poddrevod

oče

Poddrevoc

Poddrevoa

Poddrevob

1.leva rotacija

x

oče

Očeočeta

Poddrevoa

Poddrevob

Poddrevoc

Poddrevod

2.desna rotacija

Page 12: Splay tree

Če je vozlišče z obravnavanim elementom levi sin, njegov oče pa desni sin, uporabimo desno-levo rotacijo. Ta je zrcalna slika levo-desne rotacije.

Rotacije in lomljenje drevesa so samo pomožne metode, ki jih potrebujemo uspešno izpeljavo pravih operacij, ki so vstavljanje elementa, iskanje elementa v drevesu in brisanje elementa iz drevesa.

Page 13: Splay tree

Vstavljene elementa v drevo

• Pri vstavljanju elementa v drevo ločimo tri primere:

• 1)Drevo je prazno – element vstavimo v koren drevesa in postopek je končan

• 2)Če drevo ni prazno in v drevesu ni enakega elementa, kot ga vstavljamo, pridemo do lista drevesa. Takrat naredimo novo vozlišče in ga povežemo v drevo. Nato drevo lomimo in novo vozlišče z elementom, ki ga vstavljamo premaknemo v koren drevesa.

Page 14: Splay tree

• 3)Element, ki ga vstavljamo, je enak elementu v drevesu. Zato postopek vstavljanja končamo.Sledi lomljenje drevesa s katerim vozlišče z elementom, ki je enak elementu, ki smo ga želeli vstaviti premaknemo v koren drevesa.

Page 15: Splay tree

Zgled:V prazno lomljeno drevo zaporedno vstavimo elemente: 16, 2, 5, 11, 30, 17, 11 in 22.Vstavimo 16 in nato 2.Vozlišče z elementom 2 moramo vstaviti v levo poddrevo, ker je 2 < 16. Nato uporabimo desno rotacijo.

16

2

2

16

Page 16: Splay tree

Zaporedno vstavljamo elemente 5, 11, 30, 17, 11 v iskalno dvojiško drevo in drevo lomimo.Dobimo :

11

5

16

2

17

30

Page 17: Splay tree

Vstavimo še zadnji element 22. Ker je 22>11 vstavimo v desno poddrevo. Ker je 22>16 vstavimo v desno poddrevo. Tretja primerjava pove, da gremo spet v desno 22>17, nato pa gremo v levo, ker je 22<30. Zarotiramo najprej v desno in nato 3x v levo

11

5

16

2

17

30

22

11

5

16

2

17

22

30

Page 18: Splay tree

11

5

16

2

22

17

30

16

11

22

5

2

17

30

22

11

30

5

2

17

Page 19: Splay tree

Iskanje elementa v drevesu

• Pri iskanju elementa se sprehodimo po drevesu in pri tem v vsakem vozlišču primerjamo vrednost iskanega elementa z vrednostjo elementa v vozlišču drevesa.

• Pri iskanju elementa v drevesu ločimo tri primere:• 1. Drevo je prazno• 2.V drevesu smo našli vozlišče z iskanim elementom. Z

zaporedjem rotacij premaknemo najdeno• vozlišče v koren drevesa.• 3.Iskanega elementa ni v drevesu. Z zaporedjem rotacij

v koren premaknemo zadnje vozlišče na poti iskanja.

Page 20: Splay tree

Brisanje elementa iz drevesa

• Pri brisanju elementa iz drevesa, najprej poiščemo vozlišče z vrednostjo, ki jo želimo brisati iz drevesa. Nato drevo lomimo - z zaporedjem rotacij, vozlišče s tem elementom postane koren drevesa. Nato ta element po določenih postopkih odstranimo iz drevesa.

Page 21: Splay tree

Zgled:Dano imamo dvojiško iskalno drevo.Iz drevesa izbrišimo element 16.

4

3

7

2

6

16

Page 22: Splay tree

Element 16 najprej poiščemo. Ker je večji od vrednosti 5 v korenu drevesa, nadaljujemo z iskanjem v desnem poddrevesu. Tu imamo v vozlišču vrednost 7. Ker je element 16 večji od vrednosti 7, nadaljujemo iskanje v desnem poddrevesu. Tu najdemo vrednost 16 in iskanje je končano. Sledi lomljenje drevesa, pri katerem vozlišče z iskano vrednostjo premaknemo v koren drevesa.  

Page 23: Splay tree

Vozlišče z iskano vrednostjo je desni sin, ravno tako njegov oče, zato uporabimo levo-levo rotacijo.

4

3

7

2

6

16

4

7

16

3

6

2

7

16

4

3

6

2

Page 24: Splay tree

VIRI IN LITERATURA

• S. Butalič, Lomljeno drevo, Diplomska naloga, Fakulteta za matematiko in fiziko, 2006, Ljubljana

• B. Gril, Lomljena drevesa, Seminarska naloga, Fakulteta za matematiko in fiziko, 2009, Jesenice

• http://wiki.fmf.uni-lj.si/wiki/Lomljeno_drevo• http://lcm.csa.iisc.ernet.in/dsa/node93.html• http://en.wikipedia.org/wiki/Splay_tree


Recommended