Algoritmuselmélet. 2-3 fák. Katona Gyula Y. Számítástudományi és Információelméleti Tanszék Budapesti Műszaki és Gazdaságtudományi Egyetem. 8.

Hasonló dokumentumok
A számítástudomány alapjai. Katona Gyula Y. Számítástudományi és Információelméleti Tanszék Budapesti Műszaki és Gazdaságtudományi Egyetem

file:///d:/okt/ad/jegyzet/ad1/b+fa.html

17. A 2-3 fák és B-fák. 2-3 fák

Algoritmusok és adatszerkezetek gyakorlat 07

Algoritmuselmélet 2. előadás

10. tétel. Adatszerkezetek és algoritmusok vizsga Frissült: január 28.

file:///d:/apa/okt/ad/jegyzet/ad1/b+fa.html

Algoritmuselmélet. Bonyolultságelmélet. Katona Gyula Y.

Algoritmuselmélet. Gráfok megadása, szélességi bejárás, összefüggőség, párosítás. Katona Gyula Y.

10. előadás Speciális többágú fák

Algoritmuselmélet. Mélységi keresés és alkalmazásai. Katona Gyula Y.

B-fa. Felépítés, alapvető műveletek. Programozás II. előadás. Szénási Sándor.

Példa 30 14, 22 55,

7 7, ,22 13,22 13, ,28

Algoritmuselmélet. Hashelés. Katona Gyula Y. Számítástudományi és Információelméleti Tanszék Budapesti Műszaki és Gazdaságtudományi Egyetem

Adatszerkezetek 7a. Dr. IványiPéter

Fák Témakörök. Fa definíciója. Rekurzív típusok, fa adatszerkezet Bináris keresőfa, bejárások Bináris keresőfa, módosítás B-fa

Algoritmuselmélet. Katona Gyula Y. Számítástudományi és Információelméleti Tanszék Budapesti Műszaki és Gazdaságtudományi Egyetem. 6.

Algoritmuselmélet. Hashelés. Katona Gyula Y. Számítástudományi és Információelméleti Tanszék Budapesti Műszaki és Gazdaságtudományi Egyetem

Algoritmuselmélet. Katona Gyula Y. Számítástudományi és Információelméleti Tanszék Budapesti Műszaki és Gazdaságtudományi Egyetem. 13.

Elemi adatszerkezetek

A számítástudomány alapjai

Rendezések. Összehasonlító rendezések

Algoritmuselmélet. Katona Gyula Y. Számítástudományi és Információelméleti Tanszék Budapesti Műszaki és Gazdaságtudományi Egyetem. 12.

Algoritmuselmélet. Hashelés. Katona Gyula Y. Számítástudományi és Információelméleti Tanszék Budapesti Műszaki és Gazdaságtudományi Egyetem

Fájlszervezés. Adatbázisok tervezése, megvalósítása és menedzselése

Adatszerkezetek és algoritmusok

Algoritmuselmélet. Legrövidebb utak, Bellmann-Ford, Dijkstra. Katona Gyula Y.

Algoritmuselmélet. Függvények nagyságrendje, elágazás és korlátozás, dinamikus programozás. Katona Gyula Y.

Adatszerkezetek 2. Dr. Iványi Péter

Ugrólisták. RSL Insert Example. insert(22) with 3 flips. Runtime?

Algoritmuselmélet 1. előadás

Sali Attila Budapest Műszaki és Gazdaságtudományi Egyetem. I. B. 137/b március 16.

Hierarchikus adatszerkezetek

Fogalmak: Adatbázis Tábla Adatbázis sorai: Adatbázis oszlopai azonosító mező, egyedi kulcs Lekérdezések Jelentés Adattípusok: Szöveg Feljegyzés Szám

30. ERŐSEN ÜSSZEFÜGGŐ KOMPONENSEK

Fa (Tree): csomópontok (nodes) halmaza, amelyeket élek (edges) kötnek össze, és teljesülnek az alábbi feltételek:

A programozás alapjai előadás. [<struktúra változó azonosítók>] ; Dinamikus adatszerkezetek:

Algoritmuselmélet. Katona Gyula Y. Számítástudományi és Információelméleti Tanszék Budapesti Műszaki és Gazdaságtudományi Egyetem. 7.

