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

Hasonló dokumentumok
6. előadás. Kiegyensúlyozottság, AVL-fa, piros-fekete fa. Adatszerkezetek és algoritmusok előadás március 6.

Egyirányban láncolt lista

Adatszerkezetek 7a. Dr. IványiPéter

Algoritmusok és adatszerkezetek gyakorlat 07

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

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

Adatszerkezetek 1. előadás

Hierarchikus adatszerkezetek

Hierarchikus adatszerkezetek

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

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.

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

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

Adatszerkezetek és algoritmusok

Algoritmusok és adatszerkezetek gyakorlat 06 Adatszerkezetek

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

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

Elemi adatszerkezetek

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

9. előadás. A táblázat. A táblázatról általában, soros, önátrendező, rendezett és kulcstranszformációs táblázat

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

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

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

Algoritmusok és adatszerkezetek II.

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

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

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

Rendezettminta-fa [2] [2]

Adatszerkezetek 2. Dr. Iványi Péter

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

- Levelek: operandusok - Csomópontok: operátorok. Fenti kifejezés: (x+ (y 10)) * (6 / z) Bináris Keresőfa (BST) Példa bináris keresőfára.

Struktúra nélküli adatszerkezetek

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

Számláló rendezés. Példa

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

Algoritmusok és adatszerkezetek gyakorlat 03 Oszd meg és uralkodj. Nagy

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

Kupac adatszerkezet. 1. ábra.

end function Az A vektorban elõforduló legnagyobb és legkisebb értékek indexeinek különbségét.. (1.5 pont) Ha üres a vektor, akkor 0-t..

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

Információs Technológia

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

GRÁFOK ÉS ALGORITMUSOK ELMÉLETE VIZSGAKÉRDÉSEK Matematika BSc Elemző szakirány II. év 1. félév

Láncolt listák Témakörök. Lista alapfogalmak

Amortizációs költségelemzés

Térinformatikai adatszerkezetek

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.

Láncolt Listák. Adat1 Adat2 Adat3 ø. Adat1 Adat2 ø Adat3

Tartalomjegyzék. Köszönetnyilvánítás. 1. Az alapok 1

Láncolt listák. Egyszerű, rendezett és speciális láncolt listák. Programozás II. előadás. Szénási Sándor

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.

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

16. Az AVL-fa. (Adelszon-Velszkij és Landisz, 1962) Definíció: t kiegyensúlyozott (AVL-tulajdonságú) t minden x csúcsára: Pl.:

6. LISTÁK ábra. A lista absztrakt adatszerkezet (ADS)

2. Milyen értéket határoz meg az alábbi algoritmus, ha A egy vektor?. (2 pont)

Algoritmusok és adatszerkezetek II.

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

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.

Információs Technológia

Például számokból álló, egyszeresen láncolt lista felépítéséhez az alábbi struktúra definíciót használhatjuk:

Absztrakt adatstruktúrák A bináris fák

Adatszerkezetek 2. Dr. Iványi Péter

Egyesíthető prioritási sor

Adatszerkezetek Bevezetés Adatszerkezet Adatszerkezet típusok Műveletek Bonyolultság

Táblázatok fontosabb műveletei 1

Láncolt listák. PPT 2007/2008 tavasz.

Algoritmusok vektorokkal keresések 1

adatszerkezetek 2007/7/6 15:51 page 27 #23

Gyakorló feladatok ZH-ra

Példa 30 14, 22 55,

Algoritmusok és adatszerkezetek I. 5. előadás

Bináris keresőfák. Adat : M Elemtip és Elemtip-on értelmezett egy lineáris rendezési reláció,

5. SOR. Üres: S Sorba: S E S Sorból: S S E Első: S E

Kupacrendezés. Az s sorban lévő elemeket rendezzük a k kupac segítségével! k.empty. not s.isempty. e:=s.out k.insert(e) not k.

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

2. AZ ADATTÍPUS ABSZTRAKCIÓS SZINTJEI...2

Algoritmuselmélet 2. előadás

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

