Adatszerkezetek 7a. Dr. IványiPéter



Hasonló dokumentumok
Adatszerkezetek 2. Dr. Iványi Péter

Elemi adatszerkezetek

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

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

Algoritmusok és adatszerkezetek gyakorlat 07

Hierarchikus adatszerkezetek

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

Adatszerkezetek és algoritmusok

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

Kupac adatszerkezet. 1. ábra.

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

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

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

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

Körkörös listák. fej. utolsó. utolsó. fej

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.

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

Algoritmusok és adatszerkezetek gyakorlat 06 Adatszerkezetek

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

Információs Technológia

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

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

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

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

Információs Technológia

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

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

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

Algoritmuselmélet 2. előadás

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

... fi. ... fk. 6. Fabejáró algoritmusok Rekurzív preorder bejárás (elsőfiú-testvér ábrázolásra)

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

Gyakorló feladatok ZH-ra

Amortizációs költségelemzé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. 7.

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.

Algoritmusok bonyolultsága

A programozás alapjai 1 Rekurzió

A félév során előkerülő témakörök

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

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

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

Adatszerkezetek 1. előadás

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.

Algoritmuselmélet 1. előadás

Adatszerkezetek 2. Dr. Iványi Péter

Algoritmusok és adatszerkezetek II.

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

Példa 30 14, 22 55,

Rendezettminta-fa [2] [2]

Előfeltétel: legalább elégséges jegy Diszkrét matematika II. (GEMAK122B) tárgyból

Feladat. Ternáris fa. Típusspecikáció. Reprezentáció. Absztrakt implementáció. Érdi Gerg EAF II. 4/3.

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

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

Adatszerkezet - műveletek

Segédanyagok. Formális nyelvek a gyakorlatban. Szintaktikai helyesség. Fordítóprogramok. Formális nyelvek, 1. gyakorlat

Rekurzió. Dr. Iványi Péter

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

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

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

2. Visszalépéses stratégia

Adatszerkezetek Hasító táblák. Dr. Iványi Péter

Önszervező bináris keresőfák

Adatszerkezetek 1. Dr. Iványi Péter

Algoritmuselmélet 1. előadás

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

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

Hierarchikus adatszerkezetek

2018, Diszkrét matematika

Tuesday, March 6, 12. Hasító táblázatok

Alkalmazott modul: Programozás 4. előadás. Procedurális programozás: iteratív és rekurzív alprogramok. Alprogramok. Alprogramok.

30. ERŐSEN ÜSSZEFÜGGŐ KOMPONENSEK

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

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

Módosítható Prioritási sor Binomiális kupaccal. Wednesday, March 21, 12

Algoritmusok vektorokkal keresések 1

2. Visszalépéses keresés

Egyesíthető prioritási sor

Bonyolultságelmélet. Thursday 1 st December, 2016, 22:21

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

Térinformatikai adatszerkezetek

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

Adatszerkezetek és algoritmusok

Táblázatok fontosabb műveletei 1

Összetett programozási tételek Rendezések Keresések PT egymásra építése. 10. előadás. Programozás-elmélet. Programozás-elmélet 10.

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

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

3. gyakorlat Dinamikus programozás

Térinformatikai algoritmusok Elemi algoritmusok

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

Minimális feszítőfák Legyen G = (V,E,c), c : E R + egy súlyozott irányítatlan gráf. Terjesszük ki a súlyfüggvényt a T E élhalmazokra:

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

Bináris keres fák kiegyensúlyozásai. Egyed Boglárka

1. gyakorlat. Mesterséges Intelligencia 2.

Térinformatikai algoritmusok Elemi algoritmusok

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

Problémamegoldás kereséssel. Mesterséges intelligencia március 7.

Bonyolultságelmélet. Monday 26 th September, 2016, 18:50

Megoldás meghatározása Ez a szakasz kitölti a c és S táblázatokat, a kiíratás S alapján egy rekurzív algoritmussal megtehető.

2017/ Szegedi Tudományegyetem Informatikai Intézet

Átírás:

Adatszerkezetek 7a. Dr. IványiPéter 1

Fák Fákat akkor használunk, ha az adatok között valamilyen alá- és fölérendeltség van. Pl. könyvtárszerkezet gyökér () Nincsennek hurkok!!! 2

Bináris fák Azokat a fákat, amelyekben egy elemből csak két másik elembe mutat nyíl bináris fáknak nevezzük. A bináris fa Vagy üres fa Vagy egy olyan fa amelynek a bal és jobb oldali mutatója egy-egy bináris fára mutat Ez egy rekurzív definíció 3

Bináris fák Rekord { adat bal jobb } Elem 4

Bináris fák, példa alma korte szőlő barack szilva dió 5

Bináris kereső fa építése Helyezzük el az első elemet. Ha a következő elem kisebb, mint az előző akkor a gyökérelemtől balra helyezzük el, ha nagyobb akkor jobbra. A bevitt elemeket bejárva, ha a csomópontnál kisebb akkor balra menjünk, egyébként jobbra. 6

Példa Input: 5 5 7

Példa Input: 5 3 5 3 8

Példa 5 Input: 5 3 9 3 9 9

Példa 5 Input: 5 3 9 4 3 9 4 10

Példa 5 Input: 5 3 9 4 1 3 9 1 4 11

Példa 5 Input: 5 3 9 4 1 6 3 1 4 6 9 3 szint Legnagyobb elem 2 lépésben található meg Ha más sorrendben visszük be az elemeket más fát kapunk! 12

Példa 1 Input: 1 3 4 5 6 9 3 4 5 6 6szint Legnagyobb elem 6 lépésben található meg 9 13

