11. Význam tříd NP a NPH pro praktické výpočty. (NI-KOP)¶
Kombinatorické problémy¶
- Kombinatorická matematika:
- Lze vyzkoušet všechny kombinace v konečnem case a rozhodnout o problému
- Charakterizace problému:
- Vstupní proměnné
- Výstupní proměnné
- Konfigurační proměnné
- To, co vyjádří všechny „kombinace“
- Omezení
- Optimalizační kritérium
- MIN, MAX,...
- Typy problémů:
- Rozhodovací problém: Existuje Y takové, že R(I, Y)?
- Konstruktivní problém: Sestrojit nějaké Y takové, že R(I, Y).
- Enumerační problém: Sestrojit všechna Y taková, že R(I, Y).
- Početní problém: Kolik je Y takových, že R(I, Y).
- Optimalizační problem: Jedna se o stejné problémy definované výše pouze s nějakou optimalizační podmínkou
- MIN / MAX / Lepší než ...
- Základní pojmy:
- Konfigurace je ohodnocení konfiguračních proměnných
- Řešení je konfigurace, která vyhovuje omezujícím podmínkám
- Optimální řešení je řešení, které má nejlepší hodnotu optimalizačního kritéria
- Suboptimální řešení je řešení, které má přijatelnou hodnotu optimalizačního kritéria
Turingův stroj¶
-
Jedna se o teoreticky model počítače
-
Deterministický Turingův stroj s jednou páskou je osmice (Q,Σ,Γ,b,δ,q_0,q_{ANO},q_{NE}):
- Q je konečná množina vnitřních stavů,
- Σ je konečná vstupní abeceda (obvykle Σ=\{0,1\}),
- Γ je konečná abeceda pásky, Σ⊂Γ,
- b je prázdný symbol (blank), b∈Γ∖Σ – obvykle b=⊔,
- Deterministicky Turingův stroj:
- δ je zobrazenı́ z množiny Q×Γ do množiny Q×Γ×\{←,∙,→\}, které na základě aktuálního vnitřního stavu a aktuálně čtených symbolů na pásce určı́, jaký má být nový vnitřní stav, jaké symboly se mají zapsat na pásku a jakým směrem se má hlava pohnout;
- Nedeterministicky Turingův stroj
- δ je relace mezi množinami Q×Γ a Q×Γ×{←,∙,→}, které na základě aktuálního vnitřního stavu a aktuálně čtených symbolů na jednotlivých páskách určı́, jaké kombinace nového vnitřního stavu, jaké symbolů zapsaných na pásku a směru pohybu hlavy mohou následovat; je tedy δ⊆Q×Γ×Q×Γ×{←,∙,→};
- q_0 je počáteční stav, q_0\in Q;
- q_{ANO} a q_{NE} jsou koncové stavy, q_{ANO},q_{NE} \in Q.
Třídy PSPACE, EXPTIME¶
- Rozhodovací problém patří do třídy PSPACE, jestliže pro něj existuje program pro deterministický Turingův stroj, který jej řeší v paměti O(n^k), kde n je velikost instance a k konečné číslo.
- Rozhodovací problém patří do třídy EXPTIME, jestliže pro něj existuje program pro deterministický Turingův stroj, který jej řeší v čase O(2^{P(n)}), kde P(n) je polynom ve velikosti instance n.
Třídy Složitosti problémů¶
Important

- P (Polynomial Time)
- Třída problémů řešitelných deterministickým Turingovým strojem v polynomiálním čase
- Problémy s efektivním algoritmickým řešením
- Lze vyřešit v čase O(n^k), kde k je konstanta
Important
-
NP (Nondeterministic Polynomial Time)
- Třída problémů, jejichž řešení lze ověřit v polynomiálním čase
- Lze vyřešit nedeterministickým Turingovým strojem v polynomiálním čase O(n^k)
- Řešeni deterministickým Turingovým je v exponenciálním čase: 2^{O(T(n))} Kde T(n) je složitost algoritmu v nedeterministickém TS
- Platí: P \subseteq NP
- Otevřená otázka: P \stackrel{?}{=} NP
- Kontrola / Certifikát zda výstupní konfigurace je rosením problému je problem patrici do P
- Každý NP problem jde převést na SAT
- Kratky svědek: Výsledek který ověří ze konfigurace je řešením problému
- co-NP
- Třída problémů, kde lze v polynomiálním čase ověřit negativní odpověď
- Doplněk třídy NP
- Otevřená otázka: Zda NP = co-NP
- Maji dlouhé svědky:
- Neexistuje číslo vetší jak 10
- Svědkové jsou všechny čísla která nejsou věsti jak 10
-
NPC (NP-Complete)
- Nejtěžší problémy v třídě NP
- Každý problém v NP lze na ně převést v polynomiálním čase
- Řešení jednoho NP-Complete problému by znamenalo řešení všech problémů v NP
- Kontrola / Certifikát zda výstupní konfigurace je rosením problému je problem patrici do P
-
NPH (NP-Hard)
- Problémy minimálně tak těžké jako nejtěžší problémy v NP
- Kontrola / Certifikát zda výstupní konfigurace je řešením problému je problem patrici do NP
- Nemusí být nutně v NP
- Příklad: Problém zastavení (Halting problem)
-
NPI
- Problémy v NP, které nejsou v P nebo NPC
- Existuje pouze pokud P \neq NP
-
PO a NPO
- Optimalizační varianty rozhodovacích problémů
- Hledají nejlepší řešení místo binární odpovědi ano/ne
- Často výpočetně náročnější než jejich rozhodovací protějšky
Important

