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.) Petr Jančar (FEI VŠB-TUO) Vyčíslitelnost a složitost LS 2005/2006 1 / 5
Vstupně/výstupní vlastnosti programů Vlastnost programů (Turingových strojů) nazveme vstupně/výstupní, jestliže každé dva programy, které realizují totéž vstupně/výstupní zobrazení, buď oba vlastnost mají nebo oba vlastnost nemají. Např. z vlastností, které jsou dány následujícími otázkami a/ Zastaví se M na řetězec 001? b/ Má M více než sto stavů? c/ Má v nějakém případě výpočet stroje M více kroků než tisícinásobek délky vstupu? d/ Platí, že pro libovolné n se M na vstupech délky nejvýše n vícekrát zastaví než nezastaví? e/ Má M polynomiální časovou složitost? f/ Je pravda, že pro lib. vstupní slovo M realizuje jeho zdvojení? g/ Je pravda, že M má nejvýše sto stavů nebo více než sto stavů? jsou vstupně výstupními: a, d, f, g Vlastnost programů nazveme netriviální, jestliže existuje program, který vlastnost má, a existuje program, který ji nemá. (Např. g/ je triviální.) Petr Jančar (FEI VŠB-TUO) Vyčíslitelnost a složitost LS 2005/2006 2 / 5
Riceova věta Riceova věta (neformálněji): Jakákoli netriviální vstupně/výstupní vlastnost programů je nerozhodnutelná (tj. množina všech programů s danou vlastností je nerozhodnutelná; tedy pro žádnou takovou vlastnost V neexistuje algoritmus, který by pro zadaný program vždy rozhodl, zda má vlastnost V ). Riceova věta (formálněji): Nechť A je neprázdnou vlastní podmnožinou množiny všech algoritmicky vyčíslitelných (částečných) zobrazení typu {0, 1} {0, 1}. (A je tedy množina, která zahrnuje některá, ale ne všechna možná, vstupně/výstupní zobrazení realizovatelná algoritmy [programy].) Potom množina (kódů) Turingových strojů je nerozhodnutelná. M A = {M M realizuje zobrazení patřící do A} Petr Jančar (FEI VŠB-TUO) Vyčíslitelnost a složitost LS 2005/2006 3 / 5
Důkaz Riceovy věty Uvažujme množinu A splňující předpoklady. Nechť nikde nedefinované zobrazení : {0, 1} {0, 1} nepatří do A (opačný případ se řeší podobně). Jistě existuje M 1 realizující, tedy M 1 M A, a musí existovat i M 2 realizující nějaké zobrazení z A; tedy M 2 M A. Ukážeme, že DHP je převeditelný na (problém příslušnosti k) M A. Algoritmus převodu DHP M A k danému stroji (kódu stroje) M (tj. ke vstupu problému DHP) sestaví stroj M, který je naprogramován tak, že jeho činnost je následovná: M nejprve vpravo vedle svého vstupu (na kterém v této chvíli nezáleží) zapíše slovo Kod(M) a na něj spustí (podprogram) M; pokud tento (pod)výpočet skončí, smaže M případný zbytek po tomto výpočtu, najede na původně daný vstup a spustí na něj M 2. Je zřejmé: když M se zastaví na Kod(M), realizuje M totéž zobrazení jako M 2 a tedy patří do M A ; když M se nezastaví na Kod(M), realizuje M zobrazení, tedy totéž jako M 1, a tedy do M A nepatří. Petr Jančar (FEI VŠB-TUO) Vyčíslitelnost a složitost LS 2005/2006 4 / 5
Příklad na užití Riceovy věty Zjistěte (a zdůvodněte), pro které z následujících problémů plyne jejich nerozhodnutelnost z Riceovy věty. Instancí (tj. vstupem problému) je vždy Turingův stroj M, proto uvádíme jen otázky: a/ Zastaví se M na řetězec 001? b/ Má M více než sto stavů? c/ Má v nějakém případě výpočet stroje M více kroků než tisícinásobek délky vstupu? d/ Platí, že pro libovolné n se M na vstupech délky nejvýše n vícekrát zastaví než nezastaví? e/ Má M polynomiální časovou složitost? f/ Je pravda, že pro lib. vstupní slovo M realizuje jeho zdvojení? g/ Je pravda, že M má nejvýše sto stavů nebo více než sto stavů? Odpověď: (netriviální vstupně/výstupní vlastnosti jsou) a, d, f (Zde i c/ a e/ jsou nerozhodnutelné, neplyne to ovšem z Riceovy věty.) Petr Jančar (FEI VŠB-TUO) Vyčíslitelnost a složitost LS 2005/2006 5 / 5