Algoritmusok és Adatszerkezetek II.

Hasonló dokumentumok
Algoritmusok és Adatszerkezetek II. előadás

Algoritmusok és adatszerkezetek II.

Algoritmusok és adatszerkezetek II.

Példa 30 14, 22 55,

Rendezettminta-fa [2] [2]

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

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

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

Algoritmusok és adatszerkezetek gyakorlat 07

Adatszerkezet - műveletek

Önszervező bináris keresőfák

Algoritmusok és adatszerkezetek II.

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

Elemi adatszerkezetek

Algoritmusok és adatszerkezetek II.

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

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

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

ÖNSZERVEZŐ BINÁRIS KERESŐFÁK HATÉKONYSÁGA

Adatszerkezetek 7a. Dr. IványiPéter

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

Algoritmusok és adatszerkezetek II.

4. Előfeltételek (ha vannak) 4.1 Tantervi Nincs 4.2 Kompetenciabeli Elemi algoritmusok ismerete

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

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

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

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

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

A kurzus teljesítésének feltételei. Az I404 kódú kurzus teljesítéséhez meg kell oldani egy otthoni feladatot, határidő április 30.

Adatszerkezetek 1. előadás

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

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

Kupac adatszerkezet. 1. ábra.

4. Előfeltételek (ha vannak) 4.1 Tantervi Nincs 4.2 Kompetenciabeli Feladatok kijelentéseinek megérté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.

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

Hierarchikus adatszerkezetek

Egyesíthető prioritási sor

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

Approximációs algoritmusok

Adatbázis rendszerek Info MÁTRIX

Gelle Kitti Algoritmusok és adatszerkezetek gyakorlat - 07 Hasítótáblák

FÉLÉVI KÖVETELMÉNYEK 2010/2011. tanév II. félév INFORMATIKA SZAK

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

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

Gráfok 2. Legrövidebb utak, feszítőfák. Szoftvertervezés és -fejlesztés II. előadás. Szénási Sándor

Adatszerkezetek és algoritmusok

Gráfalgoritmusok és hatékony adatszerkezetek szemléltetése

Biomatematikai Tanszék

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

Egyesíthető prioritási sor

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

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.

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

Algoritmuselmélet 2. előadás

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

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

KÖVETELMÉNYEK 2017/ félév. Informatika II.

1: Bevezetés: Internet, rétegmodell Alapok: aszimptótika, gráfok. HálózatokII, 2007

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

Korlátozás és szétválasztás elve. ADAGOLO adattípus

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

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

Algoritmizálás. Horváth Gyula Szegedi Tudományegyetem Természettudományi és Informatikai Kar

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

Döntési módszerek Tantárgyi útmutató

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

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

Operációkutatás II. Tantárgyi útmutató

A programozás alapjai előadás. Amiről szólesz: A tárgy címe: A programozás alapjai

KÖVETELMÉNYRENDSZER NÖVÉNYTERMESZTÉSTANBÓL 2013/2014. tanév 1. félévében

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

Rekurzió. Horváth Gyula.

Információs Technológia

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

Programozás II. 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

A tanulmányok alatti vizsgák helyi rendje

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

INFORMATIKA javítókulcs 2016

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

10. Gráf absztrakt adattípus, gráfok ábrázolása

Térinformatikai adatszerkezetek

A gráffogalom fejlődése

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

TANTÁRGYI ADATLAP. 2.7 A tantárgy jellege DI

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

Adatbázis rendszerek Gy: Algoritmusok C-ben

Számítógép hálózatok, osztott rendszerek 2009

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

Adatszerkezetek 2. Dr. Iványi Péter

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

angolul: greedy algorithms, románul: algoritmi greedy

Döntési módszerek Tantárgyi útmutató

TANTÁRGYI ÚTMUTATÓ. Nemzetközi gazdaságtan. tanulmányokhoz

Diszkrét matematika 2.C szakirány