Mélységi bejárás fákban 1. A gyökér csúcsból indulunk 2. Addig megyünk lefelé amíg lehetséges 3. Ekkor visszalépünk egyet 4. Ha most nem a gyökérben állunk akkor visszaugrunk a 2. Lépésre BACKTRACK technika (visszalépés) Másik módszer: Szélességi bejárás 14

Mélységi bejárás fákban Rekurzív függvénnyel a legszebb a megfogalmazás Függvény keres(bt) if bt == NIL return keres(bt->bal) nyomtat(adat) keres(bt->jobb) Függvény vége 15

Bejárási példa 5 3 9 1 4 6 Eredmény: 1 16

Bejárási példa 5 3 9 1 4 6 Eredmény: 1 3 17

Bejárási példa 5 3 9 1 4 6 Eredmény: 1 3 4 18

Bejárási példa 5 3 9 1 4 6 Eredmény: 1 3 4 5 19

Bejárási példa 5 3 9 1 4 6 Eredmény: 1 3 4 5 6 20

Bejárási példa 5 3 9 1 4 6 Eredmény: 1 3 4 5 6 9 (ZH kérdés) 21

Függvény 1. Függvény preorder(bt) if bt == NIL return /* csinálunk valamit */ preorder(bt->bal) preorder(bt->jobb) Függvény vége 22

Függvény 2. Függvény inorder(bt) if bt == NIL return inorder(bt->bal) /* csinálunk valamit */ inorder(bt->jobb) Függvény vége 23

Függvény 3. Függvény postorder(bt) if bt == NIL return postorder(bt->bal) postorder(bt->jobb) /* csinálunk valamit */ Függvény vége 24

Példa A B G C D E F Preorder: Inorder: Postorder: A B C D E F G C B E D F A G C E F D B G A 25

Matematikai kifejezéseknél / * G C + Postorder: C E F + * G / Preorder: / * C + E F G Inorder: ((C * (E + F)) / G) E F 26

Threaded Binary Tree A B G C D E F 27

Threaded Binary Tree Jobb mutató: a sorrendben (inorder) következő elemre mutat Bal mutató: a sorrendben (inorder) előző, felsőbb elemre mutat Gyorsabb, lineáris bejárást tesz lehetővé, nincs szükség rekurzióra Olyan esetben ha limitált a verem (stack) terület 28

Threaded Binary Tree1. A C B D G Jobb mutató: a sorrendben következő elemre mutat (inorder) E F C 29

Threaded Binary Tree2. A B G C D E F C B 30

Threaded Binary Tree3. A B G C D E F C B E 31

Threaded Binary Tree4. A B G C D E F C B E D 32

Threaded Binary Tree5. A B G C D E F C B E D F 33

Threaded Binary Tree6. A B G C D E F C B E D F A 34

Threaded Binary Tree7. A B G C D E F C B E D F A G 35

Bináris kereső fa A bináris kereső fákba gyorsan lehet adatot beilleszteni és adatot keresni Általában egy adat keresését egy N csomópontú fában log(n) idő alatt lehet végrehajtani Mivel különböző sorrendű adatok esetén különböző fát kapunk, rosszabb esetben lassabb az algoritmus (rosszul egyensúlyozott bináris fák) Egyensúlyozott fát kell létrehozni 36

Egyensúlyozás Alapművelet a forgatás balra jobbra 37

Forgatás Max szintek száma: 6 Max szintek száma: 5 (ZH kérdés) 38

Fákban vagy gráfokban Szélességi bejárás Egy tetszőleges csomópontból indulunk Minden lépésben a feldolgozandó csúcsokhoz hozzáadjuk a legutóbbi lépésben elért csúcsokat 39

Példa szélességi bejárásra 5 Lista: 5 3 9 1 4 6 Eredmény: 40

Példa szélességi bejárásra 3 5 9 Lista: 3 9 1 4 6 Eredmény: 5 41

Példa szélességi bejárásra 3 5 9 Lista: 9 1 4 1 4 6 Eredmény: 5 3 42

Példa szélességi bejárásra 3 5 9 Lista: 1 4 6 1 4 6 Eredmény: 5 3 9 43

Példa szélességi bejárásra 3 5 9 Lista: 4 6 1 4 6 Eredmény: 5 3 9 1 44

Példa szélességi bejárásra 5 Lista: 6 3 9 1 4 6 Eredmény: 5 3 9 1 4 45

Példa szélességi bejárásra 5 Lista: - 3 9 1 4 6 Eredmény: 5 3 9 1 4 6 46

Keresés, rekurzív Függvény keres(bt, k) if bt == NIL vagy bt->adat == k return bt if vége if k < bt->adat return keres(bt->bal, k) else return keres(bt->jobb, k) if vége Függvény vége O(h) : ahol h a fa magassága 47

Keresés, iteratív Függvény keres(bt, k) while bt!= NIL és k!= bt->adat if k < bt->adat bt = bt->bal else bt = bt->jobb if vége while vége Függvény vége 48

Minimum keresés Függvény min_faban(bt, k) while bt->bal!= NIL bt = bt->bal while vége return bt->adat Függvény vége O(h) : ahol h a fa magassága 49

Bináris fa Művelet Keresés Beillesztés Törlés Rendezés Átlagos eset O(log N) O(log N) O(log N) O(N) Legrosszabb eset O(N) O(N) O(N) O(N) 50

Piros-fekete fák Önegyensúlyozó bináris kereső fa Rudolf Bayer 1972-ben Hatékony, O(log N) 51