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:

  • Některé z řešených problémů nejsou prakticky řešitelné v rozumném čase
  • Klasifikace a možnost porovnání složitosti algoritmicky řešitelných i neřešitelných problémů
  • Problémy lze řešit nekonečně mnoha programy, existují mezi nimi nejjednodušší?

Č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:

  • PATH (hledání nejkratší cesty)
  • RELPRIME = {<x,y> | x a y jsou relativní prvočísla} (2 čísla jsou relativní prvočísla, když jejich NSD je roven 1), v P vypočítáme například pomocí Euklidova algoritmu
  • Každý CFL in P (důkaz pomocí dynamického programování)

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

  • HAMPATH neorientovaný graf má hampath, jestliže existuje orientovaný cyklus, která vede přes každý vrchol právě jednou (obdobný s TSP - obchodní cestující - projít všechny body s nejkratší celkovou cestou)
  • CLIQUE (Klika v neorientovaném grafu je podgraf takový, že existuje hrana mezi každými dvěma uzly. k-klika je klika, která má k vrcholů)
  • další příklady viz. NP-úplné předměty

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:

  • reflexivita - libovolný problém dokážeme převést na ten stejný problém v polynomickém čase
  • transitivita - pokud máme alg. f který redukuje problém A na problém B a algoritmus g který redukuje problém B na problém C, pak máme i algoritmus, který převede A na C (tím že na problém použijeme nejprve algoritmus f a následně g, pokud jejich složitost byla polynomická, bude i výsledná složitost součtem dvou polynomických složitostí, t.j. také polynomická)

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

  • FI:IB107 Vyčíslitelnost a složitost (podzim 2007), prof. RNDr. Luboš Brim, CSc.
  • FI:IA012 Složitost (jaro 2008), prof. RNDr. Ivana Černá, CSc. (pozn. magisterský předmět)

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

Diskuze

, 2008/06/20 15:54

