1 / 28

AVL fák

AVL fák. AVL fák. Az első kiegyensúlyozott fa algoritmus Kitalálói: A delson- V elskii és L andis (1962) Tulajdonságok Bin áris rendezőfa A bal és jobb részfák magassága legfeljebb 1-gyel különbözik A részfák AVL fák. AVL fa. AVL fa.

deepak
Download Presentation

AVL fák

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. AVL fák

  2. AVL fák • Az első kiegyensúlyozott fa algoritmus • Kitalálói: Adelson-Velskii ésLandis (1962) • Tulajdonságok • Bináris rendezőfa • A bal és jobb részfák magassága legfeljebb 1-gyel különbözik • A részfák AVL fák AVL fa AVL fa

  3. Jelölje m(f) az f bináris fa magasságát (szintjeinek számát), ha x az f fa egy csúcsa; ekkor m(x) jelöli az x-gyökerű részfa magasságát. Definíció (AVL-tulajdonság):Egy bináris keresőfa AVL-fa, ha minden x csúcsára teljesül, hogy |m(bal[x]) - m(jobb[x]) |  1

  4. Mekkora a k - szintű AVL-fa minimális csúcsszáma? S1 = 1 S2 = 2 S3 = 4 S4 = 7

  5. Mekkora a k - szintű AVL-fa minimális csúcsszáma? S5=12

  6. Összefüggés az AVL-fa pontszáma és magassága között: • n adattal felépíthető fa minimális magassága?  majdnem teljes bináris fa • n adattal felépíthető fa maximális magassága? ugyanez a kérdés: az adott h szintszámú AVL-fák közül mennyi a minimális pontszám? A h szintszámú minimális csúcsszámú AVL-fa gyökerének egyik részfája h - 1, a másik h - 2 szintű; az eredeti fa minimalitása miatt pedig mindkét részfa minimális csúcsszámú.

  7. h h-2 h-1  rekurzió: Sh = 1 + Sh-1 + Sh-2

  8. AVL fák - magasság Tétel: • Egyhmagasságú AVL fának legalább Fh+3+1csúcsa van Bizonyítás: • LegyenSha legkisebbhmagasságú AVL fa mérete • Nyilván, S0= 1és S1= 2 • valamintSh = Sh-1+ Sh-2 + 1 • Indukcióval .. • Sh =Fh+3-1 („3-mal eltolt Fibonacci”) (Fh+2-1+Fh+1-1 +1=Fh+3-1)

  9. AVL fák - magasság A Fibonacci számokra igaz:

  10. nSh hnem mehet az optimális fölé 44%- kal többel

  11. AVL fák – újrakiegyensúlyozás beszúrásnál • A beszúrás elrontja az AVL tulajdonságot • 4 eset • 1 és 4 tükörképek • 2 és 3 tükörképek Egy új attribútumot vezetünk be: kiegyensúlyozási tényező -1 : bal részfa magasabb 1-gyel 0 : egyforma magasak a részfák +1: jobb részfa magasabb 1-gyel 1 2 3 4

  12. AVL fák – újrakiegyensúlyozás beszúrásnál A. A (++,+) szabály: Az új levél a  részfába került. A beszúrás előtt a fa magassága h+2 volt. + x ++ x 0 y + h y    h h h   h  h+1 beszúrás  < x<  < y< 

  13. AVL fák – újrakiegyensúlyozás beszúrásnál A. A (++,+) szabály: Az új levél a  részfába került. A beszúrás előtt a fa magassága h+2 volt. Forgatás: ++ x y + y x h    h+1 h    h h h+1 A forgatás után ismét h+2 a magasság. Ezért feljebb, a befoglaló fában (ha van), változatlanul érvényes az AVL tulajdonság, nem kell feljebb menni ellenőrizni.  < x<  < y<  Ennek a tükörképe a (--,-) szabály! (1. eset)

  14. AVL fák – újrakiegyensúlyozás beszúrásnál ++ • Példa: 15 + 10 20 - 18 3 25 - 22 30 17 21 ezt szúrtuk be

  15. AVL fák – újrakiegyensúlyozás beszúrásnál • Példa: 20 15 25 10 18 22 30 21 3 17

  16. AVL fák – újrakiegyensúlyozás beszúrásnál B. A (++,-) szabály: Az új levél a z alatti  vagy  részfába került. A beszúrás előtt a z csúcs alatti fák egyformák: + x ++ x h 0  y h -  y z 0 z  h  h   h-1 h-1   h h-1 h-1h  < x<  < z <  < y <  A beszúrás után az egyik részfa magassága h lett, a másik maradt h-1.

  17. AVL fák – újrakiegyensúlyozás beszúrásnál B. A (++,-) szabály: Dupla forgatás kell: először jobbra: ++ x ++ x h -  +  z y z  0 v.+ y h-1 v.h  h    h  h v. h-1 h h-1 h-1h  < x<  < z <  < y < 

  18. AVL fák – újrakiegyensúlyozás beszúrásnál azután balra: z x  z x y      y  

  19. AVL fák – újrakiegyensúlyozás beszúrásnál • B. A (++,-) szabály: A beszúrás előtt az x gyökerű fa magassága h+2 volt. A forgatás után ismét h+2 a magasság. Ezért feljebb, a befoglaló fában (ha van), változatlanul érvényes az AVL tulajdonság, nem kell feljebb menni ellenőrizni. Végül tehát: z x y     Ennek a tükörképe a (--,+) szabály!  < x<  < z <  < y <  továbbra is igaz

  20. AVL fák – újrakiegyensúlyozás beszúrásnál Összefoglalva: A beszúrás után az új levéltől felfelé haladva a gyökér felé újra számoljuk a csúcsok címkéit ezen az útvonalon. Ha egy x csúcs címkéje ++ vagy –-lesz, akkor az x gyökerű (rész)fa (esetleg dupla) forgatásával helyreállítható az AVL tulajdonság. Műveletigény: O(1) Tétel. Legyen S egy n csúcsból álló AVL-fa. BESZÚR(s; S) után legfeljebb egy (esetleg dupla) forgatással helyreállítható az AVL-tulajdonság. A beszúrás költsége ezzel együtt is O(log n). Bizonyítás: az előzőekből következik

  21. AVL fák – újrakiegyensúlyozás törlésnél A. A (++,+) szabály: A törlés az  részfában történt. Ennek a magassága h+1 volt és h lett. Az x gyökerű fa magassága h+3-ról h+2-re csökkent. Forgatás: ++ x y + y x h    h+1 h    h h h+1 A forgatás után h+2 a magasság. Ezért feljebb, a befoglaló fában (ha van), nem biztos, hogy változatlanul érvényes az AVL tulajdonság, feljebb kell menni ellenőrizni, amíg a gyökérig nem jutunk.  < x<  < y< 

  22. AVL fák – újrakiegyensúlyozás törlésnél B. A (++,-) szabály: A törlés az  részfában történt. Ennek a magassága h+1 volt és h lett. Az x gyökerű fa magassága h+3-ról h+2-re csökkent. A törlés előtt a z csúcs alatt fa: ++ x h - z  y   h h z  h   h h dupla forgatás  < x<  < z <  < y < 

  23. AVL fák – újrakiegyensúlyozás törlésnél • B. A (++,-) szabály: A forgatás után h+2 a magasság. Ezért feljebb, a befoglaló fában (ha van), nem biztos, hogy változatlanul érvényes az AVL tulajdonság, feljebb kell menni ellenőrizni, amíg a gyökérig nem jutunk. Végül tehát: z x y      < x<  < z <  < y <  továbbra is igaz

  24. AVL fák – újrakiegyensúlyozás törlésnél Összefoglalva: Mivel az x gyökerű fa magassága csökkent a forgatással, ezért feljebb is, ha van befoglaló fa, elromolhatott az AVL tulajdonság. A törlés után a törölt elem szülőjétől kezdve felfelé haladva a gyökér felé újra számoljuk a csúcsok címkéit ezen az útvonalon. Ha egy x csúcs címkéje ++ vagy –- lesz, akkor az x gyökerű (rész)fa (esetleg dupla) forgatásával helyreállítjuk annak AVL tulajdonságát. Ha x nem a gyökér, akkor feljebb kell lépni és folytatni kell az ellenőrzést. Szélsőséges esetben az adott útvonal minden pontjában forgatni kell! Tétel: Az n pontú AVL-fából való törlés után legfeljebb 1,44 log2 n (sima vagy dupla) forgatás helyreállítja az AVL-tulajdonságot. Bizonyítás: az előzőekből következik.

  25. Összefoglalás • AVL fák • Az első dinamikusan kiegyensúlyozott fák • A magasság az optimális 44%-án belül • Újrakiegyensúlyozás forgatásokkal • O(log n)

  26. További kiegyensúlyozott fák • Az AVL-tulajdonság csak egy a lehetséges kiegyensúlyozottsági feltételek közül. Általánosítása: Definíció: HB[k]-fák: (C. C. Foster, 1973) Legyen k ≥ 1 egy egész szám. Egy bináris keresőfa HB[k]-fa, ha minden x csúcsára teljesül, hogy |m(bal(x)) −m(jobb(x))| ≤ k. ⇒HB[1]-fák→AVL-fák

  27. Súlyra kiegyensúlyozott fák A részfák súlya legyen a csúcsszámuk: s(f). Definíció. Egy bináris keresőfát súlyra kiegyensúlyozott fának (röviden SK-fának) nevezünk, ha minden x belső csúcsára teljesül, hogy Tétel. Egy n csúcsú SK-fa mélysége ≤ 2 log2n + 1. Bizonyítás: s(x) > s(y)+s(z) > s(y)+(√2−1)s(y) = √2s(y) x y z

  28. Legyenek x1, x2, . . . , xkegy k-hosszúságú gyökértől levélig menő út csúcsai. • n = s(x1) > √2s(x2) > (√2)2s(x3) > · · ·> • (√2)k−1s(xk) = (√2)k−1 = 2(k−1)/2 •  OK

More Related