Az előadás letöltése folymat van. Kérjük, várjon

Az előadás letöltése folymat van. Kérjük, várjon

AVL fák Az első kiegyensúlyozott fa algoritmus Kitalálói: Adelson-Velskii és Landis (1962) Tulajdonságok Bináris rendezőfa A bal és jobb részfák magassága.

Hasonló előadás


Az előadások a következő témára: "AVL fák Az első kiegyensúlyozott fa algoritmus Kitalálói: Adelson-Velskii és Landis (1962) Tulajdonságok Bináris rendezőfa A bal és jobb részfák magassága."— Előadás másolata:

1

2 AVL fák Az első kiegyensúlyozott fa algoritmus Kitalálói: Adelson-Velskii és Landis (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

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? S 1 = 1 S 2 = 2 S 3 = 4 S 4 = 7

5 Mekkora a k - szintű AVL-fa minimális csúcsszáma? S 5 =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-2 h-1 h  rekurzió: S h = 1 + S h-1 + S h-2

8 AVL fák - magasság Tétel: Egy h magasságú AVL fának legalább F h+3 +1 csúcsa van Bizonyítás: Legyen S h a legkisebb h magasságú AVL fa mérete Nyilván, S 0 = 1 és S 1 = 2 valamint S h = S h-1 + S h Indukcióval.. S h = F h+3 -1 („3-mal eltolt Fibonacci”) (F h+2 -1+F h =F h+3 -1)

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

10 nShnSh h nem 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 1234

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

13 AVL fák – újrakiegyensúlyozás beszúrásnál A. A (++,+) szabály:    x y h h h  < x<  < y<  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 hh 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. Ennek a tükörképe a (--,-) szabály! (1. eset)

14 AVL fák – újrakiegyensúlyozás beszúrásnál Példa: ezt szúrtuk be

15 AVL fák – újrakiegyensúlyozás beszúrásnál Példa:

16 AVL fák – újrakiegyensúlyozás beszúrásnál B. A (++,-) szabály:  x y h h + 0  < x<  < z <  < y <  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:  z  A beszúrás után az egyik részfa magassága h lett, a másik maradt h-1.  x y h ++ -  z h-1 h  h h-1 h-1 h 0

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

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

19 AVL fák – újrakiegyensúlyozás beszúrásnál B. A (++,-) szabály:  < x<  < z <  < y <  továbbra is igaz Végül tehát:  x  y z 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. Ennek a tükörképe a (--,+) szabály!

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:    x y h h h  < x<  < y<  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 hh 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.

22 AVL fák – újrakiegyensúlyozás törlésnél B. A (++,-) szabály:  x y h h ++ -  < x<  < z <  < y <  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:  z hh  z h  h dupla forgatás

23 AVL fák – újrakiegyensúlyozás törlésnél B. A (++,-) szabály:  < x<  < z <  < y <  továbbra is igaz Végül tehát:  x  y z 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.

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 log 2 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 log 2 n + 1. Bizonyítás: s(x) > s(y)+s(z) > s(y)+(√2−1)s(y) = √2s(y) yz x

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


Letölteni ppt "AVL fák Az első kiegyensúlyozott fa algoritmus Kitalálói: Adelson-Velskii és Landis (1962) Tulajdonságok Bináris rendezőfa A bal és jobb részfák magassága."

Hasonló előadás


Google Hirdetések