Algoritmusok elmélete előadások tartalma
.
2003 ősz, keresztfélév

Igyekszem azt feltenni ide, ami az előadáson történik, de lehetnek benne hibák. Az anyag az, ami az előadáson elhangzik.

1. elõadás (szeptember 16.)

Tudnivalók a félévről;
Bevezető az algoritmusokról, hatékonyságuk mérése: ordó, omega, theta; Rekurziós formulákból zárt képlet kinyerése;
Néhány példa: mobilátjátszók frekvenciakiosztása, Artúr király házasítása, szuperforrás keresésére két algoritmus és alsó becslés is a legjobb algoritmus lépésszámára;
Rendezési reláció és rendezett halmaz definíciója, a rendezési feladat ismertetése

2. elõadás (szeptember 19.)

Keresés rendezett halmazban (lineáris és bináris keresés), alsó becslés a lépésszámra;
Buborékrendezés, összehasonlítások és mozgatások száma; Beszúrásos rendezés, összehasonlítások és mozgatások száma lineáris és bináris keresés esetén;
Alsó becslés összehasonlításalapú rendezések esetén az összehasonlítások számára;
Rendezett sorozatok összefésülése, össszefésüléses rendezés, összehasonlítások és mozgatások száma;
Kupac adatszerkezet, ennek implementációjaként bináris kupac;

3. elõadás (szeptember 26.)

Bináris kupac, az építés, a beszúrás és a mintör, ezek költségei; kupacos rendezés.
Gyorsrendezés
k-adik elem kiválasztása (lineáris algoritmus ismertetése nem)
Kulcsmanipulációs rendezések: ládarendezés

4. elõadás (október 1.)

Radixrendezés
Párhuzamos rendezés: Batcher-féle páros-páratlan összefésülés
Bináris fák bejárásai: pre-, in- és posztorder
Bináris keresőfák, keresés, beszúrás, törlés, faépítés

5. elõadás (október 3.)

Kiegyensúlyozott fák: AVL-fák (szintszám, forgatások, műveletek), HB[k]-fák, súlyra kiegyensúlyozott fák
Kis mese az önszerveződő fákról

6. elõadás (október 15.)

Önszerveződő fák: S-fa
2-3 fák: szintszám, műveletek
B-fák: szintszám, műveletek, miért jó

7. elõadás (október 17.)

Hash: alapelv, megoldandó problémák
Vödrös hash
Nyílt címzés:lineáris próba, álvéletlen próbálás (kvadratikus maradék próba), kettős hash
Hash függvények
Szekvenciális keresés
Gráfalgoritmusokról általában, gráfok megadásai: mátrixos és éllistás

8. elõadás (október 18.)

Legrövidebb utak kereséséről általában
Dijkstra algoritmus, utak nyomonkövetésével is, lépésszám mátrixos és éllistás megadás esetén
Bellman-Ford algoritmus, utak nyomonkövetése is, lépésszám mátrixos megadással

9. elõadás (október 29.)

Floyd algoritmusa legrövidebb utak keresésére, utak nyomonkövetése is, lépésszám mátrixos megadással
Tranzitív lezárás, Warshall algoritmus
Gráfbejárások, mélységi és szélességi bejárás elve
Szélességi bejárás, az élek osztályozása irányított és irányítatlan gráf esetén
Legrövidebb utak meghatározása szélességi bejárással, ha minden élsúly azonos

10. elõadás (október 31.)

Mélységi bejárás, számozás, az élek osztályozása irányított és irányítatlan gráf esetén
Irányított, körmentes gráfok (DAG), a DAG-ság tesztelése mélységi bejárással
Topologikus sorrend, elkészítése, legrövidebb és leghosszabb utak keresése DAG-ban

11. elõadás (november 12.)

Minimális feszítőfa keresése: piros-kék algoritmus
Prim algoritmusa naív és kupacos implementációval
Kruskal algoritmusa, megvalósítás Únió-Holvan fákkal

12. elõadás (november 14.)

Kruskal módszerének javítása, Boruvka módszere
Maximális párosítás keresése páros gráfban a magyar módszerrel, az algoritmus lépésszáma

Turing-gép definíciója, működése, elfogadás és kiszámítás Turing-géppel
Példák
Rekurzív és rekurzívan felsorolható nyelvek, R és RE nyelvosztály
Church-Turing tézis

13. elõadás (november 21.)

Rekurzív és parciálisan rekurzív függvény fogalma
Nem rekurzívan felsorolható nyelv létezése
Turing-gépek kódolása, univerzális Turing-gép létezése
Nehéz nyelvek bonyolultsága: diagonális nyelv, univerzális nyelv, megállási nyelv, Hilbert 10. problémája, Dominó-probléma, Post megfeleltetési feladat, környezetfüggetlen nyelvtanok egyértelműsége

14. elõadás (november 26.)

A coX nyelvosztály definíciója
Kapcsolat az R, RE, coR és coRE nyelvosztályok között; L rekurzívan felsorolható pontosan akkor, ha egy Turing gép felsorolja a szavait kimenetként
Tár és időkorlátok, tár és időkorlátos Turing-gépek, TIME(t(n)) és SPACE(s(n)) osztályok definíciója, P, PSPACE, EXPTIME definíciója
k-szalagos Turing-gép szimulálása 1-szalagossal, az idő és tárkorlát változása eközben
Tár-idő tétel állítása és ennek következményei

15. elõadás (november 28.)

Tár-idő tétel bizonyítása és a tétel további következményei
Nemdeterminisztikus Turing-gépek, elfogadott nyelv, időkorlátosság
Az NP nyelvosztály definíciója, P, NP és coNP kapcsolata
Felismerés súgással
Tanú tétel és bizonyítása

16. elõadás (december 5.)

Tanú tétel következményei, példák NP-beli nyelvekre: 3-SZIN, H, SIK, prímek
Karp-redukció, értelmezése, példa: 3-SZIN visszavezetése 4-SZIN-re
Karp-redukció tulajdonságai
NP-teljesség

17. elõadás (december 10.)

Cook-Levin tétel, a bizonyítás vázlata
Az alábbi nyelvek és NP teljességük: 3-SAT, k-SAT, 3-SZIN, k-SZIN, MAXFTLEN, MAXKLIKK, H, IH, Utazóügynök

18. elõadás (december 12.)

Miért érdekesek az NP-teljes nyelvek?
További NP-teljes problémák: 3DH, X3C, Hátizsák, Részhalmaz-összeg, Partíció, Ládapakolás
Általános algoritmustervezési technikák:
dinamikus programozás: korábbi példák (Bellman-Ford, Floyd, Cocke-Younge-Kasami formális nyelvekből), hátizsák probléma megoldása kis súlyok esetén
közelítő algoritmusok (minimális lefogó ponthalmaz, ládapakolás FF és FFD algoval).

19. elõadás (december 13.)

Randomizált algoritmusok, példa a prímtesztelés Fermat-féle prímtesztttel
Kolmogorov bonyolultság: adott Turing-gépre vett bonyolultság, Invariancia tétel, a Kolmogorov-bonyolultság definíciója, a C függvény nem-rekurzivitása, összenyomhatatlan szavak, ilyenek létezése
RAM-gépek, költségszámításuk: uniform és logaritmikus költség, szimuláció Turing-gép es RAM-gép között