Algoritmuselmélet 6. előadás

Keresés és rendezés. A programozás alapjai I. Hálózati Rendszerek és Szolgáltatások Tanszék Farkas Balázs, Fiala Péter, Vitéz András, Zsóka Zoltán

R ++ -tree: an efficient spatial access method for highly redundant point data - Martin Šumák, Peter Gurský

Algoritmuselmélet 1. előadás

Algoritmuselmélet 11. előadás

Algoritmuselmélet. Függvények nagyságrendje, elágazás és korlátozás, dinamikus programozás. Katona Gyula Y.

Ellenőrző kérdések. 36. Ha t szintű indexet használunk, mennyi a keresési költség blokkműveletek számában mérve? (1 pont) log 2 (B(I (t) )) + t

Tartalom Keresés és rendezés. Vektoralgoritmusok. 1. fejezet. Keresés adatvektorban. A programozás alapjai I.

Adatszerkezetek Adatszerkezet fogalma. Az értékhalmaz struktúrája

Algoritmusok és adatszerkezetek II.

Algoritmusok és adatszerkezetek gyakorlat 09 Rendezések

Shannon és Huffman kód konstrukció tetszőleges. véges test felett

Adatszerkezetek I. 7. előadás. (Horváth Gyula anyagai felhasználásával)

Térinformatikai adatszerkezetek

V. Kétszemélyes játékok

Rendezettminta-fa [2] [2]

Kupac adatszerkezet. A[i] bal fia A[2i] A[i] jobb fia A[2i + 1]

Haladó rendezések. PPT 2007/2008 tavasz.

Keresőfák és nevezetes algoritmusaikat szemléltető program

19. AZ ÖSSZEHASONLÍTÁSOS RENDEZÉSEK MŰVELETIGÉNYÉNEK ALSÓ KORLÁTJAI

Programozás alapjai 9. előadás. Wagner György Általános Informatikai Tanszék

Nagyságrendek. Kiegészítő anyag az Algoritmuselmélet tárgyhoz. Friedl Katalin BME SZIT február 1.

Bináris keresőfa. Felépítés, alapvető műveletek. Programozás II. előadás. Szénási Sándor

Adatbáziskezelés alapjai. jegyzet

Algoritmusok és adatszerkezetek gyakorlat 06 Adatszerkezetek

Edényrendezés. Futási idő: Tegyük fel, hogy m = n, ekkor: legjobb eset Θ(n), legrosszabb eset Θ(n 2 ), átlagos eset Θ(n).

Adatszerkezetek. Nevezetes algoritmusok (Keresések, rendezések)

Gyakori elemhalmazok kinyerése

Adatszerkezetek I. 8. előadás. (Horváth Gyula anyagai felhasználásával)

EGYSZERŰ, NEM IRÁNYÍTOTT (IRÁNYÍTATLAN) GRÁF

Egyirányban láncolt lista

Adatszerkezetek 1. előadás

Algoritmusok és adatszerkezetek II.

Gyakorló feladatok ZH-ra

Kétszemélyes játékok Gregorics Tibor Mesterséges intelligencia

19. Hasításos technikák (hash-elés)

2. Visszalépéses keresés

1. ábra. Egy rekurzív preorder bejárás. Egy másik rekurzív preorder bejárás

Buborékrendezés: Hanoi Tornyai: Asszimptótikus fv.ek: Láncolt ábrázolás: For ciklussal:

Csima Judit október 24.

Általános algoritmustervezési módszerek

Diszkrét matematika 2.C szakirány

7. BINÁRIS FÁK 7.1. A bináris fa absztrakt adattípus 7.2. A bináris fa absztrakt adatszerkezet

Speciális adatszerkezetek. Programozás alapjai II. (8. ea) C++ Tömbök. Tömbök/2. N dimenziós tömb. Nagyméretű ritka tömbök

Programozás alapjai II. (7. ea) C++ Speciális adatszerkezetek. Tömbök. Kiegészítő anyag: speciális adatszerkezetek

Ionogram releváns területeinek meghatározása és elemzésének automatikus megvalósítása

Algoritmuselmélet 18. előadás

