Obsah

IN14 Složitost

Zadání

(časová a prostorová složitost, hierarchie tříd složitosti a vztahy mezi nimi. NP-těžké a NP-úplné úlohy. Polynomiální redukce. Příklady NP-těžkých a NP-úplných úloh. Metody důkazu NP-těžkosti.)

Vypracování

Základní informace

Pro tuto otázku se předpokládá základní znalost Turingových strojů, redukce a algebry (měla by stačit v rozsahu AP1,IN1 Množiny a relace).

Hlavní sdělení teorie složitosti:

Časová a prostorová složitost

Časovou složitost chápeme jako počet kroků výpočtu algoritmu (Turingova stroje), závisí na velikosti vstupu, proto provádíme analýzu nejhoršího případu tzv. horní odhad (s analýzou nejlepšího případu se setkáváme zřídka).

Definice(1), časová složitost DTS

Nechť M je daný deterministrický TS(DTS), který zastaví pro každý vstup. Časová složitost stroje M je funkce TimeM:N→N definována takto:

TimeM(n) = max{ StepsM(x) | |x|=n }

kde StepsM(x) je počet kroků, které provede stroj M pro vstup x a |x| je délka vstupu TS

Definice(2), časová složitost NDTS

Nechť M je daný nedeterministrický TS(NDTS) takový, že pro každý stup má výpočetní strom všechny výpočetní cesty konečné. Čas výpočtu (RunTimeM(x)) stroje M je pro vstup x je roven maximální délce výpočetní cesty (t.j. maximálnímu počtu kroků, které provede stroj M pro vstup x). Časová složitost stroje M je funkce TimeM:N→N definovaná takto:

TimeM(n) = max{ RunTimeM(x) | |x|=n } 1)

Prostorová složitost je obecně brána jako počet paměťových buněk potřebných k výpočtu algoritmu. U TS je to počet políček pásky. Často se liší s rozdílnou délkou vstupu, provádíme analýzu nejhoršího případu (s analýzou nejlepšího případu se setkáváme zřídka).

Definice(8), prostorová složitost DTS

Nechť M je daný deterministrický TS(DTS), který zastaví pro každý vstup. Řekneme, že M má prostorovou složitost SpaceM:N→N, jestliže SpaceM(n) je maximální počet políček pásky čtený strojem M, kde maximum se bere přes všechny vstupy délky n

Definice(9), prostorová složitost NDTS

Nechť M je daný nedeterministrický TS(NDTS) takový, že pro každý stup má výpočetní strom všechny výpočetní cesty konečné. Prostorová složitost stroje M je funkce SpaceM:N→N taková, že SpaceM(n) je maximální počet políček čtený strojem M, kde maximum se bere přes všechny vstupy délky n a pro každý vstup n přes všechny výpočetní cesty. 2)

Dále potřebujeme mít nějaký nástroj, který nám pomůže říct, která funkce je obecně složitější, nebo zda jsou dvě funkce podobně složité. Zajímá nás především růst řádu funkce, nikoliv konkrétní složitost v konkrétním případě. Při použití růstu řádu je možné se odprostit od konkrétních podrobností funkce a zdůrazníme tím asymptotické chování t.j. O kolik se výpočet zpomalí pro velmi velký vstup.

Definice(3) Růst řádu

Nechť \small f:N\rightarrow R^+ Položme
O(f)=\{r:N\rightarrow R^+ | \exists n_0\in N,\exists c \in N\ tak, ze\ \forall n \geq n_0 : r(n)\leq c.f(n)\} Pro \small r\in O(f) říkáme, že r neroste asymptoticky rychleji než f.

Položme \Omega (f) = \{r:N\rightarrow R^+| \exists n_0 \in N, \exists c \in N\ tak,ze\ \forall n \geq n_0 : r(n)\geq \frac{1}{c} f(n)\} Pro \small r\in \Omega (f) říkáme, že r roste asymptoticky alespoň tak rychle jako f.

Položme \Theta (f) = O(f)\cap \Omega (f). Pro g\in \Theta (f) říkáme, že g a f jsou asymptoticky ekvivalentní (mají stejný řád růstu)

Nechť \small f,g: N\rightarrow R^+. Jestliže
\lim_{\small{n\rightarrow \infty}}\frac{f(n)}{g(n)}=0 Pak řekneme, že g roste asymptoticky rychleji než f a píšeme
f=o(g)3)

Hierarchie tříd složitosti

Základní rozdělení je dle toho, zda je problém řešitelný v polynomickém čase DTS, nebo TS.
Následně podle složitosti výpočtu máme třídy logaritmické, polynomické a exponenciální

Deterministické třídy složitosti

Nechť f:N→R+

TIME(f) = \{L(M) | Time_M (n) \in O(f(n)) \}