Algoritmusok és adatszerkezetek I. 1. előadás

A lista adatszerkezet A lista elemek egymásutániságát jelenti. Fajtái: statikus, dinamikus lista.

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

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

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

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

Adatszerkezetek I. 6. előadás

Algoritmusok és adatszerkezetek 2.

15. tétel. Adatszerkezetek és algoritmusok vizsga Frissült: január 30.

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

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

5 HOZZÁFÉRÉS-VÉDELEM. A fejezet VIDEOTON fejlesztési dokumentációk felhasználásával készült

30. ERŐSEN ÜSSZEFÜGGŐ KOMPONENSEK

Web-programozó Web-programozó

GRÁFELMÉLET. 7. előadás. Javító utak, javító utak keresése, Edmonds-algoritmus

Algoritmusok bonyolultsága

Adatszerkezetek és algoritmusok

Kulcs transzformációs táblázat

Adatszerkezetek. Készítette: Csatlós István 2005-ben

Rekurzív algoritmusok

Programozási segédlet

Algoritmusok és adatszerkezetek II.

Átírás:

10. előadás Adatszerkezetek és algoritmusok előadás 2018. április 17., és Debreceni Egyetem Informatikai Kar 10.1

A többágú fák kezelésére nincsenek általános elvek, implementációjuk elsősorban alkalmazásfüggő. A rendezett bináris fáknál bemutatott bejárási algoritmusok közül a preorder és a postorder bejárás azonban egyszerűen kiterjeszthető a rendezett többágú fák esetére is. Reprezentációjuk az alábbi módokon történhet: A fát bináris fává alakítjuk. Az adatelemekben a rákövetkezők számára felső korlátot szabunk. Szétszórt reprezentáció esetén ilyenkor az adatrész mellett egy mutatótömb jelenik meg. Ha nincs felső korlátja a rákövetkezők számának, akkor a rákövetkezőket címző mutatókat felfűzhetjük egy egyirányban láncolt listába. 10.2

Lapok A többágú fák speciális esete, ha lemezen jelennek meg. A mutatók ilyenkor lemezcímeket tartalmaznak. A fában egyszerre nem egy elemet mozgatunk a memória és a lemez között (hiszen az lassú lenne), hanem egy elemcsoportot. A fát felosztjuk lapokra, amelyeken a fa több eleme is lehet, és egyszerre egy lapot mozgatunk. A legjobb, ha a lap mérete megegyezik az operációs rendszer által használt blokkmérettel. A fa elemeit két lépésben tudjuk elérni: először a lapot érjük el, azon belül pedig az elemet. A az alábbi tulajdonságokkal rendelkezik: többágú fa keresőfa kiegyensúlyozott fa az elemek lapokon helyezkednek el 10.3

A definíciója és tulajdonságai (1) A olyan keresőfa, amely lapokból épül fel. A lapokon mutatók és adatelemek helyezkednek el. Egy-egy lapon az adatelemek maximális számát a rendje határozza meg. Ha a rendje n, akkor a gyökérlap kivételével minden lapon legalább n darab adatelemnek kell szerepelnie, és minden lapon legfeljebb 2n darab adatelem helyezkedhet el. Egy-egy lapon az adatelemek kulcsaik szerint növekvőleg rendezettek. p 0 a 1 p 1 a 2 p 2... p m 1 a m p m k 1 < k 2 < < k m 10.4

A definíciója és tulajdonságai (2) Tegyük fel, hogy a egy lapján az adatelemek aktuális száma éppen m ( 2n). Ekkor a egy lapja vagy levéllap, vagy pontosan m + 1 darab rákövetkezője van. A levéllapon mindegyik mutató értéke NIL. Egy nem levéllap p 0 mutatója azt a részfát címzi (arra a részfára mutat), amelyben minden kulcsérték kisebb ezen lap k 1 értékű kulcsánál. p i mutatója (0 < i < m) azt a részfát címzi, amelyben minden kulcsérték nagyobb ezen lap k i 1 értékű kulcsánál és kisebb a k i értékű kulcsánál. p m mutatója azt a részfát címzi, amelyben minden kulcsérték nagyobb ezen lap k m értékű kulcsánál. A B-fában a levéllapok azonos szinten helyezkednek el. 10.5

