IB107 Vyčíslitelnost a složitost polynomiální redukce a NP-úplné problémy Jan Strejček Fakulta informatiky Masarykova univerzita polynomiální redukce Definice 1.22 (polynomiální redukce) Necht A c Z* a B c * /sol/ jazyky. Řekneme, že A se polynomiálně redukuje na B, píšeme A

*, /cterá ye vyčíslitelná deterministickým Turingovým strojem pracujícím v polynomiálním čase a taková, že w g A <=^> f(w) g B. Funkci f nazveme polynomiální redukcí A na B. Platí A

existuje tabulka reprezentující akceptující výpočet na w IB107 Vyčíslitelnost a složitost: polynomiální redukce a NP-úplné problémy 6/20 SAT je NP-úplný 0 = 0 cell A 0 start A 0 move A 0 accept 0cen = "každé Xjj^s platí <=^> v tabulce na pozici i J je symbol s, kde s g C = Quru{#}" Oceli = A [( VX'V>*) A ( A ^feA*/^)) 1 cell A start A move A ^accept 0start = "na prvním řádku je iniciální konfigurace pro w = ... wn" ^start = A X1?2,Qo A Xi,3,> A ^1,4,^ A *i,5,w2 A ... A X-|?n+3?M/n A *1,n+4,u A X-|,n+5,u A ... A Xi?p(n)+2,u A X1?p(n)+3?# ^startl e C?(p(n)) IB107 Vyčíslitelnost a složitost: polynomiální redukce a NP-úplné problémy 8/20 SATje NP-úplný = Ocel, A Ostart A 4> move A ^accept ^move = "každé dva po sobě jdoucí řádky odpovídají kroku výpočtu" popíšeme pomocí "legálních oken" 2x3 příklady legálních oken pro S(q^, b) = {((fe, c, L), (g2ja, /?)}: IB107 Vyčíslitelnost a složitost: polynomiální redukce a NP-úplné problémy 9/20 SAT je NP-úplný * = cell A start A move A ^accept ^move = "každé okno 2 x 3 v tabulce je legální" (okna se překrývají) 0 move A 1 move| £ C(P2(")) IB107 Vyčíslitelnost a složitost: polynomiální redukce a NP-úplné problémy 10/20 SAT je NP-úplný 4> = 4>cell A start A move A ^accept ^accept = "v tabulce je stav qacc" 4> accept V l,J,Qacc 1 cell A start A move A ^accept }| = 0(p2(n) • log n), což znamená |(}| = 0(p2(n) • n). 0} má polynomiální délku vzhledem k n = \ w\ a lze spočítat v polynomiálním čase. Tedy A

jako v důkazu NP-těžkosti SATu B O převedeme na ekvivalentní ' v cnf pomocí ekvivalence (

' převedeme na " v 3cnf pomocí vztahů h v/2 /1 v l2 v /3 /i V/2V/3V/4 /! V ^ V ... V /, <í>" je splnitelná <^> ' je splnitelná <^> je splnitelná |2, c2,..., a/c, í^, ej a ■ E = {{v^i, v2} | ví, v2 nejsou ze stejné klauzule a ví není negací v2 nebo naopak}.

x v^yv -.z) a (x v ^y v -i/) c^> je splnitelná <=^> existuje splňující přiřazení ^=^> Gmá/c-kliku Zároveň |G| = 0(|^|2) a tedy 3S/A7