240 likes | 372 Views
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.
E N D
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. • Lomljenje drevesa trenutni element premakne proti korenu drevesa oziroma v koren drevesa. • Za lomljenje drevesa uporabljamo rotacije.
Rotacije • Lomljenjedrevesapremakne z rotacijodani element v korendrevesa. Rotacija je postopek, kizamenjavlogosinov in očeta v iskalnemdvojiškemdrevesu. Preoblikovanodrevo je ravnotakoiskalnodvojiškodrevo. • Odvisnoodprimerauporabljamoenojne in dvojnerotacije. Dvojnarotacija je kombinacijadvehenojnih. • Rotacije so lahkolevealidesne. • Pri lomljenju lahko nastopijo štirje primeri:
1.Kadar je iskani element X v korenu drevesa, rotacija ni potrebna.
2.Kadar je očevozlišča z elementomkorendrevesa, uporabimoenojnorotacijo. -Do desnerotacije pride, če je iskani element X levi sin.
-Do leverotacije pride, če je iskani element X desni sin. Levarotacija je zrcalnadesni.
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.
-Levo-levo rotacijo uporabimo, če sta oba sinova desna. Levo-leva rotacija je zrcalna slika desno desne rotacije.
4. Kadar je vozlišče z obravnavanim elementom na nasprotni strani očeta, kot oče glede na svojega očeta uporabimodvojnorotacijo. Če je vozlišče z obravnavanimelementomdesni sin, njegovoče pa levi sin, je to levo-desnarotacija.
Če je vozlišče z obravnavanimelementomlevi sin, njegovoče pa desni sin, uporabimodesno-levorotacijo. Ta je zrcalnaslikalevo-desnerotacije. Rotacije in lomljenjedrevesaso samopomožnemetode, kijihpotrebujemouspešnoizpeljavopravihoperacij, ki so vstavljanje elementa, iskanje elementa v drevesu in brisanje elementa iz drevesa.
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.
3)Element, kigavstavljamo, je enakelementu v drevesu. Zatopostopekvstavljanjakončamo. Sledilomljenjedrevesa s katerimvozlišče z elementom, ki je enakelementu, kismogaželelivstavitipremaknemo v korendrevesa.
Zgled: V praznolomljenodrevozaporednovstavimoelemente: 16, 2, 5, 11, 30, 17, 11 in 22. Vstavimo 16 in nato 2. Vozlišče z elementom 2 moramovstaviti v levopoddrevo, ker je 2 < 16. Nato uporabimo desno rotacijo.
Zaporedno vstavljamo elemente 5, 11, 30, 17, 11 v iskalno dvojiško drevo in drevo lomimo. Dobimo :
Vstavimošezadnji 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
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.
Brisanjeelementaizdrevesa • Pribrisanjuelementaizdrevesa, najprejpoiščemovozlišče z vrednostjo, kijoželimobrisatiizdrevesa. Natodrevolomimo - z zaporedjemrotacij, vozlišče s tem elementompostanekorendrevesa. Natota element podoločenihpostopkihodstranimoizdrevesa.
Zgled: Danoimamodvojiškoiskalnodrevo. Izdrevesaizbrišimo element 16.
Element 16 najprejpoiščemo. Ker je večjiodvrednosti 5 v korenudrevesa, nadaljujemo z iskanjem v desnempoddrevesu. Tuimamo v vozliščuvrednost 7. Ker je element 16 večjiodvrednosti 7, nadaljujemoiskanje v desnempoddrevesu. Tunajdemovrednost 16 in iskanje je končano. Sledilomljenjedrevesa, prikateremvozlišče z iskanovrednostjopremaknemo v korendrevesa.
Vozlišče z iskanovrednostjo je desni sin, ravnotakonjegovoče, zatouporabimolevo-levorotacijo.
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