Példa B-fára Egy másodrendű karakter típusú kulcsokkal: M E H P T X B D F G I K L N O Q S V W Y Z 10.6

B-fában B-fában A B-fában a K kulcsot keressük. 1 Ha a üres, az algoritmus véget ér, a keresett elem nincs a B-fában. 2 A gyökérlapján lineáris keresést hajtunk végre. Ha a lineáris keresés sikeres, megtaláltuk a keresett elemet, az algoritmus véget ér. 3 Ha a lineáris keresés sikertelen, akkor vagy a gyökérlap első olyan eleménél (a i ), melynek kulcsa (k i ) nagyobb, mint K, vagy a gyökérlap utolsó eleme után áll meg a lineáris keresés. Előbbi esetben a p i 1 mutató által mutatott részfában, utóbbi esetben a p m mutató által mutatott részfában folytatjuk a keresést (rekurzívan). 10.7

bővítése bővítése A B-fát mindig levéllapon bővítjük, ha a bővítendő elem még nem szerepel a B-fában. 1 Megkeressük azt a levéllapot, ahová a bővítendő adatelemet el fogjuk helyezni. 2 Ha a levéllapon 2n-nél kevesebb elem szerepel, akkor a rendezettség figyelembevételével elhelyezzük a bővítendő elemet a lapon. 3 Ha a levéllapon a bővítést megelőzően már 2n elem szerepelne (tele van), akkor a bővített elemmel együtt 2n + 1 elem közül kiválasztjuk a rendezettség szerinti középsőt, amit kiemelünk ezen elemek közül, s beszúrunk a szülőlapra. A megmaradt elemeket két lapra osztjuk szét: az első n darab a kiemelt középső elem bal oldali mutatója által mutatott lapra, az utolsó n darab elem pedig a kiemelt középső elem jobb oldali mutatója által mutatott lapra kerül. 10.8

Példa bővítésére C

Példa bővítésére C

Példa bővítésére C N

Példa bővítésére C N

Példa bővítésére C N G

Példa bővítésére C G N

Példa bővítésére C G N A

Példa bővítésére A C G N

Példa bővítésére A C G N H

Példa bővítésére A C G N H

Példa bővítésére G A C H N

Példa bővítésére G A C H N E

Példa bővítésére G A C E H N

Példa bővítésére G A C E H N K

Példa bővítésére G A C E H K N

Példa bővítésére G A C E H K N Q

Példa bővítésére G A C E H K N Q

Példa bővítésére G A C E H K N Q M

Példa bővítésére G A C E H K N Q M

Példa bővítésére G M A C E H K N Q

Példa bővítésére G M A C E H K N Q F

Példa bővítésére G M A C E F H K N Q

Példa bővítésére G M A C E F H K N Q W

Példa bővítésére G M A C E F H K N Q W

Példa bővítésére G M A C E F H K N Q W L

Példa bővítésére G M A C E F H K L N Q W

Példa bővítésére G M A C E F H K L N Q W T

Példa bővítésére G M A C E F H K L N Q T W

Példa bővítésére G M A C E F H K L N Q T W Z

Példa bővítésére G M A C E F H K L N Q T W Z

Példa bővítésére G M T A C E F H K L N Q W Z

Példa bővítésére G M T A C E F H K L N Q W Z D

Példa bővítésére G M T A C E F H K L N Q W Z D

Példa bővítésére D G M T A C E F H K L N Q W Z

Példa bővítésére D G M T A C E F H K L N Q W Z P

Példa bővítésére D G M T A C E F H K L N P Q W Z

Példa bővítésére D G M T A C E F H K L N P Q W Z R

Példa bővítésére D G M T A C E F H K L N P Q R W Z

