P-těžké, np-těžké a np-úplné problémy
P-těžké problémy P-těžký problém je takový, pro který existuje algoritmus, co ho řeší v polynomiálním čase
Np-těžké problémy Np-těžký problém (nedeterministicky polynomiální problém): existuje nedeterministický algortimus (algoritmus s nápovědou), který problém řeší v polynomiálním čase
Klasifikace problémů podle složitosti P-těžké Np-těžké Problémy řešitelné, ale ani nedetrministicky neřešitelné v polynomiálním čase Problémy algoritmicky neřešitelné
Co se dá poznat Problém patří do dané skupiny: stačí najít algoritmus daných vlastností
Co je velmi obtížné poznat Problém neopatří do dané skupiny: Je potřeba dokázat, že algoritmus daných vlastností neexistuje Obecně je dokázat neexistenci algoritmu algoritmicky neřešitelný problém
Vlastnosti np-úplných problémů Jsou np-těžké Není znám algortimus pro jejich řešení v polynomiálním čase (pravděpodobně nejsou p-těžké) Pokud by byl nalezen deterministický algoritmus pro jejich řešení v polynomiálním čase, dal by se z něj odvodit deterministický algoritmus pro řešení všech np-těžkých úloh v polynomiálním čase
SAT problém Pro danou výrokovou formuli zjistit, zda je splnitelná, či nikoli Například (A & B) ( A & B) je splnitelná (pro B=TRUE, A libovolné) (A & B) & ( A & B) není splnitelná
SAT problém SAT problém je np-těžký Existuje jednoduchý deterministický algoritmus na řešení problému, který potřebuje 2n operací Jestli existuje lepší algoritmus není známo
Modelování výpočtu Turingova stroje pomocí SAT problému Konfigurace TS: vnitřní stav a obsah pásky Instrukce TS: možný přechod z jedné konfigurace do druhé Konfigurace budu kódovat výrokovými proměnnými, možné přechody jejich konjunkcemi, různé varianty disjunkcemi Zjistit, zda stroj může přejít z konfigurace A do konfigurace B je výpočetně ekvivalentní SAT problému SAT problém je tedy np-úplný
Problém úplného podgrafu Je dán graf (V,E) a číslo k, existuje v grafu úplný podgraf s k-vrcholy? Pro k=3 existuje, pro k=4 ne.
Převod na SAT problém Výrokovou formuli převedu na konjunkci disjunkcí F = (y1 y2) (y2 y3) (y3 y1). L21 ( y2) L11 (y1) L31 (y3) L12 (y2) L32 ( y1) L22 ( y3)
Převod na SAT problém Najdu úplný podgraf velikosti 3 L21 ( y2)
Převod na SAT problém Mám dvě splnitelná ohodnocení y1, y2, y3 a y1, y2, y3 L21 ( y2) L11 (y1) L31 (y3) L12 (y2) L32 ( y1) L22 ( y3)
Další np-úplné problémy Problém nezávislé množiny v grafu Problém barevnosti grafu TSP Problém batohu Problém dvou loupežníků Problém celočíselného lineárního programování Problém rozkladu prvočísel