SPACE(f) =  \{L(M) | Space_M (n) \in O(f(n)) \}

DLOG = SPACE(logn)

P = \bigcup_k TIME(n^k)

PSPACE = \bigcup_k SPACE(n^k)

EXPTIME = \bigcup_k TIME(2^{n^k}) 4)

Příklady problémů z P:

Nedeterministické složitostní třídy

Nechť f:N→R+

NTIME(f) = \{L(M) | M\ je\ NTS\ a \ Time_M (n) \in O(f(n)) \}

NSPACE(f) =  \{L(M) |M\ je\ NTS\ a \ Space_M (n) \in O(f(n)) \}

NLOG = NSPACE(logn)

NP = \bigcup_k NTIME(n^k)

NPSPACE = \bigcup_k NSPACE(n^k)

NEXPTIME = \bigcup_k NTIME(2^{n^k}) 5)

Definice (12), verifikátor

Verifikátorem pro jazyk A je algoritmus V takový, že A = {w | V akceptuje <w,c> pro nějaký řetězec c }6)

Verifikátor požívá dodatečnou informaci (c) k potvrzení, že w je z A. c se nazývá svědek.

Definice (13), třída NP

NP je třída jazyků, které mají polynomický verifikátor. 7)

Idea důkazu: NTS nedeterministicky uhádne řešení problému a poté ověří v polynomickém čase (pomocí verifikátoru).
Takže problém patří do NP, jestliže umíme v polynomickém čase potvrdit správné řešení.

příklady z NP

Vztahy mezi třídami složitosti

DTIME(f(n)) \subseteq NTIME(f(n))

DSPACE(f(n)) \subseteq NSPACE(f(n)) Odůvodnění: deterministické TS jsou i nedeterministicke TS.

Důsledek:
P \subseteq NP

Nemáte o prázdninách brigádu a chcete něco solidně zaplaceného? Zkuste třeba vyřešit otázku, zda \large NP=^?P. Dostanete 1 milion dolarů a navíc budete ve skriptech, a to se vyplatí. Více informací naleznete na stránkách Clay Mathematics Institute. Jde o otevřený problém, který zatím nikdo nevyřešil. Obecně se věří v nerovnost. Pokud by se třídy rovnaly, mělo by to zásadní dopad na současné fungování např. kryptografie.

Nejlepší dosud možný způsob, jak řešit problémy z NP na deterministických strojích, je použít exponenciální algoritmus. Umíme dokázat, že:
NP \subseteq EXPTIME

Cook-Karpova teze

P obsahuje právě všechny prakticky řešitelné problémy

Pouze teze, podobně jako Churchova, je pro ni méně indicií, než pro Churchovu tezi, ale v současnosti se věří, že platí(t.j., že NP\neq P).

Další známé vztahy mezi složitostními třídami:

Věta 1.

Nechť \small S(n)\geq log(n)(složitost musí být alespoň logaritmická, při konstantní složitosti budou vztahy „hezčí“).
Pak
  1. DTIME(T(n)) \subseteq SPACE(T(n))
  2. NTIME(T(n)) \subseteq NSPACE(T(n))
  3. DSPACE(S(n)) \subseteq DTIME(2^{OS(n)})
  4. NSPACE(S(n)) \subseteq NTIME(2^{OS(n)})

Odůvodnění 3. a 4. části - lze dokázat, že (N)DTS může být upraven tak, aby skončil po \small 2^{OS(n)} krocích a přitom akceptoval stejný jazyk. Důkaz viz slidy8)

Věta 2.

Nechť \small S(n)\geq log(n). Pak
  1. NTIME(T(n)) \subseteq DSPACE(T(n))
  2. NSPACE(S(n)) \subseteq DTIME(2^{OS(n)})

Odůvodnění: Provedeme DFS TODO na výpočetním stromu NTS M a vytvoříme strom postupně. Akceptujeme, jakmile narazíme na akceptující konfiguraci. Důkaz 1. i 2. části viz slidy9)

Věta 3. Savitchova věta

NSPACE(S(n)) \subseteq DSPACE(S((n)^2)

Odůvodnění: Nedeterministický stroj o složitosti n lze simulovat deterministickým strojem, který bude potřebovat maximálně n2 prostoru (což je pro nás obojí polynomické). Detailní důkaz viz slidy10) nebo skripta

Mnohem důležitější je však důsledek této věty:

NPSPACE = PSPACE

Celková klasifikace:

LOGSPACE \subseteq NLOGSPACE \subseteq P \subseteq NP \subseteq PSPACE = NPSPACE \subseteq EXPTIME

LOGSPACE \subset PSPACE

P \subset EXPTIME

Polynomiální redukce

Pro lepší pochopení jsem redukci zařadil před np-úplné problémy.

Definice(11; 1.22) Polynomické redukce

