Select Git revision
-
Martin Mareš authoredMartin Mareš authored
AG.md 3.14 KiB
Automaty a složitost (návrh)
Sylabus
-
Konečné automaty (2 přednášky)
- základní pojmy: abeceda, slovo, jazyk (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
- regulární pumping lemma (zobecnění myšlenky předchozího důkazu)
- příklad: 1^{prvočíslo} není regulární
- součin automatů
- TODO: Možná Myhill-Nerode (ve verzi se syntaktickou kongruencí?)
-
Regulární výrazy (1 přednáška)
- nedeterministický konečný automat (NFA)
- ekvivalence DFA
NFA - ε-přechody, ekvivalence ε-NFA
NFA - uzavřenost na množinové operace
- regulární výrazy popisují právě regulární jazyky
-
Gramatiky (3 přednášky)
- bezkontextové gramatiky, derivační stromy, generované jazyky
- pravé a levé lineární gramatiky generují regulární jazyky
- obecné lineární gramatiky generují i neregulární jazyky
- jednoznačnost gramatiky
- Chomského normální forma
- algoritmus testující příslušnost slova do bezkontextového jazyka pomocí dynamického programování
- iterační lemma pro bezkontextové jazyky
- nedeterministický zásobníkový automat (NPDA)
- NPDA rozhodují bezkontextové jazyky
-
Turingovy stroje (2 přednášky)
- Turingův stroj (TM) a jeho výpočet
- TM může příjímat zastavením (částečně rozhodnutelné jazyky), přijímat stavem (rozhodnutelné jazyky) nebo vydávat výstup na pásce (vyčíslitelné funkce)
- varianty TM:
- páska jen pro čtení => obousměrný konečný automat Důkaz ekvivalence s klasickým DFA.
- více pásek: důkaz ekvivalence s jednopáskovým TM
- nedeterministický TM
- vztah mezi TM a RAMem
-
Základy vyčíslitelnosti (2 přednášky)
- univerzální Turingův stroj, kódování strojů (bez detailů konstrukce)
- univerzální jazyk a diagonální jazyk
- halting problem je částečně rozhodnutelný, ale není rozhodnutelný
- Postova věta => doplněk halting problemu není částečně rozhodnutelný
- jazyk je částečně rozhodnutelný <=> jeho slova lze vyjmenovat
- převoditelnost jazyků
- nerozhodnutelné problémy ohledně bezkontextových gramatik
- Riceova věta
-
Polynomiálni složitost a P vs. NP (2 přednášky)
- třídy DTIME(f)
- redukce počtu pásek a univerzální TM zpomalují jen polynomiálně, stejně tak převody TM <-> RAM => třída P je nezávislá na modelu
- třída NP definovaná pomocí certifikátů
- převoditelnost v polynomiálním čase
- příklady převodů mezi problémy
- NP-úplnost
- Cookova-Levinova věta
- třída co-NP, tautologičnost
Možné rozšíření
- Další složitostní třídy
- třídy DSPACE(f), PSPACE
- nedeterministické třídy NTIME(f), NSPACE(f), NP, NPSPACE
- DTIME(f) ⊆ NTIME(f) ⊆ DSPACE(f) ⊆ NSPACE(f) ⊆ DTIME(2^O(f))
- důsledek: P ⊆ NP ⊆ PSPACE ⊆ NPSPACE ⊆ DTIME(2^poly(n))
- důsledek: DSPACE(log n) ⊆ NSPACE(log n) ⊆ P
- základný myšlenky fine-grained složitosti
(celkem 12 přednášek)