Pokročilá teória zložitosti voľne naväzuje na predmet Výpočtová zložitosť.
Sylaby:
Rozvrh: 8:10, utorok a štvrtok
Kontakt: kuko[at-sign]ksp[dot]sk
Literatúra:
Materiály:
Problémy riešiteľné deterministicky v polynomiálnom čase, napr. na Turingovom stroji, alebo na RAM. Tiež problémy riešiteľné (logspace) uniformnými obvodmi polynomiálnej veľkosti. P = AL, teda sú to tiež problémy riešiteľné v logaritmickom priestore alternujúcim TS.
Problémy CVS (circuit value problem – vyhodnotiť daný boolovský obvod) či LP (lineárne programovanie) sú P-úplné (pri logspace redukcii).
NP sú problémy riešiteľné nedeterministicky v polynomiálnom čase. Ekvivalentne, sú to také problémy, že ak nám niekto povie riešenie, vieme ho efektívne overiť. Problémy v NP majú pravdepodobnostne overiteľné dôkazy, NP = PCP[O(log n),O(1)]. coNP tvoria komplementy jazykov v NP.
NP-úplné sú napr. SAT, ILP (celočíselné lineárne programovanie), CLIQUE, VERTEX-COVER, HAMILTON-CIRCUIT, 3-COLORING. Zistiť, či je daná formula tautológia, je coNP-úplný problém.
Problémy riešiteľné v polynomiálnom priestore, napr. na TS alebo RAM. Podľa Savitchovej vety je PSPACE = NPSPACE (nedeterministický polynomiálny priestor). Podľa Immerman-Szelepcsényiho vety je priestor uzavretý na komplement, teda PSPACE = coPSPACE. Ďalšia charakterizácia je PSPACE = AP – sú to práve problémy riešiteľné v polynomiálnom čase alternujúcim TS; a PSPACE = IP (interaktívne dokazovacie systémy).
PSPACE-úplné sú QBF (quantified boolean formula), GEOGRAPHY, Sokoban, Reversi, ekvivalencia regulárnych výrazov, atď.
EXP sú problémy riešiteľné v exponenciálnom čase (t.j. O(2poly(n))). EXP = APSPACE – polynomiálny priestor + alternácie. NEXP to isté nedeterministicky. NEXP sú problémy, ktoré majú interaktívne dokazovacie systémy s aspoň dvoma provermi, NEXP = MIP, resp. pravdepodobnostne overiteľné dôkazy, NEXP = PCP[poly(n),poly(n)] = PCP[poly(n),O(1)].
Hry ako dáma, šach (zovšeobecnený), či Go (s japonským pravidlom ko) sa ukázali ako EXP-úplné. Rôzne varianty NP-úplných problémov, kde vstup zapíšeme úsporne sú NEXP-úplné, napr. úsporný 3SAT: na vstupe je obvod, ktorý kóduje exponenciálne dlhú formulu – je splniteľná?
Polynomiálna hierarchia je hierarchia tried medzi P a PSPACE. P = ΣP0 ⊆ NP = ΣP1 ⊆ ΣP2 ⊆ ... ⊆ PH ⊆ PSPACE, resp. P = ΠP0 ⊆ coNP = ΠP1 ⊆ ΠP2 ⊆ ... ⊆ PH ⊆ PSPACE. Definovať k-ty stupeň hierarchie môžeme cez alternujúce TS, ktoré iba (k-1)-krát alternujú alebo cez TS s orákulom: ΣPk+1 = NP ΣPk alebo cez polynomiálne relácie: L ∈ ΣPk, ak y∈L práve vtedy, keď ∃x1∀x2...(∃/∀)xk R(y,x1,...,xk). ΠPk+1 = coNPΠPk = co-ΣPk+1.
Hoci PH samotná asi nemá úplné problémy (inak skolabuje), na každej úrovni je úplný problém zistiť, či je kvantifikovaná formula s k kvantifikátormi pravdivá.
Neuniformné triedy obvodov polynomiálnej veľkosti. Pre každú veľkosť vstupu máme iný obvod. Ekvivalentná definícia je cez TS, ktorým pre každú veľkosť vstupu môžeme dať "radu" polynomálnej veľkosti. Rada závisí iba od dĺžky vstupu, nie od vstupu samotného.
P/poly je trochu čudná trieda v tom, že obsahuje aj nerozhodnuteľné jazyky (odpovede môžeme zadrátovať do obvodu vďaka neuniformnosti). Avšak veríme, že ani neuniformné polynomiálne obvody nedokážu riešiť SAT (inak skolabuje PH). BPP ⊆ P/poly.
NC zachytáva pojem "efektívne paralelné algoritmy". NC je trieda problémov, ktoré sa dajú na PRAM riešiť paralelne v polylogaritmickom čase s polynomiálnym počtom procesorov. Ekvivalentná definícia cez obvody: NC = AC sú problémy riešiteľné (uniformnými) obvodmi (s AND/OR/NOT) polynomiálnej veľkosti a polylogaritmickej hĺbky. Obvody v NC majú AND/OR hradlá s dvoma vstupmi, v AC môžu mať neobmedzene veľa vstupov. Pre AC a NC môžeme zadefinovať hierarchie, pričom na k-tej úrovni povolíme obvody hĺbky O(logk n). Zrejme AC0 ⊆ NC1 ⊆ AC1 ⊆ NC2 ⊆ AC2 ⊆ ... Podľa Barringtonovej vety NC1 sú práve problémy riešiteľné vetviacimi programmi šírky 5. Vieme, že AC0 ≠ NC1, predpokladá, sa že hierarchia je striktná celá, ale je to otvorený problém.
AC0 obsahuje napr. neregulárny jazyk anbn, sčítanie celých čísel, násobenie boolovských matíc, ale nedokáže spočítať paritu (regulárny jazyk!), či majoritu (je na vstupe viac 0 alebo 1?). NC1 obsahuje všetky regulárne jazyky, súčin celých čísel, AC1 vie počítať tranzitívny uzáver matice a teda napr. či v danom grafe existuje cesta medzi dvoma vrcholmi. AC1 vie rozoznávať všetky bezkontextové jazyky.
Deterministický, resp. nedeterministický logaritmický priestor. NL = coNL. NC1⊆ L ⊆ NL = coNL ⊆ AC1.
Hľadanie cesty v orientovanom grafe je NL-úplný problém. Úloha sa pre neorientované grafy dá riešiť deterministicky v L (ťažký výsledok založený na derandomizovaní náhodnej prechádzky po grafe).
Problémy riešiteľné efektívnymi pravdepodobnostnými algoritmami, ktoré sa môžu pomýliť (jedným aj druhým smerom) s pravdepodobnosťou 1/3 (dá sa zlepšiť na exponenciálne malú pravdepodobnosť). BPP ⊆ P/poly a zároveň BPP ⊆ ΣP2. Predpokladá sa, že P = BPP, teda každý BPP problém sa dá efektívne derandomizovať (otvorený problém).
O známom probléme testovania prvočíselnosti sa nakoniec ukázalo, že sa dá riešiť deterministicky v polynomiálnom čase (hoci v praxi sa dodnes používajú rýchlejšie pravdepodobnostné algoritmy). Problém testovania, či sa dva polynómy viacerých premenných (nad nejakým konečným poľom) rovnajú, je v BPP (stačí polynómy vyhodnocovať na náhodných vstupoch). Zatiaľ sa nevie, či sa dá efektívne derandomizovať.
Trieda funkcií (nie rozhodovacích problémov) f, ktoré predstavujú počet riešení problémov v NP (počet akceptačných výpočtov NTS). Prekvapujúco, PH ⊆ P#P ⊆ PSPACE.
Problém #SAT (počet splňujúcich ohodnotení), či #PERFECT-MATCHING (počítanie perfektných párovaní) je #P-úplné.