Redukce algoritmu¶
Karpova redukce¶
- Rozhodovací problém Π_1 je Karp-redukovatelný na Π_2 (Π_1 ∝ Π_2), jestliže existuje polynomiální program pro (deterministický) Turingův stroj, který převede každou instanci I_1 problému Π_1 na instanci I_2 problému Π_2 tak, že výstup obou instancí je shodný.
Turingova redukce¶
- Problém Π_1 je Turing-redukovatelný na Π_2 ( Π_1 ∝ Π_2), jestliže existuje program pro (deterministický) Turingův stroj, který řeší každou instanci I_1 problému Π_1 tak, že používá program M_2 pro problém Π_2 jako podprogram (jehož trvání považujeme za jeden krok).
Klíčový rozdíl:
- Karpova redukce je speciálním případem Turingovy redukce
- Karpova redukce vyžaduje polynomiální převod
Význam pro praktické výpočty¶
Important
- NP a NPH problémy nelze efektivně řešit – řešení je exponenciální, které pro větší instance může trvat neakceptovatelně dlouho – využití v kryptografii, hashování.
- Neznámé problémy můžeme redukcí převádět na známé problémy a řešit je dle zvyku.
- Např. mnohé úlohy převádíme na SAT problém splnitelnosti.
- NPH: Kontrola / Certifikát zda výstupní konfigurace je řešením problému je problem patrici do NP
- NPH: Jsou extrémně výpočetně náročné problémy.
- NPH: Nemusíme byt schopni je převést na SAT problémy
- NPO: Můžeme použít aproximační algoritmy k jejich řešeni.
- Metoda redukce stavového prostoru – např. branch and bound – nepoužitelné výsledky ignorovány
- Aproximace: jednodušší heuristiky (simulované ochlazování, genetika) pro přibližné řešení
Aproximativní algoritmy¶

Aproximativní algoritmus¶
- Algoritmus pro optimalizační problémy, který nachází řešení blízké optimálnímu
- Garantuje maximální odchylku od optimálního řešení
- Používá se pro NP-těžké problémy, kde přesné řešení je výpočetně náročné
Třída APX¶
- Množina optimalizačních problémů s konstantně aproximovaným řešením
- Existuje algoritmus, který najde řešení s garantovanou aproximační konstantou
- Příklad: Problém obchodního cestujícího s aproximací \leq 2
- Sbírka problémů, kde umíme zaručit, že naše řešení bude maximálně 2x horší než to nejlepší možné
PTAS (Polynomial Time Approximation Scheme)¶
- Algoritmus, který pro libovolné \epsilon > 0 najde (1+\epsilon)-aproximační řešení
- Doba běhu je polynomiální vzhledem k velikosti vstupu a \frac{1}{\epsilon}
- Algoritmus, který ti umožní nastavit, jak moc přesné řešení chceš. Čím přesnější, tím déle počítá
FPTAS (Fully Polynomial Time Approximation Scheme)¶
- Speciální případ PTAS
- Doba běhu je polynomiální vzhledem k velikosti vstupu a \frac{1}{\epsilon}
Pseudopolynomiální algoritmus¶
- Algoritmus s polynomiální složitostí vzhledem k numerické hodnotě vstupu
- Složitost závisí na hodnotách čísel, nikoliv jejich délce
- Prakticky použitelný jen pro malé číselné hodnoty
Rozhodovací problém splnitelnosti Booleovy CNF formule (SAT)¶
Definice problému¶
Vstup:
- Množina X o n proměnných \{x_1, \ldots, x_n\}, kde x_i \in \{0,1\}
- Booleova formule F v konjunktivní normální formě o m klauzulích
Úkol:
Rozhodnout, zda existuje ohodnocení Y proměnných X takové, že F(Y) = 1
Příklad¶
Pro n = 4, m = 6:
F = (x_1 + \neg x_3 + x_4).(\neg x_1 + x_2 + \neg x_3).(x_3 + x_4).(x_1 + x_2 + \neg x_3 + \neg x_4).(\neg x_2 + x_3).(\neg x_3 + \neg x_4)
Řešení:
- Y_1 = (0, 0, 0, 1)
- Y_2 = (1, 0, 0, 1)
- Y_3 = (1, 1, 1, 0)
Výstup: Ano, formule je splnitelná