VAS - Přednáška 9 Úvod ke kursu. Složitost algoritmu. Model RAM. Odhady složitosti. Metoda rozděl a panuj. Greedy algoritmy. Metoda dynamického programování. Problémy, třídy složitosti problémů, horní a dolní odhady. Turingovy stroje, vztah k dalším výpočetním modelům. Třída PTIME a třída NPTIME. NP-úplnost. NP-úplné problémy. Otázka, zda P=NP. Další třídy časové i prostorové složitosti. Church-Turingova teze. Rozhodnutelnost a částečná rozhodnutelnost problémů. Univerzální algoritmus. Některé nerozhodnutelné problémy. Riceova věta. Další témata teorie a praxe algoritmů. (Aproximační algoritmy, pravděpodobnostní algoritmy, paralelní algoritmy, distribuované algoritmy; nové výpočetní modely.)
Vsuvka: Presburger arithmetic Theory of addition; symbols 0, 1, + [and =]) 1. x : (0 = x + 1) 2. x y : (x = y) (x + 1 = y + 1) 3. x : x + 0 = x 4. x y : (x + y) + 1 = x + (y + 1) 5. An axiom scheme: (P(0) x : P(x) P(x + 1)) x : P(x) P(x)... any formula constructed from 0, 1, +, = and containing a single free variable x
Vsuvka: Theory N Classical axiom system for the natural numbers; symbols 0, S, +,, < [and =]) 1. Sx 0 2. Sx = Sy x = y 3. x + 0 = x 4. x + Sy = S(x + y) 5. x 0 = 0 6. x Sy = (x y) + x 7. (x < 0) 8. (x < Sy) (x < y) (x = y) 9. (x < y) (x = y) (y < x)
Z přednášky 8: superexponenciální problémy Příklad problému s dolním odhadem složitosti 2 2n. (Známý horní odhad je 2 22n.) Název problému: ThAdd (problém pravdivosti teorie sčítání) Vstup: formule jazyka 1. řádu s jediným nelogickým symbolem 3-árním predikátovým symbol PLUS Otázka: je daná formule pravdivá pro množinu N = {0, 1, 2,... }, kde PLUS(a, b, c) je interpretováno jako a + b = c? Příklad formule: součet dvou sudých čísel je sudé číslo Věta. Existuje algoritmus rozhodující problém ThAdd.
Idea důkazu rozhodnutelnosti ThAdd Ex. konečný automat čtoucí 3-stopou pásku a přijímající právě když součet binárních čísel v 1. a 2. stopě se rovná číslu ve 3. stopě. (Realizuje PLUS(x, y, z).) Z uzáv. vlastností REG: pro formuli F(x 1, x 2,..., x n ) bez kvantifikátorů... KA A F A F přijímá (na n-stopé pásce) právě binární zápisy těch n-tic čísel, pro které je F(x 1, x 2,..., x n ) pravdivá. Pro formuli F 1 = ( x n )F(x 1, x 2,..., x n ): automat A F1 na (n 1)-stopé pásce simuluje A F tak, že obsah n-té stopy nedeterministicky hádá! (včetně případných bitů, o něž je x n delší) ( x n )F(x 1, x 2,..., x n ) převedeme na ( x n ) F(x 1, x 2,..., x n ) Tedy F M A F, kde L(A F ) ε F je pravdivá.
Rozhodnutelnost a nerozhodnutelnost problémů Problém P = (IN, OUT, p) (p : IN OUT ) je algoritmicky řešitelný, jestliže existuje algoritmus, který pro libovolný vstup w IN skončí a vydá jako výsledek p(w). Jedná-li se přitom o problém typu ANO/NE, říkáme, že je algoritmicky rozhodnutelný, nebo stručněji rozhodnutelný. Množina M N je rozhodnutelná, jestliže problém příslušnosti k M (Vstup: n N; otázka: platí n M?) je rozhodnutelný. Jazyk L v abecedě Σ (tedy L Σ ) je rozhodnutelný, jestliže problém příslušnosti k L (Vstup: w Σ ; otázka: platí w L?) je rozhodnutelný. Funkce f : N N je algoritmicky (někdy se říká efektivně) vyčíslitelná, jestliže problém výpočtu jejích hodnot (Vstup: n N; výstup: f (n)) je algoritmicky řešitelný.
Church Turingova teze Problém typu ANO/NE je rekurzivní, jestliže je rozhodován Turingovým strojem. Podobně zavádíme pojmy rekurzivní jazyk, rekurzivní množina, rekurzivní funkce. Church-Turingova teze: Algoritmus = Turingův stroj Ke každému algoritmu je možné zkonstruovat s ním ekvivalentní Turingův stroj (při vhodném vyjádření vstupů a výstupů jako řetězců v určité abecedě); ekvivalencí zde rozumíme podmínku, že algoritmus i Turingův stroj se zastaví (tj. jejich běh, výpočet, se zastaví) právě pro tytéž vstupy, přičemž pro tytéž vstupy budou příslušné výstupy totožné. Při přijetí Church-Turingovy teze lze ztotožňovat pojmy rekurzivní a rozhodnutelný (v případě (totální) funkce pojmy rekurzivní a algoritmicky vyčíslitelná).
Částečná rozhodnutelnost Problém typu ANO/NE je částečně rozhodnutelný, jestliže existuje algoritmus, který skončí právě pro ty vstupy problému, na něž je odpověď ANO. (Pro vstupy s odpovědí NE je běh algoritmu nekonečný). Podobně definujeme pojmy částečně rozhodnutelný jazyk, částečně rozhodnutelná množina. Částečná funkce φ : N N (Dom(φ) N) je algoritmicky (někdy říkáme efektivně) vyčíslitelná, jestliže existuje algoritmus, jenž přijme jako vstup libovolné n N, zastaví se právě tehdy, když n Dom(φ), a v tom případě vydá φ(n). Nahradíme-li pojem algoritmus pojmem Turingův stroj, dostaneme definice rekurzivně spočetného jazyka, rekurzivně spočetné množiny, částečně rekurzivní funkce. Za předpokladu Church-Turingovy teze můžeme ovšem opět provést příslušná ztotožnění pojmů.
Postova věta Věta. Množina A Σ je rozhodnutelná právě když A i A jsou částečně rozhodnutelné.
Univerzální Turingův stroj Věta. Lze sestrojit Turingův stroj U takový, že pro libovolný Turingův stroj M s abecedou {0, 1, } a libovolné w {0, 1} platí: 1. M se zastaví na w U se zastaví na (Kod(M) w), 2. jestliže M se zastaví na w, pak M(w) = U(Kod(M) w).