TGH12 - Problém za milion dolarů Jan Březina Technical University of Liberec 7. května 2013
Složitost problému Co je to problém?
Složitost problému Co je to problém? K daným vstupním datům (velkému binárnímu číslu) X, najít výstupní data Y splňující nějakou vlastnost: F (X, Y ) = 1... F je logický obvod
Složitost problému Co je to problém? K daným vstupním datům (velkému binárnímu číslu) X, najít výstupní data Y splňující nějakou vlastnost: F (X, Y ) = 1... F je logický obvod Co je složitost problému?
Složitost problému Co je to problém? K daným vstupním datům (velkému binárnímu číslu) X, najít výstupní data Y splňující nějakou vlastnost: F (X, Y ) = 1... F je logický obvod Co je složitost problému? Nejmenší složitost algoritmu, který pro X najde Y, aby platilo F (X, Y ) = 1.
příklady
Lehké a těžké problémy Zvládnutelné velikosti problému: n = 1 corehour 10 6 corehours 10 9 coreweeks (exascale) n 2 10 6 10 9 10 11 n 3 15000 10 6 10 8 n 6 123 10 3 10 4 n 1 0 18 71 239 2 n 41 61 79 Pro seriový počítač s frekvencí 1GHz (10 9 operací za sekundu) Závěr: prakticky zvládnutelné jsou problémy se složitostí max. O(n 6 ). teoreticky jsou zvládnutelné problmémy s polynomiální složitostí O(n k )
Problémy nemožné - halting problém Pro daný program (reprezentovaný číslem X) rozhodni, zda pro data A výpočet X(A) skončí v konečném čase. Existuje program Y (i, j), který pro každé X a A v konečném čase zjistí zda X(A) skončí? Tedy: Y (X, A) = 1, pokud X(A) skončí Y (X, A) = 0, pokud X(A) neskončí v konečném čase
Halting problém 1. Necht Z(i, j) je libovolný program, který skončí v konečném čase pro všechna i, j. 2. Program W (i): W (i) = { 0 pokud Z(i, i) = 0 undef ined, loop pokud Z(i, i) = 1 3. Y (W, W ) se nemůže rovnat Z(W, W ) pro žádné Z: bud W (W ) = Z(W, W ) = 0, tedy W je konečný a Y (W, W ) = 1 nebo W (W ) neskončí, Z(W, W ) = 1 a Y (W, W ) = 0
Putování po hranách Problém: Pro daný neorientovaný graf s n vrcholy najdi kružnici, která projde haždou hranu právě jednou (Eulerovská kružnice). Známe algoritmus (stupně vrcholů a DFS), který to zvládne v čase O(V + E) = O(n 2 ). Problém je ve třídě P problémů řešitelných v polynomiálním čase. Existuje program X, který pro vstup (graf) A najde výstup (kružnici) B = X(A), tak aby platilo F (A, X(A)) = 1, pokud kružnice existuje. Program (funkce) F (i, j) verifikuje, že j je Eulerovská kružnice na grafu i. Složitost také O(n 2 ).
Putování po vrcholech Hamiltonova kružnice - je kružnice na grafu G, která prochází každý vrchol právě jednou. Verifikační problém: Pro graf i a posloupnost vrcholů j zjisti zda je to Hamiltonova kružnice, tj. vypočti F (i, j): { 1 pokud j je Hamiltonovská kružnice na grafu i F (i, j) = 0 j není Hamiltonovská Složitost O(n). Zjistíme zda se vrcholy neopakují a existují příslušné hrany. Třída N P nedeterministicky polynomiální problém, verifikovatelný v polynomiálním čase. Přímý problém: Najdi Hamiltonovu kružnici.!! Neznáme polynomiální algoritmus i přes velkou podobnoust s předchozí snadnou úlohou.
Třídy problémů P : úlohy řešitelné v polynomiálním čase O(n k ) N P : úlohy jejichž řešení je verifikovatelné v polynomiálním čase. NP -hard : úlohy nejmíň tak těžké jako NP, tj. všechny NP jsou na ně redukovatelné NP -úplné : nejtěžší z NP problémů, tj. NP NP -hard Za milion dolorů: Je NP = P nebo NP P?
optimalizační problém - př. najdi optimální obarvení grafu, problém obchodního cestujícího, typicky NP -hard rozhodovací problém - najdi k-obarvení grafu (rozhodni, zda takové existuje), najdi Hamiltonovu kružnici, typicky NP -úplný Rozhodovací problém A je redukovatelný na B pokud: Existuje polynomiálně složitá transformace vstupu a na vstup b tak, že A(a) právě když B(b) tj. pokud B je v P pak A je taky v P tj. pokud A není v P ani B není v P tj. problém B je nejméně tak težký jako problém A Chceme najít nějaký N P -úplný problém. Mnoho problémů je ve třídě NP -úplných, jsou na sebe navzájem redukovatelné - jsou ekvivalentní. Hamiltonova kružnice, nejdelší cesta v grafu, optimální skládání do batohu,...
NP-úplný problém I Rozhodovací problém je N P -úplný pokud je v NP, tj. řešení je verifikovatelné v polynomiálním čase každý problém v NP je na něj redukovatelný (je nejtěžší v NP ) Uvažujme množinu M programů X ze třídy P, které pro každý vstup x dávají výstup ano nebo ne. Problém B: Pro daný program X M zjisti, zda existuje vstup x dávající výstup ano. Prakticky: Pro logický obvod X najdi vstup x, tak aby na výstupu byla jednička.
NP-úplný problém II Problém je z NP. Pro daný vstup x určíme v polynomiálním čase zda vyhovuje. B (X, x) = X(x) Problém je težší než všechny problémy A NP. Pro A najdeme zobrazení f vstupů a na vstupy X problému B, tak aby A(a) B(X). 1. A NP, takže existuje poly verifikační program A (a, a ) tak, že A(a) = 1 právě když a : A (a, a ) = 1 2. položme f(a) = X = F a, kde F a(a ) = A (a, a ) 3. program X je program A s předprogramovaným vstupem a, takže je polynomiální 4. A(a) a : F a(a ) = 1 x : X(x) = 1 B(X) Závěr: Na problém B je redukovatelný každý NP problém, tj. problem B (tzv. problém nasytitelnosti Boolovských forem), je NP-úplný
zero-knowledge proof Důkaz, že nějaké (matematické) tvrzení je pravdivé bez odhalení vlastního důkazu. V každém kole klesne pravěpodobnost, že Peggy nemá kĺıč na polovinu.
ZKP pomocí grafů Peggy zná Hamiltonovu kružnici v rozsáhlém grafu G a chce tuto znalost dokázat Viktorovi, aniž by jí prozradila. Oba provedou několik iterací postupu: 1. Peggy sestrojí graf H isomorfní s G. 2. Peggy zapíše tajně graf H, každou hranu zvlášt. (Zašifruje svým veřejným kĺıčem.) 3. Viktor náhodně určí zda chce odhalit, isomorfismus, nebo kružnici na H 4. V prvním případě Peggy odhaĺı celý graf H a isomorfní zobrazení na G. 5. V druhém případě Peggy odhaĺı jen hrany kružnice na H. V každém kole klesne pravěpodobnost, že Peggy kružnici nezná na polovinu.
Problém obchodního cestujícího Úloha: Jak si má naplánovat cestu po N městech, aby strávil na cestách nejméně času. Grafově: Najdi nejkratší Hamiltonovská kružnice v (úplném) ohodnoceném grafu. (NP-hard) Praktický předpoklad. Platí trojúhelníková nerovnost: d(i, j) d(i, k) + d(k, j)... stále NP-úplný problém. Aproximace.
Aproximace pomocí MST 1. Zvol počáteční vrchol v. Najdi z něj MST pomocí Primova algoritmu. 2. Z kořene v procházej kostru pomocí DF S algoritmu. Urči pořadí uzlů podle previzit. Tato aproximace dává kružnici po všech uzlech, která je max. dvakrát delší než optimální řešení.