Programozás. Bevezetés. Fodor Attila. Pannon Egyetem Műszaki Informatikai Kar Villamosmérnöki és Információs Rendszerek Tanszék

MINŐSÉGÜGY. ANYAGMÉRNÖK BSC KÉPZÉS SZAKMAI TÖRZSANYAG (nappali munkarendben) TANTÁRGYI KOMMUNIKÁCIÓS DOSSZIÉ

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

A tanulmányok alatti vizsgák helyi rendje

Átírás:

Algoritmusok és Adatszerkezetek II. előadás

Felelős tanszék: Számítógépes algoritmusok és mesterséges intelligencia tanszék Nappali tagozaton: Előadás: heti 2 óra / 5 kredit. Teljesítés módja: Kollokvium. Gyakorlat: heti óra / 0 kredit. Teljesítés módja: Aláírás. A kurzus felvételének előfeltételei : Algoritmusok és adatszerkezetek I., Megoldás szisztematikus keresése visszalépéssel (pénzváltás, n királynő). Megoldás szisztematikus keresése elágazás-korlátozással (pénzváltás, ütemezés). Tördelőtáblák (hasítótáblák). Kiegyensúlyozott keresőfák. AVL fák. Piros-fekete fák. Az RHalmaz adattípus megvalósítása ugrólistával (Skiplist). B-fák. Diszjunkt halmazok kezelése, az UnioHolvan adattípus. Geometriai algoritmusok. Amortizációs költségelemzés. Binomiális kupacok. Az egyesíthető prioritási sor megvalósítása Fibonacci-kupaccal. Mintaillesztés; a Knuth-Morris-Pratt algoritmus. Számelméleti algoritmusok, nyilvános kulcsú titkosítás. Közelítő algoritmusok.

Ajánlott irodalom: [] T. H. Cormen, C. E. Leiserson, R.L. Rivest: Algoritmusok, Műszaki Könyvkiadó, 2003. [2] T. H. Cormen, C. E. Leiserson, R.L. Rivest, C. Stein: Új algoritmusok, Scolar Kiadó, 2003. [3] T. Ottman, P. Widmayer: Algoritmen und Datenstrukturen, Wissenschaftsverlag, 990 [4] E. Knuth: A számitógépprogramozás művészete, 3. Kötet, Műszaki Könyvkiadó, 990. [5] A. V. Aho, J. E. Hopcroft, J. D. Ullman: Számítógép-algoritmusok tervezése és analízise,műszaki Könyvkiadó, 982. [6] G. Gonnet, R. Baeza-Yates: Handbook of algorithms and data structures. In Pascal and C., Addison-Wesley. 99. [7] R. Sedgewick: Algoritms in C++, Addison-Wesley. 99. [8] E. Horowitz, S. Shani: Fundamentals of Computer Algorithms, Computer Science Press, 998. [9] Adonyi Róbert: Adatstruktúrák és algoritmusok (letölthető jegyzet)

A kurzus teljesítésének feltételei: Évközi számonkérés. a) Gyakorlaton teljesítendő 0 rövid írásbeli dolgozat a 2., 3., 4., 6., 7., 8., 9. és. gyakorlaton. Elérhető maximális pontszám: 40 Teljesítendő minimális pontszám: 4 b) Gyakorlaton teljesítendő 2 írásbeli dolgozat az 5. és 0. gyakorlaton. Elérhető maximális pontszám: 30/dolgozat Teljesítendő minimális pontszám: 0 Elérhető maximális pontszám (a+b): 00 Teljesítendő minimális pontszám (a+b): 35

A kurzus teljesítésének feltételei: Kollokvium Elérhető maximális pontszám: 00. A kollokvium 3 részből áll: A. 5 kérdés a kurzus anyagát lefedő témakörökből. Elérhető maximális pontszám: 40 Teljesítendő minimális pontszám: 0 B. Teljesen kidolgozandó tétel. Elérhető maximális pontszám: 30 Teljesítendő minimális pontszám: 0 C. Gyakorlati feladatok megoldása. Elérhető maximális pontszám: 30 Teljesítendő minimális pontszám: 0 Érdemjegy. 75-200 jeles (5) 50-74 jó (4) 25-49 közepes (3) 00-24 elégséges (2) 0-99 elégtelen ()

