alanserte søketrær VL-trær Et bnært tre er et VL-tre hvs ølgende holder: VL-trær delson-velsk og Lands, 96 play-trær leator og Tarjan, 98. orskjellen høyde mellom det høyre og det venstre deltreet er maksmalt, og. det høyre og det venstre deltreet også er VL-trær. VL-trær Et bnært tre er et VL-tre hvs ølgende holder:. orskjellen høyde mellom det høyre og det venstre deltreet er maksmalt, og. det høyre og det venstre deltreet også er VL-trær. VL-trær høyde Komplette bnære trær har lav høyde Olog n, og de leste operasjoner på trær har kjøretd proporsjonalt med høyden av treet. den høyre og venstre deltrær et VL-tre kke kan avvke høyde med mer enn, er VL-trær opplagt relatvt nær komplette. VL-trær er deror relatvt eektve. Men akkurat hvor eektve dvs. høye er VL trær? Et komplett bnært tre med n noder har log n nvåer. VL-trær med n noder har maksmalt. log n nvåer. VL VL
VL-trær høyde VL-trær høyde evset går mest elegant gjennom ved å denere høyde som antall nvåer. Teorem. evs. Et VL-tre på n noder har høyde antall nvåer maksmalt.0 log n. La h være antall noder et worst case-vl-tre av høyde h, h h - h -, 0 0,. Fbonacc-tallene er denert som F h F h - F h -, F 0 0, F. h F h 0 0 6 7 7 8 h 0 7 0 V ser at h F h -. worst case-trær F h h, er det såkalte gyldne sntt.680k. NINT, unksjonen [x] NINT er avrundng tl nærmeste heltall. evs. orts For å jerne avhenggheten av NINT-unksjonen, kan v skrve h h F h >, slk at NINT h h >. Ta nå et vlkårlg VL-tre. La n være antall noder og h høyden. a har v h n h > h n > h log n > log VL-trær høyde Høyden av et komplett bnærtre gr en nedre grense or høyden h av et VL-tre med n noder. Teoremet gr en øvre grense. log n h <.0 log n - 0.77 log n > h log log n > h log log enerer v høyden som antall nvåer, er høyden av et komplett bnærtre log n. h < 0. log n 0. 77.
Insert elete Fnd } Kan VL-trær operasjoner øre tl at balansekravet brytes rebalanserng kreves. Insert elete Fnd } Kan VL-trær operasjoner øre tl at balansekravet brytes rebalanserng kreves. Insert elete Fnd } Kan VL-trær operasjoner øre tl at balansekravet brytes rebalanserng kreves. VL-trær nsert La x være den laveste noden lengst ned treet hvor ubalanse høydeorskjell oppstår. et er re mulge tleller to og to er symmetrske venstre-høyre avhengg av om nnsettngen skjedde:. venstre deltre av venstre barn av x, VV. høyre deltre av venstre barn av x, VH. venstre deltre av høyre barn av x, HV. høyre deltre av høyre barn av x, HH I tlellene og rettes ubalansen med en enkel rotasjon, I tlellene og rettes ubalansen med en dobbel rotasjon.
VL-trær nsert enkel rotasjon VL-trær nsert enkel rotasjon 0 6 6 0 HH VL-trær nsert enkel rotasjon VL-trær nsert enkel rotasjon
VL-trær nsert enkel rotasjon VL-trær nsert dobbel rotasjon 0 6 0 6 HV VL-trær nsert dobbel rotasjon VL-trær nsert dobbel rotasjon
VL-trær nsert dobbel rotasjon VL-trær nsert dobbel rotasjon VL-trær nsert VL-trær delete enkel rotasjon Etter rotasjonen enkel eller dobbel er høyden av det berørte deltreet den samme som ør nsert.
VL-trær delete enkel rotasjon VL-trær delete dobbel rotasjon - VL-trær delete VL-trær eektvtet Når v rebalanserer et deltre etter slettng, kan deltreet bl or lavt, slk at det blr ubalanse høyere opp treet. Hele veen opp tl roten av treet log n nvåer må v sjekke or ubalanse, og evt. rebalansere. Et VL-tre med n noder har høyde h antall nvåer mellom log n og. log n Operasjonene nsert, delete, nd har kjøretd Oh.
emo play-trær http://webpages.ull.es/users/jrera/ocenca/vl/vl%0tree%0applet.htm play-trær er bnære trær, med speselle oppdaterngs- og aksesserngsregler som gjør at treet over td er eektvt å søke. et er kke noe eksplstt balansekrav, men treet tlpasser seg operasjonene som gjøres. Nylg aksesserte noder lyttes høyt opp treet. En sekvens av m operasjoner på ntelt tomt tre tar td Om log n. V ser at amortsert kostnad per operasjon er Olog n. Ltt svakere enn å garantere at hver operasjon tar td Olog n, men over td lke bra. Ingen sekvens av operasjoner på treet er dårlg. play-trær play-trær I vanlge bnære trær kan v ha lange sekvenser av operasjoner som alle tar On IKKE! Med splay-trær har v ortsatt worst case td On or operasjonene, men en garant or at en vlkårlg sekvens av m operasjoner kke tar mer td enn Om log n! Innmellom kan v godta at noen operasjoner på play-treet tar td On Men or kke ote. Og v må ha gjort nok bllge operasjoner orkant tl at det veer opp. Hvs en operasjon.eks nd på en verd kan ta td On, så må opplagt denne operasjonen modsere treet. Ellers kunne v bare utørt denne operasjonen m ganger og brukt td Omn. runntanken bak splay-trær er at noder som aksesseres lyttes opp tl roten med VL-aktge modkasjoner. Noder som kan lgge langt nede treet lyttes helt opp tl roten, og drar da med seg andre noder oppover. V unngår å dytte andre noder lke langt ned. Flyttngen har altså en balanserende eekt. Ote slk at en nylg aksessert node aksesseres gjen.
play-trær splayng zg play-trær splayng zgzag play-trær splayng zgzg play-trær eksempel E F
play-trær eksempel play-trær eksempel E F E F play-trær operasjoner Insert øk nedover treet tl noden x som skal å nytt barn nnes. play x. x blr rot. ett nn det nye elementet som ny rot, mellom x og x stt venstre eller høyre barn avhengg av om elementet som settes nn er større eller mndre. Fnd øk nedover treet or å se om noden x med verden nnes. play x. elete øk nedover treet tl noden x som slettes nnes. play x. x blr rot. lett x. Treet deles to. Fnn største node venstre deltre v, og splay denne. v blr rot det venstre treet og har bare venstre barn. Koble det høyre deltreet på som v stt høyre barn. play trær amortsert td mortsert kjøretd or operasjoner på et splay-tre er Olog n. ltså: m operasjoner tar td Om log n, uansett hvlke m operasjoner det er. V bruker den såkalte potensalmetoden. Tenk på det som en bankkonto du kan sette nn penger på og ta penger ut av. jør v en bllg operasjon, øker v potensalet tlsvarende, slk at v har penger på konto tl å gjøre dyre operasjoner senere. jør v en dyr operasjon, må v ta penger ra kontoen. Overtrekker v kontoen, har v tapt. a er det en sekvens av m operasjoner som bruker or lang td.
play trær amortsert td play trær amortsert td otensalunksjonen v skal bruke or et tre T er Φ T log T antall etterkommere av, medregnet. Lemma. Hvs a b c og a og b er postve heltall, så er log a log b log c -. For å orenkle ltt skrver v log lk at Φ T. T evs. a b ab c ab c ab c log ab log log a log b log c, ølger av gjennomsnttsteoremet a b 0 a ab b 0 a ab b ab a b ab a b ab a b ab play trær amortsert td evs. orts. Teorem. evs. mortsert td or å splaye en node et tre med rot T er maksmalt T- Olog n Hvs er rotnoden, er det ngen rotasjoner, aksesserng tar td, og teoremet holder. V antar deror at det gjøres mnst en rotasjon når v splayer. La og være verdene ør splay-steget, og la x og være verdene etter steget. V ser på operasjonene zg, zgzag og zgzg hver or seg. Tdsorbruk: or den ene rotasjonen Endrng potensal: zg zg zg zg
zgzag evs. orts. Tdsorbruk: dobbel rotasjonen Endrng potensal: Lemma zgzag zgzag zgzag zgzag zgzag zgzag zgzg evs. orts. Tdsorbruk: dobbel rotasjonen Endrng potensal: zgzg zgzg zgzg zgzg zgzg zgzg En lten sdebemerknng or å vse - - log log log x log y, x,y> 0 og x y < har maksmal verd på - når x y /, se gur.. ergo er, log log altså har V 0 0. 0. 0.7 0 0. 0. 0.7-0 -8-6 - - 0 0. 0. 0.7 Tl slutt ser v på en sere av m rotasjoner, bare den sste kan være zg: evs. orts.. log log log log samme som dette det er slutt, tl rot den blr n O n n T m m m M