(č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é.