Megjegyzések. Aki az. feltételt nem teljesíti, az a vizsgaidõszak. hetében javító dolgozatot írhat. A hallgató csak akkor jelentkezhet kollokviumra, ha a javító dolgozattal megszerezhetõ max. 50 pontból min. 25 pontot teljesít. A javító dolgozattal szerzett pont nem számít be sem az. részbe, sem az összpontszámba. Aki a dolgozatok írása közben nem megengedett segédeszközt használ, vagy ennek gyanuja felmerül, az a következõ vizsgákon írásbeli vizsga helyett szóbeli vizsga letételére kötelezhetõ, vagy az írásbeli vizsgáját szóban kell megvédenie. Az előadások látogatása kötelező. Akinek az igazolatlan hiányzása meghaladja a 3 alkalmat, az nem vizsgázhat! Csak előre jelzett hiányzás igazolható, vagy baleseti jegyzőkönyv/korházi pecsét szükséges!

Motiváció PTI BSC Záróvizsga tételek: Algoritmusok és adatszerkezetek I.. Gráf algoritmusok (mélységi és széltében keresés, erősen összefüggő komponensek, minimális feszítőfák, legrövidebb utak). 2. Probléma megoldási módszerek (dinamikus programozás, mohó stratégia). Algoritmusok és adatszerkezetek II. 3. Keresőfák (AVL-fák, Piros-fekete fák, B-fák). 4. Geometriai alapalgoritmusok (pont helyzete, konvex burok, ponthalmaz legközelebbi és legtávolabbi pontpárja, metsző szakaszpárok keresése). Algoritmusok tervezése, hatékony adatszerkezetek működésének ismerete

Szakmai gyakorlat Németországban Fraunhofer Institute for Integrated Circuits IIS Nordostpark 93 904 Nuremberg Germany Erasmus ösztöndíj 300 EUR Fraunhofer ösztöndíj 850 EUR Szállás, étkezés biztosítva Elsősorban Programtervező Informatikus vagy Mérnökinformatikus szakkal

Adatszerkezetek Halmaz, Rhalmaz, Függvény absztrakt adatszerkezet, Rendezett minta Prioritási sor, Egyesíthető prioritási sor absztrakt adatszerkezet Halmazerdő adatszerkezet

Bináris keresőfa fázunk... [2] 232-24

Bináris keresőfa 2 9 29 4 7 24 37 6 3 20 22 27 3 43

Bináris keresőfa 2 9 29 4 7 24 37 6 3 20 22 27 3 43 (-,) (,4) (4,6) (6,9) (9,3) (3,7) (7,20) (20,2) (2,22) (22,24) (24,27) (27,29) (29,3) (3,37) (37,43) (43, )

