# Návrh na společné ADS2 + Automaty a gramatiky pro učitele
## Anotace
Přednáška o algoritmech a základech teoretické informatiky.
Navazuje na NTIN060 (ADS1), nahrazuje NTIN061 (ADS2) a NTIN071 (Automaty a gramatiky).
## Sylabus
1. Vyhledávání v textu (1.5 přednášky)
* notace pro řetězce
* algoritmus Knuth-Morris-Pratt
* algoritmus Aho-Corasicková
1. Toky v sítích (1.5 přednášky)
* sítě, toky a řezy
* Fordův-Fulkersonův algoritmus
* Edmondsův-Karpův algoritmus (FF s nejkratší cestou)
* párování v bipartitním grafu
* vrcholově/hranově disjunktní cesty v grafech
1. Základní geometrické algoritmy v rovině (1 přednáška)
* konvexní obal
* princip zametání roviny řízeného událostmi
1. Převoditelnost problémů a třídy časové složitosti (2 přednášky)
* polynomiální transformace a redukce mezi rozhodovacími problémy
* nedeterministické algoritmy, třídy P a NP
* NP-úplnost
1. Aproximační algoritmy (1 přednáška)
* použití aproximačních algoritmů, poměrová a relativní chyba
* jeden až dva jednoduché příklady aproximačních algoritmů (knapsack, bin-packing, rozvrhování na paralelních strojích) včetně horního odhadu pro jejich poměrovou (nebo relativní) chybu
* aproximační schéma: princip a příklad
1. Konečné automaty (1 přednáška)
* základní pojmy: slova už známe z vyhledávání v textu,
jazyk je vlastně totéž co rozhodovací problém
* definice konečného automatu (DFA), syntaxe a sémantika, regulární jazyk
* příklad: 0^n1^n není regulární, důkaz principem holubníku
* příklad: v KMP uvážíme uzávěr zpětných hran a máme DFA