AVL fák.

Slides:



Advertisements
Hasonló előadás
Egyszerű oszthatósági problémák
Advertisements

GRIN: Gráf alapú RDF index
Készítette: Kosztyán Zsolt Tibor
Nevezetes algoritmusok
Miskolci Egyetem Informatikai Intézet Általános Informatikai Tanszé k Pance Miklós Adatstruktúrák, algoritmusok előadásvázlat Miskolc, 2004 Technikai közreműködő:
Függvények Egyenlőre csak valós-valós függvényekkel foglalkozunk.
Készítette: Mester Tamás METRABI.ELTE.  Egy bemeneten kapott szöveg(karakter sorozat) méretét csökkenteni, minél kisebb méretűre minél hatékonyabb algoritmussal.
MI 2003/ A következőkben más megközelítés: nem közvetlenül az eloszlásokból indulunk ki, hanem a diszkriminancia függvényeket keressük. Legegyszerűbb:
Illés Tibor – Hálózati folyamok
Rekurzió (Horváth Gyula és Szlávi Péter előadásai felhasználásával)
INFOÉRA Dinamikus programozás (Horváth Gyula és Szlávi Péter előadásai felhasználásával) Juhász István-Zsakó László: Informatikai képzések.
Prímtesztelés Témavezető: Kátai Imre Komputeralgebra Tanszék Nagy Gábor:
Euklidészi gyűrűk Definíció.
Algebrai struktúrák 1.
AVL-fa építése.
Csoport részcsoport invariáns faktorcsoport részcsoport
Gyűrűk Definíció. Az (R, +, ·) algebrai struktúra gyűrű, ha + és · R-en binér műveletek, valamint I. (R, +) Abel-csoport, II. (R, ·) félcsoport, és III.
Minimális költségű feszítőfák
Streaming Algorithms for k-core Decomposition. K-mag dekompozíció Maximális részgráf, amiben minden csúcshoz legalább k részgráfbeli csúcs csatlakozik.
Erősen összefüggő komponensek meghatározása
Az összehasonlító rendezések
Gazdaságmatematika 6.szeminárium.
Kombinatorikus problémák sokszögek háromszögekre osztásaival kapcsolatban Hajnal Péter Szeged, SZTE, Bolyai Intézet.
Minimax és problémaredukció, egyszerű példák INCK431 Előadó: Dr. Nagy Benedek Norbert Gyakorlatvezető: Kovács Zita 2011/2012. II. félév A MESTERSÉGES INTELLIGENCIA.
Jelrendszerek, kettes számrendszer
Thalész tétel és alkalmazása
Miskolci Egyetem Informatikai Intézet Általános Informatikai Tanszé k Pance Miklós Adatstruktúrák, algoritmusok előadásvázlat Miskolc, 2004 Technikai közreműködő:
Miskolci Egyetem Informatikai Intézet Általános Informatikai Tanszé k Pance Miklós Adatstruktúrák, algoritmusok előadásvázlat Miskolc, 2004 Technikai közreműködő:
Miskolci Egyetem Informatikai Intézet Általános Informatikai Tanszé k Pance Miklós Adatstruktúrák, algoritmusok előadásvázlat Miskolc, 2004 Technikai közreműködő:
Miskolci Egyetem Informatikai Intézet Általános Informatikai Tanszé k Pance Miklós Adatstruktúrák, algoritmusok előadásvázlat Miskolc, 2004 Technikai közreműködő:
Miskolci Egyetem Informatikai Intézet Általános Informatikai Tanszé k Pance Miklós Adatstruktúrák, algoritmusok előadásvázlat Miskolc, 2004 Technikai közreműködő:
Fák, bináris fák INFOÉRA Ez így 60 perc.
Számoljuk meg rekurzív függvénnyel egy bináris fa leveleit!
DAG topologikus rendezés
32 Építsünk AVL-fát a következő adatokból: 32, 40, 21, 15, 43, 25, 9, 28, 35, 12! Ha elromlott a fa kiegyensúlyozása, állítsuk helyre a megfelelő forgatással!
Dijkstra algoritmus. Kiválasszuk a legkisebb csúcsot, ez lesz a kezdőcsúcs, amit 0-val címkézünk és megjelöljük sárgaszínnel. Szomszédjai átcímkézése.
Dinamikus fák és utak Készítette: Kovács Péter
Miskolci Egyetem Informatikai Intézet Általános Informatikai Tanszé k Pance Miklós Adatstruktúrák, algoritmusok előadásvázlat Miskolc, 2004 Technikai közreműködő:
Nevezetes algoritmusok Beszúrás Van egy n-1 elemű rendezett tömbünk. Be akarunk szúrni egy n-edik elemet. Egyik lehetőség, hogy végigszaladunk a tömbön,
Thalész tétel és alkalmazása
Gráfelmélet: Fák.
Hierarchikus adatszerkezetek
Lineáris programozás Elemi példa Alapfogalmak Általános vizsg.
Fák.
A feladat : Építsünk AVL-fát a következő adatokból:100,170,74,81,136,185,150,122,52,190,144 (Az AVL-fa olyan bináris keresőfa, amelynek minden csúcsára.
Mélységi bejárás Az algoritmus elve: Egy kezdőpontból kiindulva addig megyünk egy él mentén, ameddig el nem jutunk egy olyan csúcsba, amelyből már nem.
Algoritmizálás, adatmodellezés tanítása 8. előadás.
BINÁRIS FA Definició: A fa olyanösszefüggő gráf, amelyben nincs kör
Számtani és mértani közép
Példa kettő-három fa felépítésére - törlés művelet Készítette : Krizsai Petra
Osztott adatbázisok.  Gyors ismétlés: teljes redukáló  Teljes redukáló költsége  Természetes összekapcsolások vetítése  Természetes összekapcsolások.
Mikroökonómia gyakorlat
Business Mathematics A legrövidebb út.
Gráfok ábrázolása teljesen láncoltan
előadások, konzultációk
Bináris kereső fák Itterátorok.
Algoritmusok és adatszerkezetek
(Bináris) Kupac (heap) adattípus
Huffman tömörítés.
BFák Kiegyensúlyozott keresőfák
Dinamikus adatszerkezetek
Egyenletek.
Piros-fekete fák Beszúrás, ill. törléskor a fa elveszítheti az egyensúlyát. A piros-fekete fák: az egyensúly megtartását biztosítják. +1 bit információ.
Algoritmusok és Adatszerkezetek I.
AVL fák.
Bináris kereső fák Definíció: A bináris kereső fa egy bináris fa,
Algoritmusok és Adatszerkezetek I.
Gráfok - 1 Definíció: Irányított gráf (digráf) G=(V,E) rendezett pár.
2-3-fák A 2-3-fa egy gyökeres fa az alábbi tulajdonságokkal:
Algoritmusok és Adatszerkezetek I.
Előadás másolata:

AVL fák

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

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

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

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

Ö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ú.

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

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 = 1 és S1 = 2 valamint Sh = 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)

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

nSh h nem mehet az optimális fölé 44%- kal többel

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

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< 

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)

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

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

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.

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 < 

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

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

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

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< 

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 < 

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

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.

Ö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)

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

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

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