Kupac adatszerkezet. 1. ábra.

Programozás alapjai II. (7. ea) C++

Más szavakkal formálisan:, ahol olyan egész szám, hogy. Más szavakkal formálisan:, ahol olyan egész szám, hogy.

Kiegészítő részelőadás 1. Az algoritmusok hatékonyságának mérése

A MAXIMUM-KUPACOL eljárás helyreállítja az A[i] elemre a kupactulajdonságot. Az elemet süllyeszti cserékkel mindaddig, amíg a tulajdonság sérül.

Adaptív dinamikus szegmentálás idősorok indexeléséhez

Diszkrét matematika 2.

Programozás alapjai. 8. előadás

Algoritmusok bonyolultsága

Önszervező bináris keresőfák

Algoritmuselmélet. Függvények nagyságrendje, elágazás és korlátozás, dinamikus programozás. Katona Gyula Y.

Adatbázisok elmélete

Algoritmuselmélet 7. előadás

Adatbáziskezelés. Indexek, normalizálás NZS 1

Átírás:

Algoritmuselmélet 2-3 fák Katona Gyula Y. Számítástudományi és Információelméleti Tanszék Budapesti Műszaki és Gazdaságtudományi Egyetem 8. előadás Katona Gyula Y. (BME SZIT) Algoritmuselmélet 8. előadás 1 / 12 2-3-fák Ez is fa, de a binárisnál bonyolultabb: egy nem-levél csúcsnak 2 vagy 3 fia lehet. A 2-3-fa egy (lefelé) irányított gyökeres fa, melyre: A rekordok a fa leveleiben helyezkednek el, a kulcs értéke szerint balról jobbra növekvő sorrendben. Egy levél egy rekordot tartalmaz. Minden belső (azaz nem levél) csúcsból 2 vagy 3 él megy lefelé; ennek megfelelően a belső csúcsok egy, illetve két s U kulcsot tartalmaznak. A belső csúcsok szerkezete tehát kétféle lehet. Az egyik típus így ábrázolható: m 1 s 1 m 2 s 2 m 3 Itt m 1, m 2, m 3 mutatók a csúcs részfáira, s 1, s 2 pedig U-beli kulcsok, melyekre s 1 < s 2. Az m 1 által mutatott részfa minden kulcsa kisebb, mint s 1, az m 2 részfájában s 1 a legkisebb kulcs, és minden kulcs kisebb, mint s 2. Végül m 3 részfájában s 2 a legkisebb kulcs. A másik típusú csúcsoknál az az utolsó két mező hiányzik: m 1 s 1 m 2 A fa levelei a gyökértől egyforma távolságra vannak. Katona Gyula Y. (BME SZIT) Algoritmuselmélet 8. előadás 2 / 12

Példa 2-3-fára 6 11 22 3 10 14 20 25 1 3 6 10 11 14 20 22 25 Katona Gyula Y. (BME SZIT) Algoritmuselmélet 8. előadás 3 / 12 2-3-fa tulajdonságai Tétel Ha a fának m szintje van, akkor a levelek száma legalább 2 m 1. Megfordítva, ha S = n (itt S U a fában tárolt kulcsok halmaza; S megegyezik a tárolt rekordok számával), akkor m log 2 n + 1. Bizonyítás. Minden belső csúcsnak legalább 2 fia van = az i-edik szinten legalább 2 i 1 csúcs van (1 i m). = 2 m 1 n = m 1 log 2 n. Katona Gyula Y. (BME SZIT) Algoritmuselmélet 8. előadás 4 / 12

2-3-fa tulajdonságai Tétel Ha a fának m szintje van, akkor a levelek száma legfeljebb 3 m 1. Megfordítva, m log 3 n + 1. Bizonyítás. Minden belső csúcsnak legfeljebb 3 fia van = az i-edik szinten legfeljebb 3 i 1 csúcs van (1 i m). = n 3 m 1 = m 1 log 3 n. Katona Gyula Y. (BME SZIT) Algoritmuselmélet 8. előadás 5 / 12 Keresés 2-3-fában 6 11 22 3 10 14 20 25 1 3 6 10 11 14 20 22 25 Hasonló, mint a bináris keresőfában. Lépésszám: O(m), ahol log 3 (n) + 1 m log 2 (n) + 1 Katona Gyula Y. (BME SZIT) Algoritmuselmélet 8. előadás 6 / 12