Példa bővítésére D G M T A C E F H K L N P Q R W Z X

Példa bővítésére D G M T A C E F H K L N P Q R W X Z

Példa bővítésére D G M T A C E F H K L N P Q R W X Z Y

Példa bővítésére D G M T A C E F H K L N P Q R W X Y Z

Példa bővítésére D G M T A C E F H K L N P Q R W X Y Z S

Példa bővítésére D G M T A C E F H K L N P Q R W X Y Z S

Példa bővítésére D G M T A C E F H K L N P Q R W X Y Z S

Példa bővítésére M D G Q T A C E F H K L N P R S W X Y Z

Példa bővítésére M D G Q T A C E F H K L N P R S W X Y Z U

Példa bővítésére M D G Q T A C E F H K L N P R S W X Y Z U

Példa bővítésére M D G Q T X A C E F H K L N P R S U W Y Z

B-fából Ha a törlendő elem nem levéllapon van, akkor felülírjuk azzal a levéllapon lévő elemmel, amelyik a törlendő elem inorder módon megelőzője (vagy rákövetkezője). Fizikailag tehát minden esetben levéllapról törlünk. A törlés után előfordulhat, hogy a levéllapon n 1 elem marad. Ekkor két eset lehetséges: 1 Ha valamelyik szomszédos testvérlap legalább n + 1 elemet tartalmaz, akkor a közös szülőlapjukon keresztül átveszünk tőle egy elemet. Ez azt jelenti, hogy a testvérlap legszélső eleme a szülőlapra kerül a megfelelő helyre, az eredetileg ott lévő elem pedig lekerül az n 1 elemet tartalmazó gyermeklapra. Ezzel egyidejűleg a testvérlapon lévő legszélső mutató (és így az onnan kiinduló részfa) is átkerül a csonka lapra. Ez a művelet tehát hasonló az AVL-fa forgatás műveletéhez. 2 Ha mindkét szomszédos testvérlap n elemet tartalmaz (vagy csak egy szomszédos testvérlap van, és az n elemet tartalmaz), akkor valamelyikükkel lapösszevonást kell végrehajtani. Ez azt jelenti, hogy ebből a két lapból, valamint a szülőlapon a két lap közötti elemből egy 2n elemet tartalmazó lapot képzünk. Ezáltal a szülőlapon eggyel csökken az elemek száma, így előfordulhat, hogy ott is n 1 elem marad. A fenti lépéseket tehát iterálni kell. Legrosszabb esetben a lapösszevonás egészen a gyökérlapig felgyűrűzhet, ilyenkor eggyel csökken a fa magassága. 10.10

Példa B-fából való törlésre G L Q X M D G Q T X A C E F H K L N P R S U W Y Z 10.11

Példa B-fából való törlésre G L Q X M D F Q T X A C E H K L N P R S U W Y Z 10.11

Példa B-fából való törlésre G L Q X M D H Q T X A C E F K L N P R S U W Y Z 10.11

Példa B-fából való törlésre G L Q X M D H Q T X A C E F K L N P R S U W Y Z 10.11

Példa B-fából való törlésre G L Q X M D Q T X A C E F H K N P R S U W Y Z 10.11

Példa B-fából való törlésre G L Q X Q D M T X A C E F H K N P R S U W Y Z 10.11

Példa B-fából való törlésre G L Q X Q D M T X A C E F H K N P R S U W Y Z 10.11

Példa B-fából való törlésre G L Q X P D M T X A C E F H K N R S U W Y Z 10.11

Példa B-fából való törlésre G L Q X P D K T X A C E F H M N R S U W Y Z 10.11

Példa B-fából való törlésre G L Q X P D K T X A C E F H M N R S U W Y Z 10.11

Példa B-fából való törlésre G L Q X P D K T W A C E F H M N R S U Y Z 10.11

Példa B-fából való törlésre G L Q X P D K W A C E F H M N R S T U Y Z 10.11

Példa B-fából való törlésre G L Q X D K P W A C E F H M N R S T U Y Z 10.11