240 likes | 378 Views
Složitost II. TIN063 Ondřej Čepek. Sylabus. Výpočetní model – DTS a NTS Časová a prostorová složitost výpočtu Technické pomůcky: lineární komprese, lineární zrychlení a redukce počtu pásek Časová (prostorová) konstruovatelnost funkcí a vyčíslitelnost funkcí v lineárním čase (prostoru)
E N D
Složitost II TIN063 Ondřej Čepek
Sylabus • Výpočetní model – DTS a NTS • Časová a prostorová složitost výpočtu • Technické pomůcky: lineární komprese, lineární zrychlení a redukce počtu pásek • Časová (prostorová) konstruovatelnost funkcí a vyčíslitelnost funkcí v lineárním čase (prostoru) • Věty o deterministické časové a prostorové hierarchii • Věty o vztazích mezi časovou a prostorovou složitostí • Translační lemma a nedeterministické hierarchie • Základní složitostní třídy a jejich vzájemné vztahy • Orákulové TS a relativizované třídy • Polynomiální hierarchie
Deterministický Turingův Stroj (DTS) • DTS je abstraktní stroj definovaný pěticí (Q, Σ, δ,q0,F), který se skládá z: • řídící jednotky, která je v každém okamžiku v jednom ze stavů v konečné množině stavůQ, obsahující počáteční stavq0 amnožinu přijímacích stavů F • potenciálně nekonečné (jednosměrné) vstupní pásky (pouze pro čtení) a několika potenciálně nekonečných (jednosměrných)pracovních pásek, které sestávají z buněk, z nichž každá může obsahovat právě jeden symbol abecedy Σ • hlav pro čtení (vstupní páska) a čtení a zápis (pracovní pásky), které se mohou po páskách pohybovat oběma směry (v on-line modelu po vstupní pásce pouze vpravo) • programu, který je zadán přechodovou funkcíδ : Q Σk Q Σk-1 { , , }k,kde k je počet pásek (včetně vstupní), funkce není definována pro všechny vstupy • Konfigurace TS = stav řídící jednotky + pozice hlav na všech páskách (včetně vstupní) + obsah pracovních pásek (té jejich konečné části kde došlo od počátku výpočtu k nějakým změnám) • Počáteční konfigurace TS = stav q0 + všechny hlavy na počátečních pozicích + vstupní slovo na vstupní pásce a prázdná slova (prázdné symboly) na pracovních páskách • Displej TS = stav řídící jednotky + symboly (obsahy buněk) pod všemi hlavami • Krok TS = jedno použití přechodové funkce na základě aktuálního displeje, tj. změna stavu řídící jednotky, přepsání symbolů pod pracovními hlavami a posun všech hlav (lze i zůstat na místě)
Výpočet TS = posloupnost kroků TS začínající v počáteční konfiguraci Zastavení TS = okamžik kdy přechodová funkce není pro daný displej definována (vždy platí pokud je řídící jednotka v přijímacím stavu) Přijímající výpočet TS = výpočet TS, který zastaví v přijímacím stavu Odmítající výpočet TS = výpočet TS, který zastaví v jiném než přijímacím stavu nebo výpočet, který nezastaví (nekonečný výpočet) Přijímané slovo: Slovo w je přijímáno DTS M pokud výpočet M nad vstupním slovem w zastaví v přijímacím stavu. Přijímaný jazyk:Jazyk L(M) přijímaný DTS M sestává ze všech slov přijímaných DTS M. Akceptor x Transducer Dosud popisovaný TS je tzv. akceptor. Pokud chceme, aby TS počítal funkci, tak z něj uděláme transducer přidáním výstupní pásky, která je pouze pro zápis, hlava se po ní pohybuje pouze vpravo a symbol pod hlavou neovlivňuje přechodovou funkci (nepatří do displeje). Transducer může v každém svém kroku zapsat na výstupní pásku 1 symbol. Definičním oborem vyčíslované funkce je přijímaný jazyk daného TS a funkční hodnotou přiřazenou přijímanému vstupnímu slovu je obsah výstupní pásky v okamžiku zastavení. Proč zrovna TS jako výpočetní model? Přesná definice časové i prostorové složitosti výpočtu + Church-Turingova teze.
Prostorová složitost výpočtu DTS Nechť M je DTS takový, že w Σ* takové, že |w| = n, použije M při práci nad vstupním slovem w nejvýše S(n) buněk na pracovních páskách (prostor zabraný vstupním slovem na vstupní pásce se nepočítá). Potom říkáme, že M má prostorovou složitostS(n). Deterministická prostorová složitost jazyka Jazyk L má deterministickou prostorovou složitost S(n) pokud existuje DTS M s prostorovou složitostí S(n), který rozpoznává L, tj. takový že L(M) = L. Časová složitost výpočtu DTS Nechť M je DTS takový, že w Σ* takové, že |w| = n, udělá M při práci nad vstupním slovem w nejvýše T(n) kroků než zastaví. Potom říkáme, že M má časovou složitostT(n) Deterministická časová složitost jazyka Jazyk L má deterministickou časovou složitost T(n) pokud existuje DTS M s časovou složitostí T(n), který rozpoznává L, tj. takový že L(M) = L. Deterministické třídy časové a prostorové složitosti DSPACE(S(n)) = {L | Lmá deterministickou prostorovou složitost S(n)} DTIME(T(n)) = {L | Lmá deterministickou časovou složitost T(n)}
Nedeterministický Turingův Stroj (NTS) Všechny definice stejné jako pro DTS kromě přechodové funkce δ, která je nahrazena tabulkou δ, která přiřazuje každému displeji z množiny Q Σkmnožinu možných pokračování, tj. množinu z potenční množiny P(Q Σk-1 { , , }k). Definice: NTS M přijímá vstup x Σ* tehdy a jen tehdy když existuje přijímající výpočet NTSM na vstupu x (výpočet končící v qy). Jazyk L(M) přijímaný NTS M sestává ze všech vstupních slov přijímaných NTSM. Poznámka: Zatímco u DTS odpovídá jednomu vstupu jeden výpočet, u NTS odpovídá jednomu vstupu strom možných výpočtů (a vstup je přijat když alespoň jedna větev výpočtu končí v přijímající konfiguraci NTS) Alternativní definice NTS: přidáme tzv. hádací pásku. Práce NTS pak sestává ze 2 fází: 1) Na hádací pásku je (nedeterministicky) zapsán řetězec y {1, … ,k}*, kde k je maximální počet možných pokračování pro nějaký displej v tabulce δ. 2) Pomocí y je výpočet na vstupu x změněn z nedeterministického na deterministický. Vstup x je přijat pokud existuje (certifikát) y kódující přijímající výpočet. Poznámka: Řetězec (certifikát) na hádací pásce je vlastně kód nějaké větve výpočtu ve stromu možných výpočtů. Platný certifikát je pak kód větve výpočtu, která končí v přijímající konfiguraci. Vstup je přijímán daným DTS pokud pro něj existuje platný certifikát.
Prostorová složitost výpočtu NTS Nechť M je NTS takový, že w Σ* takové, že |w| = n, použije M při práci nad vstupním slovem w nejvýše S(n) buněk na pracovních páskách (při jakémkoli z možných výpočtů M nad vstupem w). Potom říkáme, že M má prostorovou složitostS(n). Nedeterministická prostorová složitost jazyka Jazyk L má nedeterministickou prostorovou složitost S(n) pokud existuje NTS M s prostorovou složitostí S(n), který rozpoznává L, tj. takový že L(M) = L. Časová složitost výpočtu NTS Nechť M je NTS takový, že w Σ* takové, že |w| = n, udělá M při práci nad vstupním slovem w nejvýše T(n) kroků než zastaví (při jakémkoli z možných výpočtů M nad vstupem w). Potom říkáme, že M má časovou složitostT(n). Nedeterministická časová složitost jazyka Jazyk L má nedeterministickou časovou složitost T(n) pokud existuje NTS M s časovou složitostí T(n), který rozpoznává L, tj. takový že L(M) = L. Nedeterministické třídy časové a prostorové složitosti NSPACE(S(n)) = {L | Lmá nedeterministickou prostorovou složitost S(n)} NTIME(T(n)) = {L | Lmá nedeterministickou časovou složitost T(n)}
Triviální vztahy funkci S(n) : DSPACE(S(n))NSPACE(S(n)) funkci T(n) : DTIME(T(n))NTIME(T(n)) Pokudn: S1(n) ≤ S2(n) pakDSPACE(S1(n)) DSPACE(S2(n)) Pokudn: S1(n) ≤ S2(n) pakNSPACE(S1(n)) NSPACE(S2(n)) Pokudn: T1(n) ≤ T2(n) pakDTIME(T1(n)) DTIME(T2(n)) Pokudn: T1(n) ≤ T2(n) pakNTIME(T1(n)) NTIME(T2(n)) Zpracování výjimek Pomocí přidání nových stavů řídící jednotky TS se lze jednoduše „postarat“ o libovolnou konečnou množinu „výjimečných vstupů“. Zkonstruujeme konečný automat rozpoznávající danou množinu vstupů TS napřed simuluje tento konečný automat (TS při tom nepoužívá pracovní pásky). Pokud je na vstupu jedno z hledaných slov (výjimek) tak se simulace zastaví (a TS přijme nebo odmítne podle druhu výjimky). Pokud na vstupu není žádné z hledaných slov (což TS zjistí nejpozději po přečtení tolika vstupních symbolů ze vstupní pásky kolik jich je v nejdelší výjimce), tak TS odjede hlavou na začátek vstupní pásky a spustí „normální“ výpočet (simuluje původní TS). Zpracováním výjimek se k výpočtu přidá konstantní čas (počet kroků) a nulový pracovní prostor.
Věta (o lineární prostorové kompresi) Nechť je jazyk L přijímán (k+1)-páskovým DTS M(1vstupní a kpracovních pásek), který má prostorovou složitost S(n). Potom rN+existuje (k+1)-páskový DTS M’, který má prostorovou složitost S(n) / ra přijímá jazyk L. Důsledek: (Ekvivalentní formulace) rN+: DSPACE(S(n)) = DSPACE(S(n) / r) Poznámka: Analogicky platí rN+: NSPACE(S(n)) = NSPACE(S(n) / r), důkaz projde beze změny i pro nedeterministický případ. Věta (redukce počtu pásek pro prostorovou složitost) Nechť je jazyk L přijímán (k+1)-páskovým DTS M(1vstupní a kpracovních pásek), který má prostorovou složitost S(n). Potom existuje DTS M’s 1 pracovní páskou, který má prostorovou složitost S(n)a přijímá jazyk L. Poznámka: Důkaz lze upravit i pro NTS. Definice: Nechť f(n) je funkce v proměnné n. Pak infnf(n) je limita pro n největší dolní meze posloupnosti f(n), f(n+1), f(n+2), … Věta (o lineárním zrychlení– část 1) Nechť je jazyk L přijímán k-páskovým DTS M(1vstupní a k-1pracovních pásek), který má časovou složitost T(n) a nechťinfn(T(n) / n) =. Potom c>0existuje DTS M’ s k pracovními páskami, který má časovou složitost cT(n)a přijímá jazyk L. Poznámka: Postačující podmínka: T(n) ω(n) implikuje infn(T(n) / n) =.
Důsledek: Pokud infn(T(n) / n) = pak c>0: DTIME(T(n)) = DTIME(cT(n)). Věta (o lineárním zrychlení– část 2) Nechť je jazyk L přijímán k-páskovým DTS M(1vstupní a k-1pracovních pásek), který má časovou složitost T(n) = cn, kde c>1. Potom >0existuje DTS M’ s k pracovními páskami, který má časovou složitost (1+)na přijímá jazyk L. Důsledek: Pokud T(n) = cn, kde c>1, pak >0: DTIME(T(n)) = DTIME((1+)n). Věta (o lineárním zrychlení– NTS verze) Pokud infn(T(n) / n) = pak c>0: NTIME(T(n)) = NTIME(cT(n)).Pokud T(n) = cn, kde c>1, pak >0: NTIME(T(n)) = NTIME((1+)n). Věta (redukce počtu pásek pro časovou složitost – kvadratická verze) Mějme jazyk L DTIME(T(n)) a nechť buď infn(T(n) / n) = nebo T(n) = cn, kde c>1. Potom existuje DTS M s 1 pracovní páskou, který má časovou složitost T2(n)a přijímá jazyk L. Poznámka: Důkaz lze upravit i pro NTS. Věta (redukce počtu pásek pro časovou složitost – logaritmická verze) Mějme jazyk L DTIME(T(n)). Potom existuje DTS M s 2 pracovními páskami, který má časovou složitost T(n)·log2T(n)a přijímá jazyk L. Poznámka: Důkaz lze opět upravit i pro NTS.
Konstruovatelnost funkcí Definice: Funkce f : N N je rekurzivní tehdy a jen tehdy, když existuje DTS transducer s jednoprvkovou vstupní abecedou takový, že pro vstup 1n (n znaků na vstupní pásce).dává výstup 1f(n) (f(n) znaků na výstupní pásce). Definice: Funkce f : N N je vyčíslitelná v lineárním čase tehdy a jen tehdy, když je rekurzivní a existuje konstanta c a DTS transducer s jednoprvkovou vstupní abecedou takový, že na vstupu 1n udělá nejvýše cf(n) kroků než vydá výstup 1f(n). Definice: Funkce f : N N je vyčíslitelná v lineárním prostoru tehdy a jen tehdy, když je rekurzivní a existuje konstanta c a DTS transducer s jednoprvkovou vstupní abecedou takový, že na vstupu 1n použije nejvýše cf(n) buněk na pracovních páskách než vydá výstup 1f(n). Definice: Funkce f : N N je časově konstruovatelná tehdy a jen tehdy, když existuje DTS takový, že pro každý vstup délky n zastaví po právě f(n) krocích. Definice: Funkce f : N N je prostorově konstruovatelná tehdy a jen tehdy, když existuje DTS takový, že pro každý vstup délky n použije (označí) právě f(n) buněk na pracovních páskáchnež zastaví. Poznámka: Pro příslušný DTS v předchozích dvou definicích lze opět předpokládat, že má jednoprvkovou vstupní abecedu (o výstupu rozhoduje pouze délka vstupu a ne jeho konkrétní obsah).
Lemma: Nechť f1 : N N a f2 : N N jsou funkce takové, že f1 + f2 a f2 jsou časově konstruovatelné a navíc platí >0 n0 n ≥ n0 : f1(n)≥ f2(n) + (1+)n.Potom je také funkce f1 časově konstruovatelná. Věta: Nechť f : N N je funkce taková, že >0 n0 n ≥ n0 : f(n)≥ (1+)n.Potom platí f je časově konstruovatelná f je vyčíslitelná v lineárním čase Věta: Nechť f : N N je funkce. Potom platí f je prostorově konstruovatelná f je vyčíslitelná v lineárním prostoru Důsledek: Každá časově konstruovatelná funkce f taková, že splňuje výše uvedenou podmínku >0 n0 n ≥ n0 : f(n)≥ (1+)n, je také prostorově konstruovatelná. Lemma (o prostorové složitosti univerzálního TS) Nechť x je kód (Gödelovo číslo) DTS M s jednou vstupní a jednou pracovní páskou pracujícího v prostoru S(n), který má vstupní abecedu {0,1} a pracovní abecedu s t symboly. Pak lze práci M na datech y odsimulovat na univerzálním DTS s jednou pracovní páskou (a jednou vstupní páskou, na které je vstup (x,y)) v prostoru max { log2tS(|y|), |x| } Věta (o deterministické prostorové hierarchii) Nechť S1 : N N a S2 : N N jsou funkce takové, že S1o(S2), S2 je prostorově konstruovatelná a S1(n) ≥ log2n. Potom existuje jazyk L pro který platí L DSPACE(S2(n)) \ DSPACE(S1(n))
Lemma (o časové složitosti univerzálního TS) • Nechť x je kód (Gödelovo číslo) DTS M s jednou vstupní a dvěma pracovními páskami pracujícího v čase T(n), který má vstupní abecedu {0,1} a pracovní abecedu s t symboly. Pak lze práci M na datech y odsimulovat na univerzálním DTS se čtyřmi pracovními páskami (a jednou vstupní páskou, na které je vstup (x,y)) v čase 5 |x| T(|y|). • Věta (o deterministické časové hierarchii) • Nechť T1 : N N a T2 : N N jsou funkce takové, že T1 log2 T1 o(T2) a T2 je časově konstruovatelná. Potom existuje jazyk L pro který platí • L DTIME(T2(n)) \ DTIME(T1(n)) • Věta (o vztazích mezi třídami časové a prostorové složitosti) • Nechť f : N N je funkce. Potom platí • NTIME(f(n)) DSPACE(f(n)) • LNSPACE(f(n)), f(n) ≥ log2n cL: LDTIME(cLf(n)) • Poznámka: Část b) předchozí věty neimplikuje inkluzi NSPACE(f(n))DTIME(cf(n)). • Věta (Savičova) • Nechť S : N N je prostorově konstruovatelná funkce taková, že S(n) ≥ log2n. Potom • NSPACE(S(n)) DSPACE(S2(n)).
Lemma (translační) • Nechť S1(n), S2(n) a f(n) jsou prostorově konstruovatelné funkce takové, že S2(n)≥ n a f(n)≥ n. Potom • NSPACE(S1(n)) NSPACE(S2(n)) NSPACE(S1(f(n))) NSPACE(S2(f(n))). • Poznámka: Translační lemma platí i pro DSPACE (stejný důkaz jako pro NSPACE) a pro DTIME a NTIME (jiný, komplikovanější důkaz, jiné předpoklady) • Věta (o nedeterministické prostorové hierarchii – omezená verze pro polynomy) • Nechť ε > 0 a r ≥ 1. Potom existuje jazyk L pro který platí • L NSPACE(nr+ε) \ NSPACE(nr) • Definice: Tvrzení parametrizované číslem n N je pravdivé • skoro všude tehdy a jen tehdy když je nepravdivé pro konečně mnoho n • nekonečně často tehdy a jen tehdy když je pravdivé pro nekonečně mnoho n • Lemma (pomocné č.1) Nechť je jazyk L přijímán DTS M s prostorovou složitostí S(n) skoro všude. Potom existuje DTS M’přijímající L s prostorovou složitostí S(n) (všude). • Lemma (pomocné č.2) Nechť je dán DTS M, délka vstupu n a číslo m N. Potom existuje DTS M’zjišťující, zda m je maximální počet použitých buněk na pracovních páskách při práci M na vstupech délky n. Výpočet M’ vždy skončí a odpoví ANO/NE. • Věta (Borodinova o mezerách) Nechť g(n) ≥ n je rekurzivní funkce. Potom existuje rostoucí rekurzivní funkce S(n) taková, že DSPACE(S(n)) = DSPACE(g(S(n))). • Poznámka: Platí i verze pro NSPACE, DTIME a NTIME.
Základní třídy prostorové a časové složitosti ProstorČas LOG = DSPACE(log n)P = c≥0 DTIME(nc) NLOG = NSPACE(log n)NP = c≥0 NTIME(nc) POLYLOG = c≥0DSPACE(logcn)DEXT = c≥0 DTIME(2cn) PSPACE = c≥0 DSPACE(nc) NEXT = c≥0 NTIME(2cn) NPSPACE = c≥0 NSPACE(nc) EXPTIME = c≥0 DTIME(2(nc)) EXPSPACE = c≥0 DSPACE(2cn) NEXPTIME = c≥0 NTIME(2(nc)) VětaNLOGP PSPACE = NPSPACE NP PSPACE PSPACE EXPTIME NLOGPSPACE EXPSPACE P DEXT EXPTIME
Turingovy stroje s orákulem • Definice: DTS M s orákulemA, kde A je jazyk, se liší od „obyčejného“ DTS takto: • M má navíc tzv. dotazovací pracovní pásku (na které používá abecedu jazyka A). Prostor zabraný během výpočtu na této pásce se počítá do prostorové složitosti M. • M má navíc 3 stavy řídící jednotky: DOTAZ, ANO, NE • Pokud během práce M dojde k přechodu do stavu DOTAZ, tak v následujícím kroku M buď přejde do stavu ANO pokud aktuální obsah dotazovací pásky je slovo z jazyka A nebo přejde do stavu NE pokud aktuální obsah dotazovací pásky není slovo z jazyka A a navíc v obou případech následně vymaže (naráz) celý obsah dotazovací pásky. Jazyk slov přijímaných DTS M s orákulem A značíme L(M,A). • Poznámka: DTS bez orákula lze chápat (z hlediska vzájemné simulovatelnosti) jako DTS s prázdným orákulem (tj. s A = ). • Poznámka: Výpočty DTS s orákulem pro různé jazyky orákula tvoří (stejně jako výpočty NTS bez orákula) strom možných výpočtů (větvících se v konfiguracích, kde je řídící jednotka ve stavu dotaz). NTS a DTS s orákulem ale nemají stejnou výpočetní sílu. • Definice: NTS M s orákulemA, kde A je jazyk, se liší od „obyčejného“ NTS zcela stejně jako DTS s orákulem od obyčejného DTS (jak je definováno výše).
Turingovská převoditelnost a relativizované třídy Definice: Nechť A a B jsou jazyky. Řekneme, že jazyk A je (deterministicky) Turingovsky převoditelný na jazyk B v polynomiální čase, pokud existuje DTS M s orákulem pracující v polynomiálním čase takový, že A = L(M,B). Tento fakt značíme A ≤T B. Poznámka: Slova „v polynomiálním čase“ budeme u Turingovské převoditelnosti často vynechávat. Příklad: Když A P, tak A ≤T(když A P, tak lze A rozpoznávat na DTS bez orákula). Definice: Nechť B je jazyk. Potom P(B) = { A | A≤T B}. Nechť C je třída jazyků. Potom P(C) = { A | B C : A≤T B}. Příklad:P(P) =P Definice: Nechť A a B jsou jazyky. Řekneme, že A je nedeterministicky Turingovsky převoditelný na B v polynomiální čase, pokud existuje NTS M s orákulem pracující v polynomiálním čase takový, že A = L(M,B). Tento fakt značíme A ≤NP B. Definice: Nechť B je jazyk. Potom NP(B) = { A | A≤NP B}. Nechť C je třída jazyků. Potom NP(C) = { A | B C : A≤NP B}. Poznámka: Obdobné definice lze udělat také pro PSPACE(B), LOG(B), DEXT(B), … i pro PSPACE(C), LOG(C), DEXT(C), … Například třída PSPACE(B) je třída jazyků rozpoznatelných pomocí DTS s orákulem B, pracujícím v polynomiálním prostoru.
Platí: Inkluze mezi „obyčejnými“ (nerelativizovanými) třídami se přímo přenášejí i na relativizované třídy. Například pro každý jazyk B platí, že P(B) NP(B) PSPACE(B) a tím pádem pro každou třídu jazyků C platí, že P(C) NP(C) PSPACE(C) Příklad:NP(P) =NP Otázka: Čemu se rovná NP(NP) ?? Polynomiální hierarchie Definice (zjednodušená verze PH) Definujme třídy jazyků 0, 1, 2, … startovní podmínkou 0 =P a rekurzivním předpisem k ≥ 0 :k+1 = NP(k). Potom polynomiální hierarchií rozumíme třídu PH = k ≥0k. Platí: 0 = P , 1 = NP(P) = NP, 2 = NP(NP), … Poznámka: Pokud P =NP, tak k ≥ 0 :k = P a tím pádem PH = P (hierarchie kolabuje). VětaPH PSPACE. Poznámka: Pokud PHnekolabuje, tak je „jemnějším dělením“ mezi P a PSPACE. Definice: Nechť A je jazyk nad abecedou . Pak co-A = {x * | x A} je doplněk A.Nechť C je třída jazyků. Pak co-C = { co-A | A C} je doplněk C.
Definice (úplný popis PH) • Polynomiální hierarchie sestává z k, k a k pro k ≥ 0kde: • 0 = 0 = 0 = P • k ≥ 0 :k+1 = NP(k) • k ≥ 0 :k+1 = co-NP(k) • k ≥ 0 :k+1 = P(k) • Nyní PH = k ≥0k = k ≥0k = k ≥0k (ekvivalence definic plyne z následující věty). • Věta: Následující vztahy platí k ≥ 0 (pokud jsou parametrizovány číslem k): • 1 = NP, 1 = co-NP, 1 = P • k = co-k (a tím pádem k = co-k) • k+1 = NP(k) • k+1 = P(k ) • k+1 = co-NP(k) • k+1 = NP(k+1) • k+1 = co-NP(k+1) • k = co-k • k = P(k) • k kk+1 • k k k • pokud k k (nebo k k) tak k = k
Polynomiální hierarchie a alternující kvantifikátory • Definice: • p(n) x : R(x) znamená x : (|x| p(n)) (xmá vlastnost R) • p(n) x : R(x) znamená x : (|x| p(n)) (xmá vlastnost R) • Nechť C je třída jazyků. Pak C je třída jazyků, kde AC pokud platí • BC polynom p : xA p(|x|) y : (x,y)B • Nechť C je třída jazyků. Pak C je třída jazyků, kde AC pokud platí • BC polynom p : xA p(|x|) y : (x,y)B • Definice: Třída C je uzavřena na zdvojování pokud AC platí, že B={(x,y) | xA }C. • Lemma 1: Nechť C je libovolná třída jazyků. Pak AC co-Aco-C (ekvivalentně co-C=co-C ). Pokud je navíc C je uzavřena na zdvojování, tak C C a C C. • Definice: Nechť A je libovolný jazyk. Pak je jazyk A* definován následujícím předpisem • A* = { x | n y1A … ynA : x=(y1, … ,yn) } • Lemma 2: Nechť C je libovolná třída jazyků z polynomiální hierarchie (tedy k nebo k nebo k pro nějaké k). Pak pro libovolný jazyk A platí AC A*C.
Věta: • P=NP • P=co-NP • k>0: k=k • k>0: k=k • k≥0: k=k+1 • k≥0: k=k+1 • Důsledek 1 (definice PH pomocí alternujících kvantifikátorů) • Ak tehdy a jen tehdy když existují BPa polynom p takové, že • xA p(|x|) y1 p(|x|) y2 … : (x,y1,y2, … ,yk)B • Ak tehdy a jen tehdy když existují BPa polynom p takové, že • xA p(|x|) y1 p(|x|) y2 … : (x,y1,y2, … ,yk)B • Důsledek 2 (kolaps PH na k-té úrovni) • Pokud pro nějaké k>0 platí k=kpak j≥0: k+j=k+j=k. • Důsledek 3Buď k≥0: kk+1 nebo se polynomiální hierarchie skládá z konečně mnoha různých tříd k. • Důsledek 4Pokud existuje k takové že P=0k pak platí PNP.
Převoditelnost a úplnost jazyků DefinicePoly-timetransducer je DTS transducer, který na vstupu velikosti n zastaví po nejvýše p(n) krocích, kde p je (nějaký) polynom. Log-spacetransducer je DTS transducer, který na každém vstupu zastaví a na vstupu velikosti n použije nejvýše log n buněk na pracovních páskách (vstup ani výstup se do pracovního prostoru nepočítají). Definice Jazyk L’je převoditelný na jazyk Lv polynomiálním čase, pokud existuje poly-timetransducer takový, že pro vstup x zkonstruuje výstup y a platí xL’ yL. Jazyk L’je převoditelný na jazyk Lv logaritmickém prostoru,pokud existuje log-spacetransducer takový, že pro vstup x zkonstruuje výstup y a platí xL’ yL. Definice Nechť C je třída jazyků. Jazyk L je úplný pro třídu C vzhledem k převoditelnosti v polynomiálním čase (resp. logaritmickém prostoru), pokud LC a L’C platí, že L’ je v polynomiálním čase (resp. logaritmickém prostoru) převoditelný na L (obdobně lze definovat úplnost vzhledem k dalším typům převoditelností). Definice Jazyk L je P–úplný L je úplný pro třídu P vzhledem k převoditelnosti v logaritmickém prostoru. Definice Jazyk L je NP–úplný L je úplný pro třídu NP vzhledem k převoditelnosti v polynomiálním čase. Definice Jazyk L je PSPACE–úplný L je úplný pro třídu PSPACE vzhledem k převoditelnosti v polynomiálním čase.
Poznámka Pokud bychom definovali: jazyk L je P–úplný L je úplný pro třídu P vzhledem k převoditelnosti v polynomiálním čase, tak každý jazyk ve třídě P kromě jazyků a * je P–úplný. Věta Nechť L je P–úplný. Pak pokud L LOG = DSPACE(log n), tak platí P = LOG. Věta Nechť L je PSPACE–úplný. Pak pokud L k, tak platí PH = k, tedy polynomiální hierarchie kolabuje do třídy k = k. Důsledek Pokud existuje PSPACE–úplný jazyk, tak pokud PH = PSPACE, tak existuje k takové, že PH = k = k, tedy polynomiální hierarchie kolabuje do třídy k. Kvantifikované Booleovské Formule (QBF) Pokud je x Booleovská proměnná, tak x je QBF (a x je v této QBF volná proměnná) Pokud E a E’jsou QBF, tak (E), (E)(E’) a (E)(E’) jsou QBF a výskyty proměnných jsou volné či vázané podle toho jaké jsou v E a E’. Pokud je E QBF, tak x (E) a x (E) jsou QBF. Rozsahem kvantifikátoru jsou všechny volné výskyty proměnné x v E a tyto výskyty se stávají vázanými (status výskytů ostatních proměnných se nemění). Pozorování QBF bez volných proměnných nabývá hodnoty true nebo false. Lze tedy definovat následující rozhodovací problém (QBF problém): Vstup: QBF bez volných proměnných. Otázka: Má daná QBF hodnotu true?
Věta QBF problém je PSPACE–úplný (jazyk kladných instancí QBF problému je PSPACE–úplný). Věta (Ladnerova) Pokud jsou třídy P a NP různé (tedy pokud PNP), tak existuje jazyk A takový, že ANP\ P a zároveň A není NP–úplný.