BESZÚR 2-3-fába 12 6 11 14 11 14 11 6 11 6 12 14 12 14 11 12 14 11 12 Ha a gyökeret is vágni kell = új gyökér, nő a fa magassága. Lépésszám: O(m), minden szinten legfeljebb 1 vágás. 14 Katona Gyula Y. (BME SZIT) Algoritmuselmélet 8. előadás 7 / 12 TÖRÖL 2-3-fából Legyen x a legalsó belső csúcs a kereső út mentén. Ha x-nek három fia van = Ha x-nek csak két fia van: ha x (valamelyik) szomszédos testvérének 3 fia van = egyet átteszünk x alá; ha x egyik szomszédos testvérének sincs három fia = összevonunk két kettes csúcsot. Ez is felgyűrűzhet. = Lépésszám: O(m) Katona Gyula Y. (BME SZIT) Algoritmuselmélet 8. előadás 8 / 12

B-fák R. Bayer, E. McCreight, 1972 A 2-3-fa általánosítása. Nagy méretű adatbázisok, külső táron levő adatok feldolgozására használják. Több szabvány tartalmazza valamilyen változatát. Probléma Nem az összhasonlítás időigényes, hanem az adatok kiolvasása, de sokszor egy adat kiolvasásához amúgy is kiolvasunk több más adatot, egy lapot. = A fa csúcsai legyenek lapok, a költség a lapelérések száma. Katona Gyula Y. (BME SZIT) Algoritmuselmélet 8. előadás 9 / 12 B-fa definíciója Egy m-edrendű B-fa, röviden B m -fa egy gyökeres, (lefelé) irányított fa, melyre érvényesek az alábbiaknak: a) A gyökér foka legalább 2, kivéve esetleg, ha a fa legfeljebb kétszintes. b) Minden más belső csúcsnak legalább m 2 fia van. c) A levelek a gyökértől egyforma messze vannak. d) Egy csúcsnak legfeljebb m fia lehet. d) A tárolni kívánt rekordok itt is a fa leveleiben vannak; egy levélben a lapmérettől és a rekordhossztól függően több rekord is lehet, növekvően rendezett láncolt listában. A belső csúcsok hasonlítanak a 2-3-fák belső csúcsaira. Egy belső csúcs így néz ki: m 0 s 1 m 1 s 2 m 2... s i m i Katona Gyula Y. (BME SZIT) Algoritmuselmélet 8. előadás 10 / 12

A B-fa szintszáma Tegyük fel, hogy egy B-fának n levele és k szintje van, és keressünk összefüggést e két paraméter között. A kicsi fáktól eltekintve a gyökérnek legalább két fia van, a többi belső csúcsnak pedig legalább m 2. = n 2 m 2 k 2, = log m 2 n 2 + 2 k k log 2 n 1 log 2 m 2 + 2. ( ) Minden művelet lépésszáma: log 2 n 1 log 2 m 2 = Θ log n log m, azaz a konstans szorzó kicsi, ha m nagy. m viszont nem lehet túl nagy, hiszen a belső csúcsoknak egy lapon el kell férniük. Például: Például, ha m = 32, n = 2 20 (itt n az alsó szint lapjainak száma), akkor k 19 4 + 2 < 7. Egy rekord keresése tehát legfeljebb 6 lap elérését igényli. Katona Gyula Y. (BME SZIT) Algoritmuselmélet 8. előadás 11 / 12 A piros-fekete fa és a B-fa kapcsolata A piros-fekete fa olyan B 4 -fa, aminek a belső csúcsaiban tároljuk az elemeket. 8 1 6 11 17 15 22 25 27 A piros csúcsokat összevonjuk apjukkal, az így összevont csúcsoknak 2, 3 vagy 4 gyereke van. Ezért a mélység csak a fekete csúcsokkal nő. = Mivel a fekete magasság állandó, minden levél azonos szinten lesz. Katona Gyula Y. (BME SZIT) Algoritmuselmélet 8. előadás 12 / 12