Algorimuselméle Keresőfák, piros-fekee fák Kaona Gula Y. Sámíásudománi és Információelmélei Tansék Budapesi Műsaki és Gadaságudománi Egeem. előadás Kaona Gula Y. (BME SZIT) Algorimuselméle. előadás / Keresőfák Tároljuk a U rendee halma elemei, hog BESZÚR, TÖRÖL, KERES, MIN, (MAX, TÓLIG) haékonak legenek. Bináris fa bejárása eljes fa (új def.): a alsó sin is ele van l sinű, eljes fának l csúcsa van. Fa csúcsai elem(), bal(), jobb() eseleg apa() és resfa() + Ha a gökér, pedig a -es csúcs, akkor * 5 bal(jobb()) =, apa(apa()) =, elem(bal()) =, resfa() =. Kaona Gula Y. (BME SZIT) Algorimuselméle. előadás /
PREORDER, INORDER, POSTORDER pre() in() pos() begin begin begin láoga(); in(bal()); pos(bal()); pre(bal()); láoga(); pos(jobb()); pre(jobb()) in(jobb()) láoga() end end end + * 5 PREORDER: + 5 INORDER: 5 + POSTORDER: 5 + Lépéssám: O(n) Kaona Gula Y. (BME SZIT) Algorimuselméle. előadás / Bináris keresőfa Definíció (Keresőfa-ulajdonság) Tesőleges csúcsra és a baloldali résfájában levő csúcsra iga, hog elem() elem(). Hasonlóan, ha eg csúcs a jobb résfájából, akkor elem() elem(). 0 Hái felada: Igaoljuk, hog eg bináris keresőfa elemei a fa inorder bejárása nemcsökkenő sorrendben láogaja meg. Eg kénelmes megállapodás: a ovábbiakban felessük, hog nincsenek ismélődő elemek a keresőfában. Kaona Gula Y. (BME SZIT) Algorimuselméle. előadás /
Naiv algorimusok KERES(s,S): Össehasonlíjuk s-e S gökerében árol s elemmel. Ha s = s, akkor megaláluk. Ha s < s, akkor balra megünk ovább. KERES(, S) Ha s > s, akkor jobbra megünk. Ugane a ua járjuk be a KERES(5, S) kapcsán, de a nem aláljuk meg. Lépéssám: O(l), ahol l a fa mélsége MIN: mindig balra lépünk, amíg lehe MAX: mindig jobbra lépünk, amíg lehe Lépéssám: O(l) TÓLIG(a, b, S): KERES(a, S) INORDER a-ól b-ig Lépéssám: O(l + k), ahol k a a és b köö levő elemek sáma Kaona Gula Y. (BME SZIT) Algorimuselméle. előadás 5 / Naiv BESZÚR BESZÚR(s, S): KERES(s, S)-sel megkeressük, hova kerülne, és új levele adunk hoá, pl. BESZÚR(, S): Lépéssám: O(l) Kaona Gula Y. (BME SZIT) Algorimuselméle. előadás /
Naiv TÖRÖL TÖRÖL(s, S): Ha s levél, akkor riviális, pl. TÖRÖL(, S): TÖRÖL(s, S): Ha s-nek eg fia van, akkor: s fiú(s), pl. TÖRÖL(, S): Kaona Gula Y. (BME SZIT) Algorimuselméle. előadás / Naiv TÖRÖL Vag pl. TÖRÖL(, S ): 0 0 TÖRÖL(s, S): Ha s-nek ké fia van, akkor vissaveejük a előő esere. s helére egük := MAX(bal(s))- és öröljük -. Pl. TÖRÖL(, S ): 0 0 Kaona Gula Y. (BME SZIT) Algorimuselméle. előadás /
Naiv TÖRÖL Állíás := MAX(bal(s)) csúcsnak nem lehe ké fia. Bioníás. Ha lenne ké fia, akkor lenne eg jobb fia is. De ekkor >. Lépéssám: O(l) Kaona Gula Y. (BME SZIT) Algorimuselméle. előadás / Faépíés naiv besúrásokkal Ha pl. a,,..., n soroaból épíünk fá íg, akkor e kapjuk: A épíés kölsége: + +... + (n ) = O(n ) Téel n Ha eg vélelen soroaból épíünk fá naiv besúrásokkal, akkor a épíés kölsége álagosan O(n log n). A kapo fa mélsége álagosan O(log n). Kaona Gula Y. (BME SZIT) Algorimuselméle. előadás 0 /
Piros-fekee fák Olan bináris keresőfa, melnek mélsége nem lehe nag. BESZÚR, TÖRÖL, KERES, MIN, (MAX, TÓLIG) haékonak. Definíció A piros-fekee fa eg bináris keresőfa, melre eljesülnek a kövekeők: Minden nem levél csúcsnak fia van. Elemeke belső csúcsokban árolunk. Teljesül a keresőfa ulajdonság. A fa minden csúcsa piros vag fekee. 5 A gökér fekee. A levelek fekeék. Minden piros csúcs mindké gereke fekee. Minden v csúcsra iga, hog a össes v-ből levélbe veeő úon ugananni fekee csúcs van. Kaona Gula Y. (BME SZIT) Algorimuselméle. előadás / Példa 5 5 Megj.: A sokásos bináris fá kiegésíjük üres levelekkel. Kaona Gula Y. (BME SZIT) Algorimuselméle. előadás /
Piros-fekee fák Jelölések F v : v gökerű résfa m(v): v magassága, a leghossabb v-ből levélbe veeő ú éleinek sáma fm(v): v fekee-magassága, a v-ből levélbe veeő össes úon a fekee csúcsok sáma, v- nem sámolva. (E minden úon egforma a. ulajdonság mia.) Kaona Gula Y. (BME SZIT) Algorimuselméle. előadás / Tulajdonságok Állíás Eg piros-fekee fa minden v csúcsára eljesül m(v) fm(v) m(v). Bioníás. A leghossab levélbe veeő úon a fekeék sáma nem lehe öbb a élek sámánál fm(v) m(v).. pon mia a leghossabb úon a ponoknak legalább a fele fekee m(v) fm(v). Kaona Gula Y. (BME SZIT) Algorimuselméle. előadás /
Tulajdonságok Állíás F v belső csúcsainak sáma b v fm(v). Bioníás. Indukcióval m(v)-re: m(v) = 0 fm(v) = 0, b v 0 Ha m(v) > 0, akkor legen, a ké fia. m() < m(v) és m() < m(v) fm(v) fm() fm(v) és fm(v) fm() fm(v) b v = b + b + b v ( fm() )+( fm() )+ ( fm(v) )+ = fm(v). Kaona Gula Y. (BME SZIT) Algorimuselméle. előadás 5 / Tulajdonságok Állíás Ha eg piros-fekee fában n eleme árolunk, akkor a fa magassága log(n + ). Bioníás. Ha r a gökér b r = n. n = b r fm(r) log(n + ) fm(r) m(r) Téel KERES, MAX, MIN lépéssáma piros-fekee fában O(log n). Bioníás. Álalában minden keresőfában a lépéssám a fa magasságával arános O(l) = O(log n). Kaona Gula Y. (BME SZIT) Algorimuselméle. előadás /
BESZÚR lépéssáma Ha a keresőfáknál hasnálaos besúrás hasnálnánk, akkor megsérülhene a piros-fekee ulajdonság. Forgaás s s F F F s F F F s Megj.: E a művele megarja a keresőfa ulajdonságo. Kaona Gula Y. (BME SZIT) Algorimuselméle. előadás / BESZÚR Súrjuk be a új eleme a keresőfáknál megismer módon. Új belső csúcs kelekeik (gerekei csak üres fekee levelek): Ha a gökér, akkor legen fekee Ha nem gökér, akkor legen a apja, legen piros. () Ha fekee fekee-magasságok sehol nem válonak () Ha piros nem eljesül a piros-fekee ulajdonság ovábbi lépések kellenek. Kaona Gula Y. (BME SZIT) Algorimuselméle. előadás /
BESZÚR () Mivel piros, nem gökér legen apja (fekee), esvére. (.) Ha piros ásíneük - pirosra Evvel a problémá ké sinel feljebb oluk, o folajuk a fa rendbeéelé. Kivéve, ha a gökér marad fekee fm() eggel nagobb les. Kaona Gula Y. (BME SZIT) Algorimuselméle. előadás / BESZÚR (.) Ha fekee: (..) Ha és nem aonos oldali gerek forgaunk körül. Evvel a kövekeő esere veeük a problémá. Kaona Gula Y. (BME SZIT) Algorimuselméle. előadás 0 /
BESZÚR (.) Ha fekee: (..) Ha és aonos oldali gerek forgaunk körül, majd ásíneünk. Evvel a gökér fekee-magassága nem váloik, és eljesül a piros-fekee ulajdonság. Kaona Gula Y. (BME SZIT) Algorimuselméle. előadás / BESZÚR Téel A BESZÚR során (a) a lépéssám O(log n), (b) legfeljebb forgaás örénik. Bioníás. (a) piros eseben a (.) ponban sinel feljebb kerül a baj sinenkén konsans lépés O(log n). (b) Forgaás csak a (.) eseben örénik, de ekkor nincs felgűrűés, rögön kijavíjuk a fá. Kaona Gula Y. (BME SZIT) Algorimuselméle. előadás /
TÖRÖL Hasonló módserek, de bonolulabb. Téel A TÖRÖL során (a) a lépéssám O(log n), (b) legfeljebb forgaás örénik. Kaona Gula Y. (BME SZIT) Algorimuselméle. előadás / Példa BESZÚRásokra Súrjuk be eg üres fába sorban a,,,,, elemeke. (..) forgaás (..) ásín. (.) ásín. Kaona Gula Y. (BME SZIT) Algorimuselméle. előadás /
Példa BESZÚRásokra Súrjuk be eg üres fába sorban a,,,,, elemeke. (..) forgaás (..) forgaás (..) ásín. Kaona Gula Y. (BME SZIT) Algorimuselméle. előadás 5 / Példa BESZÚRásokra Súrjuk be eg üres fába sorban a,,,,, elemeke. (.) ásín. Kaona Gula Y. (BME SZIT) Algorimuselméle. előadás /