Fapont tárolása első megközelítés, a gyakorlatban nem így tároljuk! struct fapont{ int key, value ; fapont bal, jobb, apa ; apa key balfiu value jobbfiu

Bináris fa tárolása első megközelítés, a gyakorlatban nem így van! public class fa { int elemszam ; struct fapont{ int key, value ; fapont bal, jobb, apa ; fapont nil, gyoker ; void fa() { fapont q = new fapont() ; nil=q ; gyoker=q ; elemszam=0 ; boolean beszur(int x, int v) {...... nil nil gyoker k v beszur(5, 8) 5 8 k v gyoker

Keresés keresőfában 2 27 9 29 4 7 24 37 6 3 20 22 27 3 43 (-,) (,4) (4,6) (6,9) (9,3) (3,7) (7,20) (20,2) (2,22) (22,24) (24,27) (27,29) (29,3) (3,37) (37,43) (43, )

Keresés keresőfában 2 26 9 29 4 7 24 37 6 3 20 22 27 3 43 (-,) (,4) (4,6) (6,9) (9,3) (3,7) (7,20) (20,2) (2,22) (22,24) (24,27) (27,29) (29,3) (3,37) (37,43) (43, )

fapont keres(int x) { fapont p=gyoker ; nil.key=x ; while (p.key!=x) p=x<p.key?p.bal:p.jobb ; return p; gyökér 2 [3] 254 q=keres(6) ; 9 29 4 7 24 37 6 3 20 22 27 3 43 nil 6

Beszúrás keresőfába 2 26 9 29 4 7 24 37 6 3 20 22 27 3 43 (-,) (,4) (4,6) (6,9) (9,3) (3,7) (7,20) (20,2) (2,22) (22,24) (24,27) (27,29) (29,3) (3,37) (37,43) (43, ) (24,26) (26,27)

5 8 5 8 5 8 3 nil nil nil

boolean beszur(int x, int v) { fapont p,papa ; p=gyoker ; papa=nil ; while (p!=nil && p.key!=x) { papa=p ; if (x<p.key) p=p.bal; else p=p.jobb; if (p==nil) { fapont ujpont = new fapont(); if (gyoker==p) gyoker=ujpont ; nil ujpont.key=x ; ujpont.value=v ; ujpont.bal=nil; ujpont.jobb=nil; ujpont.apa=papa; if (papa!=nil) { if (x>papa.key) papa.jobb=ujpont; else papa.bal=ujpont; elemszam++ ; return true ; else { p.value=v ; beszur(3,9) ; return false ; nil 3 9 5 8????? 5 8????? gyoker

Elem rákövetkezője 2 9 29 4 7 24 37 3 20 27 3 43

p rákövetkezője p p p

p rákövetkezője fapont kovetkezo(fapont p) { if (p.jobb!=nil) { //ha van jobb részfa p=p.jobb ; //akkor a jobb részfa while (p.bal!=nil) p=p.bal;//bal szélső eleme return p; else { // ha nincs jobb fiú while (p.apa!=nil) { // amíg van apa if (p.apa.bal==p) // ha p bal gyerek return p.apa; // p apja a rákövetkező p=p.apa ; // megyünk felfelé p-vel ; return nil ; // nincs rákövetkező

Törlés bináris keresőfából p q

2 void torol(fapont p) { if (p.jobb!=nil) { fapont q=kovetkezo(p) ; p.key=q.key ; p.value=q.value ; q.apa.bal=q.jobb ; q.jobb.apa=q.apa ; delete q ; else {... p q 24 29 37 27 3 43

void torol(fapont p) { if (p.jobb!=nil) { fapont q=kovetkezo(p) ; p.key=q.key ; p.value=q.value ; q.apa.bal=q.jobb ; q.jobb.apa=q.apa ; delete q ; else { if (p.apa.jobb==p) p.apa.jobb=p.bal ; else p.apa.bal=p.bal ; p.bal.apa=p.apa ; delete p ; p

Elem törlése példa 2 9 29 4 7 24 37 3 20 27 3 43

Bináris fák tárolása csúcsonkét 2 pointer és egy bit, mely azt jelöli, hogy bal, vagy jobb gyerek. pointer bal gyerek, ha létezik jobb gyerek, ha csak az létezik. nil: ha egyáltalán nincs gyereke. 2. pointer ha ő maga bal gyerek, akkor a testvérre mutat, ha az létezik, különben a szülőre. ha jobb gyerek: a szülőre mutat. gyökérben nil

Fapont tárolása struct fapont<k,v>{ <K> key ; <V> value ; fapont fiu, tespa ; boolean bal ;

Bináris keresőfák jellemzői p gyökerű részfa belső pontjainak száma int s(fapont p) { if (p==nil) return 0 ; return +s(p.bal)+s(p.jobb) ; p gyökerű részfa magassága int h(fapont p) { if (p==nil) return 0 ; return +Math.max(h(p.bal),h(p.jobb)) ;

Véletlen építésű bináris keresőfa Adott n egymástól különböző kulcs, melyekből bináris keresőfát építünk úgy, hogy a kulcsokat valamilyen sorrendben egymás után beszúrjuk a kezdetben üres fába. Ha itt minden sorrend, vagyis az n kulcsnak mind az n! permutációja egyformán valószínű, akkor a kapott fát véletlen építésű bináris keresőfának nevezzük. Tétel: Egy n különböző kulcsot tartalmazó véletlen építésű bináris keresőfa várható magassága O(log2n). [2] 24-244

Optimális bináris keresőfa Adott kulcsoknak egy K=(k,...,kn) sorozata Minden ki kulcshoz ismert annak pi előfordulási valószínűsége Minden di intervallumhoz ismert annak qi előfordulási valószínűsége, hogy arra az intervallumra keresünk (sikertelen keresésekhez) Optimális bináris keresőfa építhető (pl. dinamikus programozás módszerével) Építés: O(n 2 ) [2] 34-32

Bináris fa inorder bejárása function bejar(p){ if (p.bal!=nil) bejar(p.bal) ; muvelet(p) ; if (p.jobb!=nil) bejar(p.jobb) ;

5 function bejar(p){ if (p.bal!=nil) bejar(p.bal) ; muvelet(p) ; if (p.jobb!=nil) bejar(p.jobb) ; 3 7 function bejar(p){ if (p.bal!=nil) bejar(p.bal) ; muvelet(p) ; if (p.jobb!=nil) bejar(p.jobb) ; 5 3 7 4 6 46 function bejar(p){ if (p.bal!=nil) bejar(p.bal) ; muvelet(p) ; if (p.jobb!=nil) bejar(p.jobb) ; rang(p) 2 3 4 5 3 4 5 6 6 7

Rendezettminta-fa Minden p ponthoz tároljuk p gyökerű fa belső pontjainak számát (méretét) Adott rangú elem keresése - T[r] Adott elem rangjának meghatározása [2] 272-277 Egyéb bővítési lehetőségek (pl. intervallumfák) [2] 279-285

Példa 26 20 4 7 7 2 2 4 30 5 4 7 47 0 4 6 2 9 2 2 28 38 3 7 2 2 4 20 35 39 3

Adott rangú elem keresése 30 5 4 7 47 rmkeres(p,x) { r=p.bal.meret+ ; if (x==r) return p ; 28 35 38 3 39 if (x<r) return rmkeres(p.bal,x) ; else return rmkeres(p.jobb,x-r) ;

Elem rangjának meghatározása 30 5 4 7 47 rmrang(p) { r=p.bal.meret+ ; y=x ; while (y!=gyoker) { if (y==y.apa.jobb) r+=y.apa.bal.meret+; y=y.apa ; return r ; 28 35 38 3 39

Méret információ fenntartása beszjav(p) { while (p!=gyoker) { p=p.apa; p.meret++ ; 28 30 56 38 34 4 78 47 torljav(p) { while (p!=gyoker) { p=p.apa; p.meret-- ; 35 39 2 40

Fapont tárolása első megközelítés, a gyakorlatban nem így tároljuk! struct fapont{ int key, v, meret ; fapont bal, jobb, apa ; apa key balfiu v meret jobbfiu

Köszönöm a figyelmet! Referenciák [] T. H. Cormen, C. E. Leiserson, R.L. Rivest: Algoritmusok, Műszaki Könyvkiadó, 2003. [2] T. H. Cormen, C. E. Leiserson, R.L. Rivest, C. Stein: Új algoritmusok, Scolar Kiadó, 2003. [3] T. Ottman, P. Widmayer: Algoritmen und Datenstrukturen, Wissenschaftsverlag, 990