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



Hasonló dokumentumok
Algoritmuselmélet 2. előadá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.

Algoritmusok és adatszerkezetek gyakorlat 07

Adatszerkezetek és algoritmusok

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

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. Katona Gyula Y. Számítástudományi és Információelméleti Tanszék Budapesti Műszaki és Gazdaságtudományi Egyetem. 7.

Adatszerkezetek 7a. Dr. IványiPéter

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

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

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

Kupac adatszerkezet. 1. ábra.

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

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

Hierarchikus adatszerkezetek

Elemi adatszerkezetek

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

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

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

Gyakorló feladatok ZH-ra

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

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

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

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

Információs Technológia

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

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

Gyakori elemhalmazok kinyerése

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

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

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

Rendezések. A rendezési probléma: Bemenet: Kimenet: n számot tartalmazó (a 1,a 2,,a n ) sorozat

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

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

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

Adatszerkezetek 2. Dr. Iványi Péter

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

Algoritmusok és adatszerkezetek gyakorlat 06 Adatszerkezetek

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

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

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

Rendezettminta-fa [2] [2]

A számítástudomány alapjai

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

Algoritmuselmélet 1. előadás

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

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

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

15. A VERSENYRENDEZÉS

Algoritmuselmélet 1. 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

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

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

Példa 30 14, 22 55,

Struktúra nélküli adatszerkezetek

Adatszerkezetek 1. előadás

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

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

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

Algoritmusok és adatszerkezetek gyakorlat 09 Rendezések

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

Egyirányban láncolt lista

Hierarchikus adatszerkezetek

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

Általános algoritmustervezési módszerek

Tartalomjegyzék. Algoritmuselmélet előadás jegyzet

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

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

Számjegyes vagy radix rendezés

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

Programozás I. C nyelv

Egyesíthető prioritási sor

Gráfok, definíciók. Gráfok ábrázolása. Az adott probléma megoldásához ténylegesen mely műveletek szükségesek. Ábrázolások. Példa:

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

Algoritmuselmélet 11. 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.

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

Önszervező bináris keresőfák

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

Algoritmuselmélet zárthelyi (BSc képzés) április 24.

30. ERŐSEN ÜSSZEFÜGGŐ KOMPONENSEK

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.

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

Adatszerkezetek és algoritmusok

1. ábra. Számláló rendezés

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

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

Térinformatikai adatszerkezetek

Információk. Ismétlés II. Ismétlés. Ismétlés III. A PROGRAMOZÁS ALAPJAI 2. Készítette: Vénné Meskó Katalin. Algoritmus. Algoritmus ábrázolása

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.

INFORMATIKA javítókulcs 2016

Algoritmusok bonyolultsága

Adatszerkezet - műveletek

Programozási segédlet

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

Algoritmusok és adatszerkezetek II.

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

3. gyakorlat Dinamikus programozás

Átírás:

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 Bináris keresőfa, kupac Katona Gyula Y. (BME SZIT) A számítástudomány alapjai Bináris keresőfa, kupac / Bináris fa adatszerkezet bal fiú jobb fiú x x x x x x x x x x x x Láncolt lista Bináris fa Műveletek: gyökér, bal-fiú, jobb-fiú, keres, beszúr, töröl Katona Gyula Y. (BME SZIT) A számítástudomány alapjai Bináris keresőfa, kupac /

Bináris fa (Binary tree) Fa csúcsai elem(x), bal(x), jobb(x) esetleg apa(x) és reszfa(x) (=az x gyökerű fészfa csúcsainak száma) * + 5 ha x a gyökér, y pedig a -es csúcs, akkor bal(jobb(x)) = y, apa(apa(y)) = x, elem(bal(x)) =, reszfa(x) = 7, reszfa( ) = 3. Katona Gyula Y. (BME SZIT) A számítástudomány alapjai Bináris keresőfa, kupac 3 / Bináris fa bejárásai pre(x) in(x) post(x) begin begin begin látogat(x); in(bal(x)); post(bal(x)); pre(bal(x)); látogat(x); post(jobb(x)); pre(jobb(x)) in(jobb(x)) látogat(x) end end end + * 5 ha x a gyökér, y pedig a -es csúcs, akkor PREORDER: + 5 INORDER: 5 + POSTORDER: 5 + Lépésszám: cn Katona Gyula Y. (BME SZIT) A számítástudomány alapjai Bináris keresőfa, kupac /

Bináris keresőfa (Binary search tree) Tároljuk az U rendezett halmaz elemeit, hogy BESZÚR, TÖRÖL, KERES, MIN, (MAX, TÓLIG) hatékonyak legyenek. Definíció (Keresőfa-tulajdonság) Tetszőleges x csúcsra és az x baloldali részfájában levő bármely y csúcsra igaz, hogy elem(y) elem(x). Hasonlóan, ha z egy csúcs az x jobb részfájából, akkor elem(x) elem(z). 0 3 Házi feladat: Igazoljuk, hogy egy bináris keresőfa elemeit a fa inorder bejárása növekvő sorrendben látogatja meg. Egy kényelmes megállapodás: a továbbiakban feltesszük, hogy nincsenek ismétlődő elemek a keresőfában. Katona Gyula Y. (BME SZIT) A számítástudomány alapjai Bináris keresőfa, kupac 5 / Algoritmusok KERES(s,S): Összehasonlítjuk s-et S gyökerével s -vel. Ha s = s, akkor megtaláltuk. Ha s < s, akkor balra megyünk tovább. KERES(, S) Ha s > s, akkor jobbra megyünk. Ugyanezt az utat járjuk be a KERES(5, S) kapcsán, de azt nem találjuk meg. Lépésszám: cl, ahol l a fa mélysége MIN: mindig balra lépünk, amíg lehet MAX: mindig jobbra lépünk, amíg lehet Lépésszám: cl TÓLIG(a, b, S): KERES(a, S) = INORDER a-tól b-ig Lépésszám: cn Katona Gyula Y. (BME SZIT) A számítástudomány alapjai Bináris keresőfa, kupac /