Nechť \small A, B \in \Sigma^*, Řekneme, že A se polynomicky redukuje na B, píšeme \small A \leq_P  
B právě když \small A \leq_m B a redukční funkce \small f:\Sigma^*\rightarrow\Sigma^*, je vyčíslitelná TS M, který je časově omezen polynomem. (f je vyčíslitelná v polynomickém čase a taková, že pro každé w \in \Sigma^* platí: w \in A <=> f(w) \in B 11)

Definici \small \leq_m doufám naleznete zde

Lidově řečeno: Pokud máme problém A a dokážeme vymyslet alogritmus(fkce f), který nám tento problém převede na problém B a složitost toho algoritmu je maximálně polynomická, tak se A polynomicky redukuje na B

Lemma 12; 1.23 Transitivita redukce

Relace \small \leq_P je reflexivní, transitivní, t.j. je kvaziuspořádání.

to by měl každý umět dokázat na požádání, pro jistotu:

NP-těžké úlohy a NP-úplné úlohy

Místo co-P uvažujeme problémy, které jsou stejně těžké, jako ostatní problémy v NP

Definice 1.26 NP-těžká a NP-úplná úloha

Jazyk B je NP-úplný, jestliže:
1. \small B \in NP 2. pro každý jazyk \small A \in NP platí \small A \leq_P B Pokud B splňuje pouze druhou podmínku, pak se nazývá NP-těžký.12)

Věta 23; 1.27

Jestliže B je NP-úplný a \small B \in P, pak \large P = NP (z definice)

Pokud jste vzali tip na brigádu vážně, tak vám určitě došlo, že abychom dokázali, že P = NP stačí najít problém z P, který je zároveň NP-úplný. (pokud vám to nedošlo, tak hledejte brigádu radši tady)

NP-úplné problémy hrají podobnou roli jako problém zastavení ve vyčíslitelnosti.

Příklady NP-těžkých a NP-úplných úloh

Mějme výrokovou formuli F (v CNF)
Formule F je splnitelná, jestliže existuje přiřazení hodnot 0,1 proměnným ve výrokové formuli tak, že je formule pravdivá (1).
Je dán kód formule F, a ptáme se Je F splnitelná?
Tuto úlohu nazýváme SAT

Věta 1.29 Cook-Levin

SAT(problém splnitelnosti) je NP-úplný

Idea důkazu NP-úplnosti SAT Nechť M je nedeterministický TS takový, že L(M) = A. Nechť w je vstupní slovo pro M. Sestrojíme výrokovou formuli X takovou, že M akceptuje w právě, když X je splnitelná. Konstrukce formule X bude polynomická.

3SAT Obdoba SAT, ale každá formule má právě 3 členy

CLIQUE Ptáme se zda má zadaný graf n-kliku.

HAMPATH Nalezení hamiltonské cesty v grafu

Ale pozor, funkce co-CLIQUE nepatří do NP. Verifikace toho, že něco není přítomno se zdá být obtížnější. Takovéto problémy patří do co-NP. Nevíme, zda se co-NP a NP liší.

Metody důkazu NP-těžkosti

Problémy dokazujeme redukcí problému, který víme, že je NP-těžký, respektive NP-úplný (např. SAT) na zadaný problém.

Příklady:
SAT se polynomicky redukuje na 3SAT
3SAT se polynomicky redukuje na CLIQUE viz řešené příklady nezapomeňte že polynomická redukce je transitivní

Předměty

Použitá literatura

Vypracoval

Gizmo - Marek Babák ICQ: 67179550 zpracuji do 25.5.2008
stav - 99% z mé strany hotovo, pokud chcete někdo něco doplnit, do toho.

FIXME Je potřeba ještě zapracovat poznámky od Jitky Pospíšilové.

1)
slidy Složitost výpočtů a problému, Přednáška č. 6 str 5, definice 1 a 2
2)
slidy Složitost výpočtů a problému, Přednáška č. 6 str 23 a 24, definice 8 a 9
3)
slidy Složitost výpočtů a problému, Přednáška č. 6 str 9 a 1, definice 3
4)
slidy Složitostní třídy, přednáška č. 7, str. 1
5)
slidy Složitostní třídy, přednáška č. 7, str. 14
6)
slidy Složitostní třídy, přednáška č. 7, str. 19
7)
slidy Složitostní třídy, přednáška č. 7, str. 20
8)
Slidy - vztahy mezi složitostními třídami, přednáška č.9 str 4,5
9)
Slidy - vztahy mezi složitostními třídami, přednáška č.9 str 6,7
10)
Slidy - vztahy mezi složitostními třídami, přednáška č.9 str 10-13
11)
slidy Složitostní třídy, přednáška č. 7, str. 8
12)
skripta Složitost, str. 16