Algoritmy a automaty pro učitele

V zimním semestru 2025/2026 přednáším Algoritmy a automaty pro učitele [NUIN021]. To předmět, který spojuje části Algoritmů a datových struktur 2 [NTIN061] a Automatů a gramatik [NTIN071]. Primárně je určený pro posluchače studia učitelství, ale může být zajímavý i pro studenty neinformatických oborů, kteří už absolvovali nějaký základní kurs programování a algoritmů (například v podobě Programování 1 a 2 pro matematiky).

Přednáška se koná ve středy od 15:40 v S11 S322, cvičení následuje po přednášce.

Pokud chcete cokoliv konzultovat, napište mi prosím e-mail na mares@kam.mff.cuni.cz a domluvíme se.

datum co se přednášelo
1. 10. Toky v sítích: Formulace problému. Fordův-Fulkersonův algoritmus a důkaz jeho správnosti pomocí řezů. Celočíselné sítě a celočíselné toky.
8. 10. Toky v sítích: Edmondsův-Karpův algoritmus (Ford-Fulkerson s nejkratší cestou). Převod párování v bipartitním grafu na celočíselný tok. Vyhledávání v textu: značení okolo řetězců, naivní algoritmy, algoritmus KMP (Knuth, Morris, Pratt).
15. 10. Virtuální přednáška: podívejte se na video. Vyhledávání v textu: Algoritmus Aho-Corasicková pro hledání více řetězců. Přístup pomocí hešování à la Rabin-Karp.
22. 10. Geometrické algoritmy v rovině: konvexní obal, průsečíky úseček zametáním roviny. Zmínka o lokalizaci bodu v rovině pomocí Voroného diagramu a persistentního vyhledávacího stromu.
29. 10. Rozhodovací problémy. Převody problémů: SAT, 3-SAT, nezávislá množina.
5. 11. Převody problémů: 3,3-SAT, 3D párování. Třídy P a NP, NP-těžké a NP-úplné problémy a jejich základní vlastnosti. Cookova věta o NP-úplnosti SATu (bez důkazu). Zoo klasických NP-úplných problémů.
Úkoly: (1) SAT pro obecné formule převést na SAT v CNF, (2) ukázat NP-úplnost existence řešení soustavy 0/1 lineárních rovnic (koeficienty a vektor pravých stran jsou přirozená čísla, za proměnné smíme dosazovat jen 0 a 1).
12. 11. Přednáška i cvičení odpadají, tento den je děkanský sportovní.
19. 11. První pomoc při setkání s těžkým problémem. Řešení speciálních případů: nezávislá množina ve stromech, barvení intervalových grafů, pseudopolynomiální algoritmus pro problém batohu. Aproximační algoritmy: obchodní cestující v grafu s trojúhelníkovou nerovností (2-aproximace), neaproximovatelnost bez trojúhelníkové nerovnosti, aproximační schéma pro problém batohu.
26. 11. Pozor, přednáška i cvičení se v dalších týdnech konají v pracovně S322. Konečné automaty (DFA): definice, výpočet, jazyk přijímaný automatem, regulární jazyky. Iterační (pumping) lemma. Součin automatů. Uzavřenost regulárních jazyků na průniky, sjednocení a doplňky. Automaty s výstupem.
3. 12. Nedeterministické konečné automaty (NFA): definice, výpočet, ekvivalence s DFA, ε-přechody. Algoritmické otázky ohledně automatů. Uzavřenost regulárních jazyků na operace. Regulární výrazy: definice, Kleeneho věta.
10. 12. Plán: Gramatiky: definice, derivace, generovaný jazyk. Zmínka o Chomského hierarchii. Lineární gramatiky: levé, pravé, obecné a jejich souvislost s regulárními jazyky. Bezkontextové gramatiky: derivační stromy a jejich (ne)jednoznačnost, Bezkontextové iterační lemma (důkaz jen naznačen). Turingův stroj (TM): definice, výpočet.
17. 12. Plán: Turingův stroj: přijímání zastavením (částečně rozhodnutelné jazyky), přijímání koncovým stavem (rozhodnutelné jazyky), výstup na pásce (vyčíslitelné funkce). Varianty TM: pohyb jen doprava (konečný automat), nepřepisující (obousměrný automat), vícepáskový (lze simulovat jednopáskovým). Vztah mezi TM a RAMem.
7. 1. Plán: Obecné gramatiky generují částečně rozhodnutelné jazyky. Nedeterministický TM je stejně silný jako deterministický. Kódování strojů, univerzální jazyk a jeho vlastnosti. Univerzální Turingův stroj (bez detailů konstrukce). Nerozhodnutelnost univerzálního jazyka a jeho doplňku. Postova věta. Vztahy mezi třídami jazyků.

Zkoušky

Termíny jsou vypsány v SISu, buď se zapište tam, nebo se e-mailem domluvte na jiném termínu.

Ke zkoušce je potřeba:

Zdroje

Ostatní zajímavé knihy:

Animovaný výklad algoritmů v Algovision kolegy Kučery.

Sbírky příkladů:

Stránku spravuje Martin Mareš