Potreboval by som trochu ozrejmit vztahy v jednotlivych vetach, napr. preco plati Veta1, cast 1. (podla mna pocet krokov TS (Time) moze byt vacsi ako pocet policok pasky (Space) TS), ten vztah je uvedeny aj v skriptach, ale zjavne tomu neviem prist na chut :(
Este jedna vec: podla mna je mensi preklep v definicii EXPTIME a NEXPTIME - na pravej strane by malo byt TIME a nie SPACE.

, 2008/06/20 16:10

K té první části: taky jsem na to koukal a předtím mi to přišlo zřejmý, jenže teď jsem se zamyslel a argument, který je ve skriptech: „Jeli t(n)>n časové omezení na TS M, pak M nemůže použít více políček pásky než t(n), neboť v každém kroku výpočtu může použít nejvýše jedno nové políčko, je tedy P \subseteq PSPACE“. Na základě toho argumentu by to mělo být naopak, nebo ne? Tj. počet políček je roven, nebo menší než počet kroků.

na ten překlep kouknu

, 2008/06/21 17:22

Povedlo se už někomu najít důvody proč platí 1-4 z Věty 1. u vztahů mezi složitostními třídami? Vracel jsem se k tomu ,pročítal dokola skripta, ale vždycky mi z toho logicky vyplynulo že ty vztahy mají být obráceně….

, 2008/06/24 10:28

Vztahy 3 a 4 tu zduvodnovat nebudu, protoze nevim, ale zduvodnim vztah 1 a 2. Protoze vztah 2 je analogicky vztahu 1, omezim se pouze na vztah 1.

Tedy P je podmnozinou PSPACE. Proc to plati? Uvazujme obecnejsi tvrzeni: TIME(f(n)) je podmnozinou SPACE(f(n)). Predstavme si mnozinu TIME(f(n)) - je to mnozina vsech problemu, ktere lze rozhodnout v case f(n). To znamena, ze Turinguv stroj, ktery dany problem rozhoduje, je pri vypoctu schopen precist maximalne f(n) policek pasky - v kazdem kroku vypoctu precte jedno. To ale neznamena, ze slovo zapsane na pasce musi mit delku f(n) - stroj muze po slovu prejizdet tam a zase zpatky, takze efektivne precte vice policek, nez kolik jich slovo obsahuje, ale porad se bude pohybovat v ramci onoho slova.

Co to pro nas znamena? Turinguv stroj, ktery takto „opakovane cte“ slovo zapsane na vstupni pasce musi nutne vykonat vice nez f(n) kroku. Tedy L(M), kde M je takovy stroj, patri do TIME(g(n)), kde g(n) je pocet kroku vykonanych timto strojem. Protoze vsak M nikde neprekroci hranici slova na pasce, musi L(M) patrit do SPACE(f(n)).

Mnozina SPACE(f(n)) tedy obsahuje vsechny problemy, ktere lze rozhodnout v case f(n), protoze ty nepotrebuji vetsi prostor na pasce nez f(n), ale zaroven obsahuje problemy, ktere lze rozhodnout pouze v case delsim, i kdyz k tomu neni treba delsi pasky.

Z dvouradkoveho dukazu ve slidech toto neni vubec zrejme, tak jsem se to tu snazil rozepsat. Doufam, ze ted uz to je jasne.

, 2008/06/24 11:01

Vztahy 3 a 4 tu zduvodnovat nebudu, protoze nevim, ale zduvodnim vztah 1 a 2. Protoze vztah 2 je analogicky vztahu 1, omezim se pouze na vztah 1.

Tedy P je podmnozinou PSPACE. Proc to plati? Uvazujme obecnejsi tvrzeni: TIME(f(n)) je podmnozinou SPACE(f(n)). Predstavme si mnozinu TIME(f(n)) - je to mnozina vsech problemu, ktere lze rozhodnout v case f(n). To znamena, ze Turinguv stroj, ktery dany problem rozhoduje, je pri vypoctu schopen precist maximalne f(n) policek pasky - v kazdem kroku vypoctu precte jedno. To ale neznamena, ze slovo zapsane na pasce musi mit delku f(n) - stroj muze po slovu prejizdet tam a zase zpatky, takze efektivne precte vice policek, nez kolik jich slovo obsahuje, ale porad se bude pohybovat v ramci onoho slova.

Co to pro nas znamena? Turinguv stroj, ktery takto „opakovane cte“ slovo zapsane na vstupni pasce musi nutne vykonat vice nez f(n) kroku. Tedy L(M), kde M je takovy stroj, patri do TIME(g(n)), kde g(n) je pocet kroku vykonanych timto strojem. Protoze vsak M nikde neprekroci hranici slova na pasce, musi L(M) patrit do SPACE(f(n)).

Mnozina SPACE(f(n)) tedy obsahuje vsechny problemy, ktere lze rozhodnout v case f(n), protoze ty nepotrebuji vetsi prostor na pasce nez f(n), ale zaroven obsahuje problemy, ktere lze rozhodnout pouze v case delsim, i kdyz k tomu neni treba delsi pasky.

Z dvouradkoveho dukazu ve slidech toto neni vubec zrejme, tak jsem se to tu snazil rozepsat. Doufam, ze ted uz to je jasne.

, 2008/06/21 12:17

Docela by mě zajímalo, jak se na tuto otázku připravujete. Učíte se jenom věty a definice (tj. bez důkazů)? Osobně mi tam toho přijde víc než dost, ale aby po nás u státnic nechtěli alespoň zdůvodnění, proč ty vztahy platí.

, 2008/06/21 13:08

Důkazy se učit asi nebudu jenom základní ideu abych tušil (stejně jako u ostatních otázek)

, 2008/06/21 15:17

Ja si myslim, ze nejake zdovodnenie urcite budu chciet

, 2008/06/22 15:20

Sakrys, je tam docela vyznamna chyba v definici slozitosti Omega(f(n))… r(n)< = 1/c f(n) - ale ma byt r(n) > = 1/c f(n) !!!

, 2008/06/22 15:58

coze? tak bud som slepy alebo neviem :) ved tam je r(n) >= 1/c f(n) :))

, 2008/06/24 10:50

chyba bude mezi monitorem a židlí, skutečně tam je od prvopočátku 1/c :)

, 2008/06/25 16:58

Ted uz je to spravene. Predtim to tak bylo. Mam vytistenou verzi kde je to spatne.

You could leave a comment if you were logged in.
home/inf/in14.txt · Poslední úprava: 2014/10/27 09:07 (upraveno mimo DokuWiki)
Nahoru
CC Attribution-Noncommercial-Share Alike 3.0 Unported
chimeric.de = chi`s home Valid CSS Driven by DokuWiki do yourself a favour and use a real browser - get firefox!! Recent changes RSS feed Valid XHTML 1.0