(č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.)
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:
Č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
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
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
Definice(9), prostorová složitost NDTS
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
Položme Pro říkáme, že r roste asymptoticky alespoň tak rychle jako f.
Položme . Pro říkáme, že g a f jsou asymptoticky ekvivalentní (mají stejný řád růstu)
Nechť . Jestliže
Pak řekneme, že g roste asymptoticky rychleji než f a píšeme
3)
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
Příklady problémů z P:
Nedeterministické složitostní třídy
Definice (12), verifikátor
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
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
Odůvodnění: deterministické TS jsou i nedeterministicke TS.
Důsledek:
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:
Cook-Karpova teze
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 ).
Další známé vztahy mezi složitostními třídami:
Věta 1.
Odůvodnění 3. a 4. části - lze dokázat, že (N)DTS může být upraven tak, aby skončil po krocích a přitom akceptoval stejný jazyk. Důkaz viz slidy8)
Věta 2.
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
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:
Celková klasifikace:
Pro lepší pochopení jsem redukci zařadil před np-úplné problémy.
Definice(11; 1.22) Polynomické redukce
Definici 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
to by měl každý umět dokázat na požádání, pro jistotu:
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
Věta 23; 1.27
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.
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
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ší.
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í
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.
Je potřeba ještě zapracovat poznámky od Jitky Pospíšilové.
Diskuze
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.
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 “. 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
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ě….
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.
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.
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í.
Důkazy se učit asi nebudu jenom základní ideu abych tušil (stejně jako u ostatních otázek)
Ja si myslim, ze nejake zdovodnenie urcite budu chciet
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) !!!
coze? tak bud som slepy alebo neviem :) ved tam je r(n) >= 1/c f(n) :))
chyba bude mezi monitorem a židlí, skutečně tam je od prvopočátku 1/c :)
Ted uz je to spravene. Predtim to tak bylo. Mam vytistenou verzi kde je to spatne.