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.

Hasonló előadás


Az előadások a következő témára: "AVL fák."— Előadás másolata:

1 AVL fák

2 AVL fák Az első kiegyensúlyozott fa algoritmus AVL fa AVL fa
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 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 = S3 = S4 = 7

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

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: Bizonyítás: Sh = Fh+3-1
Egy h magasságú AVL fának legalább Fh+3+1 csúcsa van Bizonyítás: Legyen Sh a legkisebb h magasságú AVL fa mérete Nyilván, S0 = és S1 = 2 valamint Sh = Sh-1 + Sh-2 + 1 Indukcióval .. Sh = Fh+3-1 („3-mal eltolt Fibonacci”) (Fh+2-1+Fh =Fh+3-1)

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

10 n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 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 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 y h - y z z h h h-1 h-1 h h-1 h-1 h  < 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-1 h  < 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 log2 n + 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, . . . , xk egy 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


Letölteni ppt "AVL fák."

Hasonló előadás


Google Hirdetések