BESZÚR BESZÚR(s, S): KERES(s, S)-sel megkeressük hova kerülne és új levelet adunk hozzá, pl. BESZÚR(3, S): = 3 Lépésszám: cl Katona Gyula Y. (BME SZIT) A számítástudomány alapjai Bináris keresőfa, kupac 7 / Faépítés beszúrásokkal Ha pl. az,,..., n sorozatból építünk fát így, akkor ezt kapjuk: Az építés költsége: + 3 +... + (n ) = cn 3 n Tétel Ha egy véletlen sorozatból építünk fát naiv beszúrásokkal, akkor az építés költsége átlagosan c(n log n). A kapott fa mélysége átlagosan c log n. Katona Gyula Y. (BME SZIT) A számítástudomány alapjai Bináris keresőfa, kupac /

Rendezés bináris keresőfával Építsünk keresőfát beszúrásokkal. Költsége: Legrosszabb esetben cn, átlagosan c(n log n). INORDER bejárással kilistázzuk az elemeket Költsége: cn. Költsége összesen: Legrosszabb esetben cn + cn cn, átlagosan c(n log n) + cn c(n log n). Katona Gyula Y. (BME SZIT) A számítástudomány alapjai Bináris keresőfa, kupac / Kupac (Heap) adatszerkezet Egész számok egy S véges részhalmazát szeretnénk tárolni, hogy a beszúrás és a minimális elem törlése (mintör) hatékony legyen. Alkalmazások: Jobok indítása Több rendezett halmaz összefésülése Gyors rendezési algoritmus gyökér Teljes bináris fa: levelek Katona Gyula Y. (BME SZIT) A számítástudomány alapjai Bináris keresőfa, kupac 0 /

Bináris fa ábrázolása tömbbel A fa csúcsai az A[ : n] tömb elemei. Az A[i] csúcs bal fia A[i], a jobb fia pedig A[i + ]. = A[j] csúcs apja A[ j/ ] 5 7 Kupac tulajdonság: apa < fia 5 7 Katona Gyula Y. (BME SZIT) A számítástudomány alapjai Bináris keresőfa, kupac / Kupacépítés a c b kupacol(f ) { Ha min{a, b} < c, akkor min{a, b} és c helyet cserél Ha a c elem a-val cserélt helyet, akkor kupacol(f ), ha b-vel, akkor kupacol(f ) } f f f és f kupacok c addig megy lefelé, amig sérti a kupac tulajdonságot. Lépésszám: Ha l a fa szintjeinek száma, akkor l csere és (l ) összehasonlítás kupacépítés(f ) { Az f fa v csúcsaira lentről felfelé, jobbról balra kupacol(v). } Az előbbi sorrend a kupac tömb reprezentációjában épp a jobbról balra sorrendet jelenti. Katona Gyula Y. (BME SZIT) A számítástudomány alapjai Bináris keresőfa, kupac /

Kupac mélysége Bináris fában:. szint: pont. szint: pont 3. szint: pont. l -edik szint: l pont l-edik szint: > és l pont = n + l i=0 i = l = l + log n Tétel Kupacépítés költsége: cn Katona Gyula Y. (BME SZIT) A számítástudomány alapjai Bináris keresőfa, kupac 3 / MINTÖR A minimális elem az f gyökerében van, ezt töröljük. Helyére tesszük a fa utolsó szintjének jobb szélső elemét, majd kupacol(f ). 5 5 5 Költség: cl = c(log n) Katona Gyula Y. (BME SZIT) A számítástudomány alapjai Bináris keresőfa, kupac /

BESZÚR Új levelet adunk a fához (ügyelve a teljességre), ide tesszük az s elemet. Ezután s-et mozgatjuk felfelé, mindig összehasonlítjuk az apjával. 5 5 5 Költség: cl = c(log n) Katona Gyula Y. (BME SZIT) A számítástudomány alapjai Bináris keresőfa, kupac 5 / A kupacos rendezés (heap sort) Először kupacot építünk, utána n darab MINTÖR adja nem csökkenő sorrendben az elemeket. [J. W. J. Williams és R. W. Floyd, ] Költség: c n + c (n log n) = c 3 (n log n) Legjobb ismert rendező algoritmus. Pontos implementációval: n log n + 3n (összehasonlítások száma) és n log n +, 5n (cserék száma). Katona Gyula Y. (BME SZIT) A számítástudomány alapjai Bináris keresőfa, kupac /