SLOšITOST PRO KRYPTOGRAFII T PÁN HOLUB Obsah 1. Algoritmy a problémy 1 2. Turingovy stroje 3 3. Rekursivní funkce a jazyky 5 4. Nedeterministické stroje 9 5. Sloºitostní t ídy 10 6. Realisti t j²í výpo etní modely 12 6.1. Vícepáskové Turingovy stroje 12 6.2. Stroje RAM 13 7. Vztahy mezi t ídami 16 8. Booleovské formule a obvody 21 9. Redukce a úplnost 24 10. Alternativní charakteristika t ídy NP 25 11. NP-úplnost 26 12. Pravd podobnostní odhady 31 13. Pravd podobnostní algoritmy a sloºitostní t ídy 34 14. Neuniformní sloºitost 37 15. Rozli²itelnost náhodných distribucí 39 16. Jednosm rné funkce a t ºký bit 42 17. Pseudonáhodné generátory 45 18. D kazové systémy 47 1. Algoritmy a problémy V matematice se asto setkáváme s tvrzeními týkajícími se objekt, které neumíme zkonstruovat. M ºeme nap. denovat mnoºinu, na které dva homomorsmy (nap. volné pologrupy) nabývají stejných hodnot, nebo mnoºinu posloupností generujících prvk grupy, jejichº sou in je roven jedné. Zájem o konstruktivní stránku matematiky byl v moderní matematice spí²e okrajový. Rozvoj výpo etní techniky, který poskytl matematice d íve netu²ené moºnosti, zájem o problematiku konstruktivního p ístupu výrazn posílil. Moºnosti poskytnuté po íta em obrátily pozornost k hranicím t chto moºností. Navzdory naivnímu p edpokladu, ºe hranice moºností výpo etní techniky spo ívají pouze v technické stránce v ci, se objevila celá v dní disciplína týkající se samotné moºnosti n jaký problém algoritmicky vy e²it. Ukázalo se totiº, ºe n které jednodu²e formulované problémy takové algoritmické e²ení nemají, a to nikoli z d vodu nedostate ného d vtipu programátor nebo technické nedokonalosti hardwaru, nýbrº z hlubokých a podstatných teoretických d vod. Z ejm nejslavn j²ím p íkladem takové nerozhodnutelné úlohy je tzv. Hilbert v desátý problém, který byl sou ástí seznamu p edloºeného slavným n meckým matematikem Davidem Hilbertem v roce 1900 jako výzva pro matematiku 20. století: ZS 2014/2015. 1
2 T PÁN HOLUB 10. Ur ení e²itelnosti diofantické rovnice. J e dána diofantická rovnice s libovolným po tem neznámých a racionálními íselnými koecienty: je t eba sestavit postup, kterým je moºno kone ným po tem krok ur it, zda je rovnice e²itelná v oboru celých ísel. (10. Entscheidung der Lösbarkeit einer diophantischen Gleichung. Eine diophantische Gleichung mit irgendwelchen Unbekannten und mit ganzen rationalen Zahlkoecienten sei vorgelegt: man soll ein Verfahren angeben, nach welchen sich mittels einer endlichen Anzahl von Operationen entscheiden lässt, ob die Gleichung in ganzen rationalen Zahlen lösbar ist.) Negativní e²ení tohoto problému, tedy d kaz, ºe takový postup neexistuje, podal v roce 1970 Jurij Matijasevi. Tvrzení, ºe neexistuje postup, který by v kone ném po tu krok vy e²il n jaký problém, vyºaduje up esn ní. Takovým postupem by totiº mohla být nap. soust ed ná snaha v²ech ºijících matematik o dané rovnici rozhodnout, zda je, nebo není e²itelná. Není jasné, jak by bylo v bec moºné dokázat, ºe takový postup nevede v kone ném ase k cíli. Od postupu, poºadovaného Hilbertem, o ekáváme intuitivn n kolik vlastností: Uniformita. S kaºdým p ípadem se zachází stejn. Jednozna nost. V kaºdé fázi postupu musí být z ejmé, jak pokra ovat. (P ípadn musí existovat kone n mnoho pokra ování, mezi nimiº se p edepsaným postupem, nap. hodem mincí, vybírá.) Mechani nost. Postup nesmí vyºadovat ºádný d vtip. Musí být realizovatelný mechanickým za ízením, strojem, resp. d kladným ú edníkem bez vlastního názoru. V pr b hu dvacátého století bylo navrºeno n kolik model popisujících, jak má takový postup vypadat. Budeme je nazývat výpo etní modely. Nejslavn j²í a nejd - leºit j²í výpo etní model navrhl Alan Turing ve svém lánku z roku 1936 On computable numbers with an application to the Entscheidungsproblem, Proc. London Math. Soc. 42 (1936) 230265. Po svém tv rci se nazývá Turing v stroj (Turing machine) a budeme se jím podrobn zabývat. Zmín ný lánek je pozoruhodný tím, ºe obsahuje nejen geniální intuice, ale také detailní rozpracování problému aº k popisu tzv. univerzálního stroje, coº je vlastn první opera ní systém. Turing také d kladn vysv tluje, pro se domnívá, ºe jím navrºený výpo etní model zahrnuje v²echny postupy, které je moºno rozumn povaºovat za algoritmus ve vý²e uvedeném smyslu. Toto p esv d ení se proslavilo pod názvem Churchova, resp. Churchova-Turingova teze: Churchova-Turingova teze: Kaºdý výpo etní postup lze realizovat Turingovým strojem. Churchova teze není matematické tvrzení, protoºe pojem výpo etního postupu je zaloºen pouze na intuici. Soust ed ný zájem v²ech matematik nap. za výpo etní postup nepovaºujeme, protoºe nespl uje (p inejmen²ím) podmínku mechani nosti. Kde je ale p esná hranice výpo etních postup není apriori jasné. P esto je tato teze v²eobecn p ijímána, protoºe argumenty uvád né Turingem v její prosp ch jsou velmi p esv d ivé a navíc ji potvrzuje intenzivní výzkum v pr b hu celého dvacátého století, kdy se ukázalo, ºe v²echny alternativní výpo etní modely jsou s Turingovým strojem ekvivalentní (nebo slab²í). V²eobecný souhlas s Churchovou tezí vede k tomu, ºe bývá obracena a pouºívána jako denice výpo etního postupu:
SLOšITOST PRO KRYPTOGRAFII 3 Denice 1.1 (Obrácená Churchova teze). Výpo etním postupem (algoritmem) je to a jen to, co lze realizovat Turingovým strojem. Prot j²kem algoritmu je algoritmický problém. Uve me n kolik p íklad : P íklad 1.2. (1) Pro dané p irozené íslo najdi n jaký jeho faktor. (2) Zjisti, zda dané p irozené íslo je prvo íslo. (3) Zjisti, zda daná diofantická rovnice má e²ení. (4) Najdi nejkrat²í cestu mezi dv ma body orientovaného grafu. (5) Zjisti, zda v daném grafu existuje hamiltonovská cesta. Algoritmický problém se li²í od oby ejného problému v tom, ºe nehledáme odpov pro jednotlivý p ípad (nap. jednotlivý graf), ale algoritmus, který najde odpov pro v²echny moºné vstupy. Algoritmický problém je tedy mnoºina instancí, tedy v²ech moºných zadání problému. Tato mnoºina je typicky nekone ná. Problémy s kone n mnoha instancemi nejsou z teoretického hlediska zajímavé, protoºe vºdy existuje algoritmus, který spo ívá v tabulce správných odpov dí. (Existují samoz ejm i problémy s kone n mnoha instancemi, které jsou z praktického hlediska zajímavé, nap. problém rozhodnout v dané pozici na ²achovnici, zda existuje vít zný tah.) Na druhou stranu, kaºdá instance problému musí být kone ná, aby mohla být zadána. Problém je tedy typicky spo etná mnoºina instancí. Podle typu odpov di rozeznáváme problémy vyhledávací a rozhodovací. U rozhodovacího problému o ekáváme odpov ANO/NE (jsou to nap. vý²e uvedené problémy 2, 3 a 5), vyhledávací problém má v t²í mnoºinu moºných odpov dí, typicky op t spo etn nekone nou (nap. problémy 1 a 4). Z praktických d vod asto omezíme na²e zkoumání na problémy rozhodovací. Toto omezení není tak zásadní, jak by mohlo vypadat. Vyhledávací problémy lze p evést na sérii rozhodovacích problém typu: je i-tý bit odpov di 0 nebo 1?. Pokud je nap. takový rozhodovací problém polynomiální, je také výsledný vyhledávací algoritmus polynomiální. 2. Turingovy stroje Stroj, který jako univerzální výpo etní model navrhl Turing, má podobu na ob strany nekone né pásky rozd lené na polí ka a opat ené hlavou, která se v daném okamºiku nachází na jednom polí ku pásky. Polí ka mohou být prázdná nebo nést r zné symboly vybrané z n jaké kone né mnoºiny. Hlava m ºe íst a p episovat symbol na polí ku, na kterém se nachází, a pohybovat se po pásce vpravo nebo vlevo. Krom toho obsahuje vnit ní pam, která m ºe nabývat kone ného po tu stav. Na po átku výpo tu je páska prázdná aº na kone nou souvislou posloupnost polí ek, která nese vstup. Hlava je na prvním polí ku vstupu. Chování stroje se ídí programem, coº je mnoºina instrukcí p edepisujících, co má hlava v daném okamºiku v závislosti na svém stavu a teném symbolu d lat. Algoritmus je skryt práv v programu, z matematického hlediska je Turing v stroj totoºný se svým programem. Matematicky tedy denujeme Turing v stroj následovn. Denice 2.1 (Turing v stroj). Nech Σ a Q jsou neprázdné kone né mnoºiny. Mnoºinu Σ nazveme mnoºinou symbol, mnoºinu Q mnoºinou stav. Mnoºina Σ obsahuje symbol, který znamená prázdné polí ko. Mnoºina Q obsahuje jeden význa ný prvek q s, který nazýváme po áte ní stav. Nech M = {,, }. Program Turingova stroje je libovolná podmnoºina P Q Σ Q Σ M. Libovolný prvek (q, s, q, s, m) P se nazývá instrukce. Turing v stroj je tve ice T = (Q, Σ, q s, P ).
4 T PÁN HOLUB Mnoºinu v²ech Turingových stroj zna íme TM. Mnoºinu kone ných posloupností symbol z mnoºiny Σ (v etn prázdné posloupnosti) zna íme Σ. Takové posloupnosti pí²eme typicky bez árek a nazýváme je slova, p i emº prvky Σ nazýváme písmena. Mnoºinu neprázdných slov zna íme Σ +. Turing v stroj T spolu se svým vstupem x Σ denuje výpo et. Na po átku výpo tu je hlava umíst na na prvním symbolu vstupu. Výpo et sestává z jednotlivých krok. Kaºdý krok spo ívá v aplikaci jedné instrukce a je dán okamºitým popisem stroje v daném okamºiku. Okamºitý popis je dvojice (q, s) Q Σ, kde q je momentální stav hlavy a s je symbol na polí ku, na kterém se hlava práv nachází, tzv. tený symbol. Následující krok je dán instrukcí (q, s, q, s, m) P a má t i sloºky: tený symbol se zm ní z s na s, stav hlavy se zm ní z q an q, hlava provede pohyb m. Moºné pohyby hlavy jsou t i. znamená pohyb na sousední levé polí ko, pohyb na sousední pravé polí ko a znamená, ºe hlava z stane na stejném polí ku, na kterém byla na za átku kroku. Výpo et skon í, pokud se stroj dostane do okamºitého popisu, pro který neexistuje ºádná instrukce (coº typicky znamená, ºe dosáhl koncového stavu). Po ukon ení výpo tu z stane na pásce výstup, coº je posloupnost neprázdných symbol, které se na pásce vyskytují. Pokud výpo et neskon í, ekneme, ºe výpo et stroje T na vstupu x diverguje. Jinak íkáme, ºe konverguje. Na Turingovy stroje se asto kladou dodate né poºadavky, které usnad ují jejich studium. Takové dodate né poºadavky budeme vzná²et, kdykoli to bude vhodné. Vºdy by m lo být z ejmé, ºe nemají vliv na zkoumané vlastnosti. K nej ast j²ím poºadavk m pat í: Výpo et, pokud konverguje, kon í vºdy v jednom koncovém stavu, který se jinak b hem výpo tu nepouºívá. Stroj nikdy nezapisuje prázdný symbol. V tomto p ípad se obvykle zavádí nový pseudoprázdný symbol, který odli²í prázdné nenav²tívené polí ko od prázdného nav²tíveného a který není povaºován za sou ást výstupu. Výstup je souvislý, není p eru²en prázdnými ani pseudoprázdnými symboly. Hlava nikdy nez stává na míst. Mnoºina M se tedy omezuje na {, } Na²e denice Turingova stroje nevyºaduje, aby pro daný okamºitý popis existovala jediná instrukce. Pokud existuje instrukcí více, není výpo et denován jednozna n. Turingovy stroje jsou tedy obecn nedeterministické. Pokud chceme tuto skute nost zd raznit, pí²eme NTM místo TM. Pokud má stroj T pro kaºdý okamºitý popis jedinou instrukci, nazývá se deterministický. Mnoºinu deterministických Turingových stroj ozna ujeme DTM. Deterministický stroj chápeme jako zvlá²tní p ípad stroje nedeterministického, je tedy DTM NTM. Okamºitý popis Turingova stroje je lokální, omezuje se na situaci v míst hlavy. Celkový stav pásky v daném okamºiku nazýváme úplný popis nebo snímek stroje. Snímek zapisujeme σ = ω u 1 q u 2, ω, kde u 1 u 2 je úsek pásky obsahující neprázdné symboly. Pokud p ijmeme konvenci, ºe stroj nezapisuje prázdné symboly, je u 1 u 2 (Σ \ {}). Hlava te první symbol z u 2 a je ve stavu q. Po áte ní a koncové ω m ºeme vynechávat.
SLOšITOST PRO KRYPTOGRAFII 5 Po áte ní snímek stroje se vstupem x je tedy q s x. Turing v stroj T denuje relaci δ T mezi snímky. Pí²eme δ T σ2, pokud snímek σ 2 vznikne ze snímku σ 1 jedním krokem. P íklad 2.2. Instrukce (q, 1, q, 0, ) p evádí snímek 10q10 na 100q 0. Tranzitivní obal relace δ T zna íme δ T. Zápis σ 1 σ 1 δ T σ 2, tedy znamená, ºe existuje (libovoln dlouhý) výpo et, který p evádí snímek σ 1 na snímek σ 2. V p ípad deterministického Turingova stroje existuje pro kaºdý vstup nejvý²e jeden výstup nebo stroj diverguje. Pro T DTM ozna ujeme výstup T na vstupu x jako T (x), p i emº pro divergující výpo et denujeme nový symbol a pí²eme T (x) =. Skute nost, ºe Turing v stroj je totoºný se svým programem m ºe být matoucí. O ekáváme, ºe stroj se bude podobat spí²e po íta i, který programy vykonává. Po íta je ov²em také program, a sice opera ní systém, který umí v²echny ostatní programy realizovat. Tomu odpovídá pojem univerzálního Turingova stroje. Tvrzení 2.3. Existuje Turing v stroj U DTM takový, ºe pro kaºdý T DTM platí U([T ], x) = T (x), kde [T ] je n jaký vhodný kód stroje T. Práce univerzálního stroje U je zaloºena na simulaci práce stroje T, který je na vstupu reprezentován n jakým svým kódem, nejtypi t ji n jakým zápisem svých instrukcí. My²lenka, ºe v²echny moºné algoritmy je moºné realizovat jediným strojem pomocí programu, který je uloºen v pam ti podobn jako vstup (tzv. stored-program computer ), je zásadním p ínosem Alana Turinga a znamenala faktický za átek teoretické informatiky. Poznamenejme, ºe p vodní Turing v lánek obsahuje detailní popis programu univerzálního stroje. 3. Rekursivní funkce a jazyky Vstupem i výstupem Turingova stroje je n jaký prvek Σ. Deterministický stroj T tedy m ºeme chápat jako zobrazení Σ Σ. To je v souladu se zvoleným zápisem T (x) = y, pokud je y výstupem stroje T na vstupu x. Zd razn me, ºe tato denice dává dobrý smysl pouze pro deterministické stroje. Pokud stroj na vstupu x diverguje, pí²eme T (x) =, coº je nejlep²í chápat tak, ºe funkce T není na x denována. Σ je spo etná mnoºina, lze ji tedy o íslovat p irozenými ísly. O íslováním n jaké mnoºiny S rozumíme libovolnou bijekci f : N S. Nejvhodn j²í o íslování mnoºiny Σ je dáno jeho maximo-lexikograckým uspo ádáním. Denice 3.1 (Maximo-lexikogracké uspo ádání). Uvaºujme n jaké lineární uspo- ádání prvk Σ a p íslu²né lexikogracké uspo ádání < na Σ. Maximo-lexikogracké uspo ádání odpovídající < je denováno pravidly: a) Je-li u del²í neº v, pak v u. b) Mají-li u a v stejnou délku, je u v práv kdyº je u < v. Takto denujeme bijekci ϕ : N Σ. ϕ(0) je prázdný et zec a ϕ(i) je i-té neprázdné slovo v uspo ádání. P irozenost tohoto uspo ádání spo ívá v tom, ºe
6 T PÁN HOLUB pokud Σ = {1, 2,..., k} a < je b ºné uspo ádání, pak ϕ(m) je k-adický zápis ísla m, tj. ( j ) c j c j 1... c 1 = ϕ c i k j i. Nyní se zam íme na deterministické stroje. Uvaºujeme-li o íslování Σ p irozenými ísly, odpovídá kaºdý deterministický Turing v stroj T DTM áste né funkci f T : N N, která není denována na vstupech, na kterých T diverguje. V tomto smyslu kaºdý algoritmus spo ívá ve výpo tu n jaké funkce: pro danou instanci/vstup/ íslo ur it odpov /výstup/obraz. Denice 3.2 (Rekursivní funkce). ƒáste ná funkce f : N N, pro kterou existuje n jaký T DT M takový, ºe f = f T, se nazývá áste ná rekursivní. Je-li áste ná rekursivní funkce denovaná na celém N nazývá se úplná rekursivní nebo prost rekursivní. Mnoºinu v²ech áste ných rekursivních funkcí budeme zna it PRF (partial recursive functions) a mnoºinu rekursivních funkcí RF. ekli jsme, ºe kaºdý deterministický Turing v stroj p edstavuje n jakou áste nou rekursivní funkci. To ov²em neznamená, ºe m ºeme mnoºiny DTM a PRF ztotoºnit. DTM obsahuje v²echny deterministické Turingovy stroje, tedy v²echny moºné deterministické seznamy instrukcí. Mnoho r zných Turingových stroj v²ak po ítá stejnou funkci. Sta í uváºit stroj, ke kterému p idáme stav, který nebude nikdy dosaºen. Pro takový stav pak m ºeme libovoln tvo it instrukce, aniº se p íslu²ná funkce zm ní. O objektech, které lze algoritmicky zkonstruovat íkáme, ºe existují efektivn, jako v následujícím tvrzení. V n m se také poprve setkáváme s klí ovou my²lenkou teorie rekursivních funkcí: Vzhledem k tomu, ºe Turing v stroj je dán mnoºinou svých instrukcí, je moºné ho chápat jako n jaké slovo, n jakou posloupnost znak z kone né abecedy. Turingovy stroje sice obecn obsahují neomezen mnoho symbol a stav, ale v²echny je lze zakódovat kone nou abecedou (sta í binární abeceda, coº se, jak dob e víme, skute n d je ve výpo etní technice). Turing v stroj se tedy m ºe stát svým vlastním vstupem, coº je, jak uvidíme pozd ji, velmi d leºité. Tvrzení 3.3. Existuje kódování (deterministických) Turingových stroj, které lze efektivn o íslovat. D kaz. Zvolme n jakou xní kone nou abecedu Σ a uvaºujme v této abeced n jaké kódování mnoºiny TM Turingových stroj. Tedy TM Σ +. M ºeme zvolit Σ = {0, 1} nebo, pro lep²í p edstavu, n jakou bohat²í abecedu, nap. Σ = {0, 1, $, (,, )}. Zakódovaný Turing v stroj pak m ºe vypadat nap. takto: (0 0 1 0 1)$(0 1 0 1 1)$(1 1 1 1 1)$(1 10 10 10 1)$(0 10 10 0 1) Turingovy stroje budeme íslovat podle maximo-lexikograckého uspo ádání. Ozna me takové o íslování G : N TM. Hodnota G(i) je kód Turingova stroje, který je i-tým slovem z TM vzhledem k maximo-lexikograckému uspo ádání. Ukaºme, ºe funkce G je rekursivní. Turing v stroj, který ji po ítá, bude postupn v maximo-lexikograckém uspo ádání generovat v²echna slova ze Σ +. U kaºdého slova ov í, zda se jedná o platný kód (deterministického) Turingova stroje, a pokud ano, zvý²í své po ítadlo (vyhrazený kus pásky) o jedna. Ve chvíli, kdy na po ítadle dosáhne vstupní hodnotu i, oznámí jako výstup poslední nalezený kód Turingova stroje. My²lenka íslování mnoºiny kone ných posloupností pochází od Kurta Gödela, který ji poprve pouºil v kontextu formální logiky pro o íslování logických formulí. i=1
SLOšITOST PRO KRYPTOGRAFII 7 Na jeho po est pouºíváme zna ení G. Takové o íslování se také n kdy nazývá Gödelovo. Po p edchozím positivním výsledku obrátíme svou pozornost k výsledk m negativním. Optimistická p edstava, podle které lze kaºdý problém e²it algoritmicky, je neudrºitelná uº proto, ºe v²ech funkcí je nespo etn mnoho (kontinuum), zatímco Turingových stroj, a tedy rekursivních funkcí jen spo etn. M ºeme tedy dokonce íci, ºe funkce jsou v drtivé v t²in nerekursivní. Problémy, které nás v matematice zajímají, jsou ov²em vºdy formulovány n jakým kone ným popisem. Není tedy p edem z ejmé, zda existují n jaké nerekursivní p irozené problémy. Jak jsme uvedli v úvodu, ukazuje se, ºe i velmi konkrétní matematické problémy jsou nerekursivní, neboli nerozhodnutelné. V²imn te si, ºe terminologie je z historických d vod dosti rozr zn ná. Termíny efektivní, rekursivní, rozhodnutelný mají v podstat totoºný význam, a koli se pouºívají v r zných kontextech (efektivní íslování, rekursivní funkce, rozhodnutelný problém). Historicky nejstar²í a teoreticky nejd leºit j²í nerozhodnutelné problémy se týkají otázky, zda daný stroj na daném vstupu konverguje, coº souvisí s otázkou zda je funkce po ítaná daným stroj úplná. Ozna me UTM mnoºinu deterministických stroj, které po ítají úplnou funkci. Tvrzení 3.4. Neexistuje efektivní o íslování mnoºiny UTM. D kaz. Budeme postupovat sporem. P edpokládejme, ºe existuje rekursivní funkce G : N UTM. Uvaºme funkci F : N N denovanou p edpisem F (i) := f G(i) (i) + 1. Ukaºme, ºe funkce F je rekursivní. Díky rekursivit G lze pro dané i efektivn nalézt stroj M = G(i) UTM, který po ítá funkci f G(i), a pomocí tohoto stroje pak spo ítáme hodnotu F (i) jako výstup M na vstupu i zv t²ený o jedna. Funkce F je navíc úplná, a proto existuje stroj T UTM, který ji po ítá, a p irozené íslo i F, pro které G(i F ) = T. Spor dosáhneme otázkou po hodnot funkce F v bod i F. Podle denice F platí Av²ak funkce je rovna F, a tudíº spor. F (i F ) = f G(iF )(i F ) + 1 f G(iF ) F (i F ) = F (i F ) + 1, Hlavní my²lenka p edchozího d kazu se nazývá diagonální argument, protoºe funkce F byla denována jako diagonála tabulky hodnot funkcí G(i) zv t²ená o jednu. Stejný postup znáte z d kazu toho, ºe reálná ísla v intervalu [0, 1] nelze o íslovat p irozenými ísly. Následující v ta je prototyp a zdroj v²ech v t o nerozhodnutelnosti. V ta 3.5. Nelze rozhodnout, zda se Turing v stroj na daném vstupu zastaví (neboli zda je daná áste n rekursivní funkce na dané hodnot denovaná). D kaz. Nech G je efektivní íslování DTM, zaru ené Tvrzením 3.3. Chceme pouºít diagonální argument a funkci F podobn jako v p edchozí v t. Nyní ov²em G(i) m ºe v bod i divergovat. Denujme tedy F takto { f G(i) (i) + 1, pokud se G(i) na vstupu i zastaví, F (i) := 0, pokud G(i) na vstupu i diverguje.
8 T PÁN HOLUB Je-li funkce F rekursivní, dostaneme spor jako v p edchozí v t. Jediným d - vodem, pro F není rekursivní m ºe být neexistence algoritmu, který rozhodne, kterou ze dvou v tví denice F pouºít. Tím je v ta dokázána. P edchozí v ta se asto formuluje slovy: HaltingProblem je nerozhodnutelný. Zd razn me, ºe nerozhodnutelnost problému neznamená, ºe pro n j nelze v konkrétním p ípad nalézt e²ení. Znamená neexistenci algoritmu, který bude úsp ²ný pro v²echny instance. V p edchozím textu jsme uvedli do souvislosti algoritmy a funkce N N. V p ípad rozhodovacích problém, tj. takových, u kterých je výstupem odpov ANO nebo NE, je situace je²t o n co jednodu²²í. Za obor hodnot p íslu²ných funkcí m ºeme povaºovat mnoºinu {0, 1} a funkce je charakteristickou funkcí mnoºiny instancí s kladnou odpov dí. Algoritmus má pro daný vstup rozhodnout, zda v mnoºin leºí. Vstupem jsou slova ze Σ, libovolná mnoºina slov se nazývá jazyk. Vzhledem k existenci efektivního o íslování Σ, odpovídá kaºdý jazyk podmno- ºin N. Máme tedy t i vzájemn si odpovídající úhly pohledu: rozhodovací problémy jazyky mnoºiny p irozených ísel Pro deterministické stroje máme následující denice. Denice 3.6. ekneme, ºe stroj T DTM p ijímá jazyk L Σ, pokud x L, práv kdyº T (x) = 1. ekneme, ºe stroj T DTM rozhoduje jazyk L Σ, pokud pro x L platí T (x) = 1 a pro x / L platí T (x) = 0. Zásadní rozdíl mezi p ijímáním a rozhodováním jazyka spo ívá v tom, ºe p ijímající stroj m ºe na vstupu x / L divergovat. Jazyk, který je p ijímán n jakým deterministickým Turingovým strojem se nazývá rekursivn spo etný. Jazyk, který je n jakým takovým strojem rozhodován se nazývá rekursivní. Mnoºinu rekursivn spo etných jazyk zna íme RE (recursively enumerable) a mnoºinu rekursivních jazyk R. Komplement jazyka L je jazyk L = Σ \ L. Mnoºinu jazyk, jejichº komplement je rekursivn spo etný zna íme co-re. Tvrzení 3.7. R = RE co-re. D kaz. Je-li jazyk rekursivní pak je on i jeho komplement z ejm rekursivn spo- etný. Naopak, jsou-li L a L rekurzivn spo etné, pak existují Turingovy stroje M 1 a M 2 takové, ºe M 1 p ijímá L a M 2 p ijímá L. Zkonstruujeme Turing v stroj T pomocí M 1 a M 2 následovn. Na vstupu x bude T soub ºn simulovat chod obou stroj. Provede vºdy st ídav jednu instrukci stroje M 1 se vstupem x a jednu instrukci stroje M 2 se vstupem x. Jeden ze simulovaných stroj se po kone ném po tu krok zastaví a p ijme sv j vstup. Stroj T podle toho, který stroj vstup p ijal, odpoví 1 nebo 0. Následující tvrzení poskytuje motivaci pro název recursively enumerable. Tvrzení 3.8. Pro jazyk L jsou následující podmínky ekvivalentní: L je rekursivn spo etný, L je oborem hodnot n jaké áste né rekursivní funkce, L je oborem hodnot n jaké úplné rekursivní funkce,
SLOšITOST PRO KRYPTOGRAFII 9 simulované výpoèty S(a ) 1 S(a ) 2 S(a ) j S(a ) i kroky výpoètù stroje S 1 2 i v ýpis a ( S(a ) = 1) j j Obrázek 1. Schéma výpo tu Turingova stroje M. D kaz. Nech je jazyk L Σ rekursivn spo etný a S DTM ho p ijímá. Nech Σ = {a 1, a 2,... } je n jaké efektivní o íslování. Zkonstruujeme stroj M jehoº oborem hodnot bude L. B h stroje je znázorn n na obrázku 1. Rozd lme výpo et stroje M na jednotlivá kola. V prvním kole bude stroje M simulovat první krok stroje S se vstupem a 1. V druhém kole stroje se bude simulovat druhý krok výpo tu S(a 1 ) a první krok výpo tu S(a 2 ). V i-tém kole se tedy bude po ítat i-tý krok výpo tu S(a 1 ), (i 1)-ní krok S(a 2 ) atd. aº po první krok výpo tu S(a i ). Na obrázku 1 jsou jednotlivá kola stroje M vyzna ena jako tu né diagonální ²ipky. V k-tém ádku (k 1) jsou znázorn ny kroky stroje S se vstupem a k. Simulace jednoho kroku výpo tu stroje S je vyzna ena krouºkem. Pokud nastane S(a j ) = 1 pro n jaké j 1 v i-tém kole výpo tu stroje M, pak se slovo a j vypí²e a v následujících kolech stroje M se jiº výpo et S(a j ) nesimuluje (na obrázku ozna eno k íºkem). Protoºe stroj M prochází v²echna slova nad abecedou Σ a platí inkluze L Σ, musí být kaºdé x L po kone ném po tu krok stroje M nalezeno. Nyní jiº snadno denujeme výstup stroje M na vstupu i N. M bude po ítat tak dlouho, aº najde i slov z jazyka L. Poslední z nich bude jeho výstupem. Je z ejmé, ºe M po ítá úplnou rekursivní funkci. Ta je sou asn triviáln i áste nou rekursivní funkcí. Zbývá ukázat, ºe existuje-li Turing v stroj S, jehoº obor hodnot je L, pak lze zkonstruovat stroj M, který jazyk L p ijímá. P i dotazu x L za ne M získávat diagonální metodou (analogicky jako v d kazu první ásti) v²echna slova jazyka L od stroje S. Tato slova bude porovnávat se slovem x. Platí-li x L, pak se stroj M po kone ném po tu krok zastaví a odpoví správn. Stroj M tedy p ijímá jazyk L a jazyk L je rekurzivn spo etný. 4. Nedeterministické stroje Na Turingovy stroje se díváme jako na nástroje, umoº ující efektivn vy e²it n jaký problém. Takový pohled je ale oprávn ný jen pro deterministické stroje. Pro nedeterministické stroje nejen není jasné, jak je prakticky realizovat, není dokonce jasné ani to, co povaºovat za jejich výstup. Na daném vstupu totiº m ºe existovat mnoho r zných výpo t, tedy také mnoho výsledk, relace δt nedenuje funkci a symbol T (x) nedává dobrý smysl. Jak tedy chápat nedeterministické výpo ty? Odpov dává následující zásadní denice.
10 T PÁN HOLUB Denice 4.1. ekneme, ºe nedeterministický stroj A p ijímá vstup x, práv kdyº na vstupu x existuje alespo jeden p ijímající výpo et. ekneme, ºe nedeterministický stroj A p ijímá jazyk L, pokud A p ijímá vstup x, práv kdyº x L. Je d leºité si uv domit, ºe denice p ijímání vstupu nedeterministickým strojem je nekonstruktivní, mluví o existenci p ijímajícího výpo tu, ne íká ale nic o tom, jak takový výpo et najít, nebo jak s pomocí daného nedeterministického stroje v bec zjistit, zda existuje. Jedna z moºností, z my²lenkového hlediska nejjednodu²²í, ale asov náro ná, je projít v²echny moºné výpo ty; o tom mluví V ta 7.4. Fungování nedeterministického stroje si lze ilustrovat na Tvrzení 3.8. Je-li dán deterministický stroj M s oborem hodnot L, m ºeme denovat nedeterministický algoritmus p ijímající L takto: vstup x; nedeterministicky zvol i; pokud M(i) = x, p ijmi. Postupné prohledávání v²ech výpo t pouºité v d kazu Tvrzení 3.8. je vlastn deterministickou simulací uvedeného nedeterministického algoritmu. V p ípad nedeterminismu se omezujeme na rozhodovací problémy. Proto se n kdy íká, ºe nedeterministický stroj sv j jazyk rozhoduje. Jak je ale vid t i na p edchozím p íkladu, termín p ijímá lépe vyjad uje asymetrii mezi p ijetím a zamítnutím vstupu. Nedeterministický stroj m ºe na vstupu z p ijímaného jazyka umoº ovat mnoho výpo t, které nekon í p ijetím; to ale neznamená zamítnutí. Vstup je zamítnut, jen pokud neexistuje ºádný p ijímající výpo et. 5. Sloºitostní t ídy Dosud jsme se zabývali jen otázkou, zda je daný problém v bec algoritmicky e²itelný. Na²ím hlavním tématem v²ak bude otázka, jak sloºité je e²ení daného e²itelného problému. Nejprve denujeme t ídy funkcí, jimiº budeme sloºitost m it. Denice 5.1. ekneme, ºe funkce f leºí v O(g), pokud existuje c > 0 takové, ºe pro v²echna n N f(n) < c g(n). ekneme, ºe funkce f leºí v o(g), pokud f(n) lim n g(n) = 0. ekneme, ºe funkce f leºí v θ(g), pokud f O(g) a sou asn g O(f). ekneme, ºe funkce f leºí v Ω(g), pokud g O(f). ekneme, ºe funkce f leºí v ω(g), pokud g o(f). V literatu e se asto namísto f O(g) pí²e f = O(g) (a podobn pro ostatní symboly). V²imn te si, ºe denice f(n) O(g) je ekvivalentní tvrzení, ºe existuje konstanta c a n 0 N takové, ºe f(n) < c g(n) platí pro v²echna n > n 0. Hlavními m ítky náro nosti daného výpo tu je spot eba asu a prostoru. Náro nost je vºdy funkcí délky vstupu. Denice 5.2. Nech A TM. Ozna me t A (x) maximální po et krok výpo tu stroje A na vstupu x Σ (o maximálním po tu krok hovo íme proto, ºe stroj
SLOšITOST PRO KRYPTOGRAFII 11 je obecn nedeterministický). ƒasová náro nost algoritmu A je funkce t A : N N, kde t A (n) = max x =n {t A(x)}. Podobn ozna me s A (x) maximální po et nav²tívených polí ek b hem výpo tu na vstupu x. Prostorová náro nost algortimu je funkce s A (n) = max x =n {s A(x)}. K prostorové náro nosti viz Denici 6.2. Denice 5.3. ekneme, ºe problém P leºí v TIME (f) (resp. NTIME (f)), pokud existuje algoritmus A DTM (resp. NTM), který ho e²í, a platí t A f. Je-li F t ída funkcí, pí²eme P TIME (F ), pokud P TIME (f), pro n jakou funkci f F. Analogicky denujeme t ídu problém NTIME (F ), SPACE (f), NSPACE (f), SPACE (F ) p ípadn NSPACE (F ). Protoºe jsme t A (x) v Denici 5.2 ur ili jako maximální z moºných výpo t, musejí v nedeterministickém p ípad v daném ase skon it v²echny moºné výpo ty, bez ohledu na jejich výsledek (nap. polynomiální nedeterministický stroj se tedy v polynomiálním ase zastaví vºdy). O algoritmu, který ve vý²e uvedených denicích musí existovat, aby problém, který e²í, leºel ve t íd C, ekneme, ºe t íd C odpovídá. P estoºe jsou p edchozí denice formulovány pro obecné problémy, budeme je pouºívat p edev²ím pro problémy rozhodovací. Pokud ekneme, ºe n jaký jazyk leºí v t íd C, znamená to, ºe je rozhodován n jakým A TM, který odpovídá C. N které d leºité sloºitostní t ídy mají zvlá²tní jména. Denice 5.4. P = TIME ( n k) = TIME (n O(1)) k 1 NP = NTIME ( n k) = TIME (n O(1)) k 1 EXP = ( TIME 2 nk) = TIME (2 no(1)) k 1 E = TIME ( 2 kn) = TIME (2 O(n)) k 1 NEXP = NTIME (k n ) = NTIME (2 no(1)) k 1 L = SPACE (log(n)) NL = NSPACE (log(n)) PSPACE = k 1 SPACE ( n k) = SPACE (n O(1)) NPSPACE = NSPACE ( n k) = NSPACE (n O(1)) k 1 Nejd leºit j²í je t ída P, protoºe algoritmy, které pracují v polynomiálním ase, jsou tradi n povaºovány za pouºitelné v praxi. Problémy v P se proto n kdy ozna ují jako zvládnutelné. Algoritmus A TM pracující v polynomiálním ase budeme jednodu²e ozna ovat jako polynomiální algoritmus. Je-li C t ída jazyk, pak coc zna íme t ídu jazyk L, jejichº dopln k L leºí v C.
12 T PÁN HOLUB 6. Realisti t j²í výpo etní modely Popsaný Turing v stroj má velmi jednoduchý popis, coº je výhodné pro zkoumání jeho vlastností, ale znesnad uje to psaní program, tj. tvorbu Turingových stroj realizujících n jaký algoritmus, který máme popsán slovn, v pseudokódu nebo n jakém sou asném programovacím jazyce. P edpokládejme nap., ºe v pr b hu výpo tu chceme pouºívat po ítadlo po tu dosud provedených krok. Takové po ítadlo je moºné realizovat vyhrazením ásti pásky, coº v²ak p iná²í komplikace. Nevíme-li p edem, jak velké íslo na po ítadle budeme pot eba zapsat, budeme muset v pr b hu programu prostor pro po ítadlo zv t²ovat. To lze posouváním symbol realizovat, ale je to komplikace, která se skute nou povahou algoritmu nemá nic spole ného. V této kapitole proto zavedeme pohodln j²í výpo etní modely. Tím ov²em vznikne otázka, vzhledem k jakému modelu uvaºujeme na²e sloºitostní t ídy. D leºitým výsledkem bude, ºe asové i prostorové nároky jednotlivých model jsou svázány polynomiáln. Z toho plyne, ºe t ída P je na pouºitém modelu nezávislá. To by neplatilo nap. pro t ídu algoritm pracujících v lineárním ase. To je dal²í d vod, pro je t ída P hlavním p edm tem teoretického zájmu. 6.1. Vícepáskové Turingovy stroje. Problém s po ítadlem se nejlépe vy e²í tím, ºe stroji p idáme jednu pásku, která bude vyhrazena jen pro po ítadlo. Takto m - ºeme p idávat i dal²í pásky pro jednotlivé úkoly programu. To vede k denici vícepáskového stroje. Je to stroj podobný oby ejnému Turingovu stroji opat ený k páskami a k hlavami. V jednom kroku se provede standardní krok Turingova stroje na v²ech páskách sou asn. V tomto p ípad je p irozené povolit, aby daná hlava z stala na svém míst. Matematicky dostáváme následující denici. Denice 6.1. k-páskový Turing v stroj je tve ice (Q, Σ, q s, P ), kde Σ, Q a M jsou jako v Denici 2.1 a program P je n jaká mnoºina P Q Σ k Q Σ k M k. Jedna instrukce k-páskového stroje má tedy tvar q, s 1.. s k, q, s 1.. s k, m 1.. m k. Uv domte si, pro v denici není Q k, v²echny hlavy mají jeden spole ný stav. Jeden stav stroje m ºe kontrolovat v²echny hlavy sou asn. Mnoºinu Q je libovolná kone ná mnoºina. Nic nebrání tomu, aby byla nap. rovna Q 1 Q 2 Q l. Mluvíme-li o k-páskovém Turingov stroji se vstupem a výstupem, rozumíme tím k-páskový Turing v stroj, jehoº první páska je pouze vstupní, stroj na ní nem ºe p episovat symboly (ale m ºe se pohybovat v obou sm rech), a poslední páska je výstupní, stroj m ºe psát na prázdná polí ka, ale nem ºe p episovat ani se vracet. Na zbylých k 2 pásek neklademe ºádná omezení a nazýváme je pracovní. Vícepáskový stroj budeme chápat vºdy jako stroje se vstupem a výstupem. Na za átku výpo tu je vstup napsán na vstupní pásce, hlava vstupní pásky je na po- átku vstupu a ostatní pásky jsou prázdné. ƒasová náro nost vícepáskového stroje je denována obdobn jako u jednopáskového stroje. Pro prostorovou sloºitost up esníme Denice 5.2 a 5.3.
SLOšITOST PRO KRYPTOGRAFII 13 Denice 6.2. Prostorovou sloºitost problému m íme vzhledem k vícepáskovému stroji, p i emº prostorovou náro ností výpo tu rozumíme po et nav²tívených polí- ek na pracovních páskách. Vstupní a výstupní páska se tedy p i m ení prostorové náro nosti nebere v úvahu. To umoº uje uvaºovat stroje, které mají men²í prostorovou náro nost, neº je délka vstupu (nap íklad nulovou - to jsou tzv. kone né automaty). Bez takového p ístupu by nap íklad t ída L nedávala smysl. V²imn te si, ºe v denici nebylo nutné ur ovat po et pásek, protoºe více pásek lze na jedné pásce simulovat se stejnou prostorovou náro ností (navíc jsou pouze odd lova e pásek, coº na sloºitostní t ídu nemá vliv díky Tvrzení 7.1 o lineárním zrychlení). V ta 6.3. Je-li n jaký problém P v TIME (f(n)) pro k-páskový Turing v stroj, pak je v TIME ( O(f(n) 2 ) ) pro jednopáskový Turing v stroj. D kaz. Ukáºeme, jak na jednopáskovém stroji simulovat b h k-páskového stroje. Ozna me jednopáskový stroj J a k-páskový K. Páska stroje J bude po ad obsahovat nav²tívené úseky jednotlivých pásek odd lené novým symbolem $, v etn informace o poloze hlavy. Má tedy podobu $ obsah 1. pásky $ obsah 2. pásky $... $ obsah k-té pásky $. Popí²eme simulaci jednoho kroku stroje K. Hlava projede celou pásku zleva doprava a zapamatuje si tené symboly na jednotlivých páskách (s 1,..., s k ). Sou asn zkontroluje, zda se hlava na n jaké pásce nenachází na krajní pozici vlevo nebo vpravo (tedy v t sné blízkosti symbolu $). Pokud taková situace nastane, posune celý obsah své pásky tak, aby vytvo ila místo pro p ípadný pohyb p íslu²né hlavy na dosud nenav²tívené polí ko. To je moºné zvládnout jedním projetím. Pak se hlava vrátí a cestou zp t provede p íslu²né instrukce, tedy zm ní symboly s 1,..., s k na symboly s 1,..., s k a provede pohyby m 1,..., m k. Celkem tedy pro realizaci jednoho kroku projede dvakrát svou pásku. Kaºdá z díl ích pásek má délku maximáln f(n), nebo výpo et stroje K skon í po f(n) krocích a v kaºdém kroku se m ºe zaplnit maximáln jedno nové polí ko. Délka pouºité pásky J je tedy celkov maximáln k f(n) + (k + 1). K simulaci jednoho kroku k-páskového stroje musí tedy stroj jednopáskový vykonat maximáln 2k(f(n) + c) krok, kde c je n jaká konstanta vyjad ující kroky nutné k simulaci zm n na jednotlivých páskách (hlava se ob as musí vrátit o jedno polí ko). Jestliºe tedy stroj K provede b hem výpo tu f(n) krok, bude po et krok stroje J leºet v O(f(n) 2 ). 6.2. Stroje RAM. Nejv t²í omezení Turingových stroj v porovnání s na²í p edstavou o práci skute ných po íta je skute nost, ºe chceme-li zjistit obsah n jakého vzdáleného polí ka, musí hlava projet celou vzdálenost. Skute ný po íta má p ímý p ístup k bu ce pam ti, jejíº adresu zná. Výpo etní model, který se v tomto smyslu podobá skute nému po íta i, se nazývá RAM (Random Access Machine). Polí ka pásky jsou v tomto modelu nahrazena registry, které mohou obsahovat libovolné celé íslo (RAM je tedy druh tzv. registrového stroje). Registr je nekone n mnoho a jsou o íslovány nezápornými celými ísly, která budeme nazývat jejich adresy. Nultý registr funguje jako pracovní, nazývá se také n kdy akumulátor. Obsah i-tého registru budeme zna it [i]. D leºitou vlastností RAM je schopnost nep ímého adresování, tedy moºnost pracovat s registrem, jehoº adresa je obsahem jiného registru. To lze snadno napsat jako [[i]]: obsah registru, jehoº adresa je obsaºena v i-tém registru. RAM má dále vstupní a výstupní kanál, které m ºeme chápat jako zvlá²tní registry schopné obsahovat kone né posloupnosti celých ísel, p i emº ze vstupního
14 T PÁN HOLUB kanálu je moºné pouze íst (kaºdý prvek posloupnosti nejvý²e jednou a jeden po druhém), do výstupního kanálu lze pouze psát. Zvlá²tním registrem je dále po ítadlo, které ídí výpo et, hodnotu po ítadla budeme ozna ovat κ. Výpo et RAM je, podobn jako u TM, denován programem. Program RAM je o íslovaná posloupnost instrukcí, které m ºeme rozd lit do ty skupin: vstup a výstup: READ j Input [j] zapi² dal²í prvek vstupu do registru j PRINT j [j] Output vytiskni obsah j-tého registru komunikace pracovního registru s pam tí: STORE j [0] [j] uloº obsah pracovního registru do i-tého registru STORE i [0] [[i]] uloº obsah pracovního registru do registru, jehoº adresa je uloºena v registru i LOAD j [j] [0] nahraj obsah i-tého registru do pracovního registru LOAD i [[i]] [0] nahraj do pracovního registru obsah registru, jehoº adresa je uloºena v registru i LOAD = i i [0] zm hodnotu pracovního registru na i aritmetické operace: ADD j [0] + [j] [0] p i ti obsah i-tého registru do pracovního registru ADD j [0] + [[j]] [0] p i ti do pracovního registru obsah registru, jehoº adresa je obsaºena v registru j SUB j [0] [j] [0] ode ti obsah i-tého registru od pracovního registru SUB j [0] [[j]] [0] ode ti od pracovního registru obsah registru, jehoº adresa je obsaºena v registru j HALF [0]/2 [0] odstra nejmén významný bit pracovního registru ízení toku instrukcí JUMP j κ := j jdi na instrukci j HALT κ := 0 zastav se (lze nahradit skokem na libovolnou neexistující instrukci) POS j if [0] > 0 then κ := j je-li obsah pracovního registru kladný, jdi na instrukci j NEG j if [0] < 0 then κ := j je-li obsah pracovního registru záporný, jdi na instrukci j ZERO j if [0] = 0 then κ := j je-li obsah pracovního registru nula, jdi na instrukci j Výpo et je zahájen instrukcí jedna a vykonává instrukce programu popo ad, pokud ídící instrukce neur í jinak. Provádí se tedy vºdy instrukce κ a kaºdá ne ídící instrukce zv t²í κ o jedna. Také v p ípad RAM existuje celá ada r zných konvencí týkajících se zejména zp sobu manipulace s pam tí, které nemají na vlastnosti zásadní vliv. D leºitá je ov²em denice aritmetických operací, které stroj m ºe provést v jednom kroku.
SLOšITOST PRO KRYPTOGRAFII 15 Pokud nap. dovolíme v jednom kroku násobit obsah registr, výkon stroje se zvý²í výce neº konstantn (pak se n kdy mluví o MRAM). Podobn m ºeme uvaºovat o dal²ích operacích. Délku zápisu ísla a ozna me d(a). Délka vstupu je sou et délek ísel ve v²ech registrech, p i emº nula má nulovou délku. (Uvaºujme nap íklad dyadický zápis ísel s jedním bitem rezervovaným pro znaménko.) Operace s ítání, od ítání a d lení dv ma, které jsme dovolili v na²í denici, mají tu vlastnost, ºe jejich skute ná náro nost je lineární v délce zápisu, tedy leºí v log k, kde k je v t²í z operand. Existují dva základní p ístupy k m ení sloºitosti výpo tu RAM. První z nich, nazývaná jednotková cena (unit cost), po ítá pouze po et provedených instrukcí, druhá z nich, logaritmická cena (logarithmic cost ), bere v úvahu i délku zpracovávaných ísel a provedení aritmetických instrukcí má cenu p ímo úm rnou délce v t²ího z operand. Faktory logaritmické velikosti jsou tedy obzvlá² závislé na p ijatém modelu, coº m ºe být zdrojem r zných nedorozum ní, pokud se zabýváme sloºitostními t ídami, které nejsou dostate n robustní. Podobn je to s otázkou za- len ní násobení mezi elementární instrukce. T ída P je v²ak v í v²em uvedeným moºnostem invariantní. Pro ú ely simulace RAM Turingovým strojem je nutné uvaºovat logaritmickou cenu, jednotková cena není realistická. Následující tvrzení omezuje délku ísel, která se v pr b hu výpo tu m ºou v registrech objevit. Lemma 6.4. Po t krocích stroje RAM je délka libovolného registru d(r i ) nejvý²e t + d(i) + d(k), kde d(i) je délka vstupu a d(k) je délka nejdel²í konstanty obsaºené v programu. D kaz. Tvrzení platí pro t = 0. P edpokládejme, ºe tvrzení platí pro t 1. P íkazy JUMP, POS, NEG, ZERO a HALT obsahy registr nem ní. P íkazy LOAD a STORE p esouvají obsah z registru do registru a tvrzení pro n tedy platí. P íkaz READ na ítá obsah vstupu, jehoº délka je v odhadu zastoupena s ítancem d(i). P íkaz HALF obsah registru zkracuje. P íkazy ADD a SUB s ítají dv celá ísla a a b, pro n º podle induk ního p edpokladu platí d(a), d(b) t 1 + d(i) + d(k). Sta í uváºit, ºe d(a + b) je nejvý²e max{d(a), d(b)} + 1. V ta 6.5. Jestliºe je n jaký problém v TIME (f(n)) pro RAM, pak je v TIME ( f(n) 3) pro 6-páskový Turing v stroj. D kaz. Nech M je 6-páskový Turing v stroj, kterým simulujeme výpo et RAM. Instrukce RAM jsou za len ny do stav M v etn stavu po ítadla. První páska stroje M je vstupní. Druhá slouºí k reprezentaci registr, krom nultého. Sestává z posloupnosti et zc ve tvaru b(i) : [b(i)], kde b je n jaká permutace na mnoºin index registr, se kterými se jiº pracovalo. Jednotlivé registry jsou odd leny speciálním znakem. Na t etí pásce je zaznamenána adresa práv hledaného registru. ƒtvrtá páska obsahuje pracovní registr a jsou na ní provád ny aritmetické operace. Pátá páska je výstupní.
16 T PÁN HOLUB P i hledání registru j se z druhé pásky postupn na ítají dvojice b(i) : [b(i)]. Pokud b(i) = j, je [b(i)] zpracováno podle typu provád né instrukce. P i jakékoli zm n registru se jeho zápis v ad registr smaºe a zapí²e znovu na konec. (Tím se vyhneme úvahám o posouvání obsahu a vytvá ení místa pro dlouhé registry.) Nyní ukáºeme, ºe asová náro nost simulace jednoho kroku RAM na²ím Turingovým strojem je O(f(n) 2 ), kde n je délka vstupu. ƒasov nejnáro n j²í je aritmetická instrukce s nep ímým adresováním, kdy je pot eba dvakrát prohledat druhou pásku (poprvé pro nalezení registru j a poté registru [j]). Druhá páska obsahuje O(f(n)) dvojic (v etn smazaných úsek ). Délka kaºdé dvojice je podle p edchozího lemmatu také O(f(n)). V²imn me si zejména, ºe adresy pouºitých registr také podléhají omezení z lemmatu. Pouºitý prostor pásky s registry je tedy v pr b hu celého výpo tu omezen O(f(n) 2 ) a jeho prohledání vyºaduje O(f(n) 2 ) krok stroje M. Aritmetické operace (ADD, SUB, HALF) pracují s ísly délky O(f(n)), a jejich výpo et lze tedy provést v ase O(f(n)). Celkem tedy stroj M p i simulaci vykoná O(f(n) 3 ) krok. 7. Vztahy mezi t ídami Tvrzení 7.1 (Lineární zrychlení). Nech L TIME (f(n)) a L SPACE (g(n)). Pak také L TIME (εf(n)) a L SPACE (εg(n)) pro kaºdé ε > 0. D kaz. M jme M TM odpovídající t ídám TIME (f(n)) a SPACE (g(n)). Zkonstruujeme stroj M odpovídající t ídám TIME (εf(n)) a TIME (εg(n)). Bu k p irozené íslo, které ur íme pozd ji. Rychlost stroje M bude spo ívat v tom, ºe v jednom cyklu sestávajícím z n kolika krok nasimuluje k krok stroje M. Mnoºina symbol Σ stroje M obsahuje v²echny k-tice symbol Σ stroje M. Tedy g(n) k Σ = Σ k. Obsah pásky stroje M obsahuje v kaºdé fázi výpo tu obsah pásky stroje M seskupené do k-tic (p edpokládáme, ºe i vstup je takto zadán). Prostorová náro nost stroje M je tedy. Hlava stroje M te k-tici, která obsahuje hlavu stroje M (a pamatuje si její polohu). Po k krocích stroje M se tedy m ºe zm nit pouze k-tice tená a její pravý nebo levý soused a zm na je t mito k-ticemi jednozna n zadána. Instrukce stroje M tedy vytvo íme tak, aby stroj v jednom cyklu p e etl levého nebo pravého souseda teného polí ka, pokud se stane, ºe hlava simulovaného stroje tohoto souseda v rámci uvaºovaných k-krok nav²tíví; zasaºená polí ka (odpovídající nejvý²e 2k polí k m stroje M) zm nil tak, aby odpovídala stavu pásky stroje M po k krocích; zastavil se v k-tici obsahující po k krocích hlavu stroje M. Snadno si rozmyslíme, ºe k tomu sta í t i kroky. ƒasová náro nost stroje M je 3 f(n) tedy nejvý²e k. Nyní sta í nap. zvolit k = 6 ε. P edchozí v ta nás oprav uje k tomu, abychom ve sloºitostních funkcích nebrali ohled na konstanty. M ºeme tedy nap. místo TIME (O(f)) psát pouze TIME (f) Ukazuje se, ºe ne v²echny funkce jsou vhodné pro ur ování sloºitosti. Jak uvidíme, problém m ºe být s funkcemi, které je obtíºné spo ítat.
SLOšITOST PRO KRYPTOGRAFII 17 Denice 7.2. Funkce f(n) je asov (prostorov ) konstruovatelná, pokud existuje Turing v stroj, který ji po ítá a pro výpo et se vstupem n pot ebuje nejvý²e f(n) krok (prostor nejvý²e f(n)). V²echny p irozené funkce jsou konstruovatelné, denice slouºí pouze k vylou ení jistých patologických p ípad, viz Tvrzení 7.10. V²imn me si také pon kud opatrné formulace. Pokud bychom ekli, ºe konstruovatelná funkce f je spo itatelná s výpo etní náro ností f, mohlo by dojít k nedorozum ní. Výpo etní náro nost se totiº m í délkou vstupu, který je typicky logaritmický vzhledem k velikosti ísla. Poºadavek na konstruovatelnou funkci je tedy velmi volný, p i binárním zápisu vstupu má algoritmus exponenciální as (prostor) vzhledem k velikosti vstupu. V p ípadech, kdy chceme náro nost m it velikostí ísla, nikoli velikostí jeho zápisu, se n kdy pouºívá unární zápis: íslo n je reprezentováno vstupem 1 n. Mohli bychom tedy íci, ºe f je konstruovatelná funkce, pokud je spo itatelná s náro ností f p i unárním vstupu. Nejprve si uv domme triviální vztahy mezi t ídami. Tvrzení 7.3. Pro jednotlivé t ídy sloºitosti platí: (1) TIME (f(n)) SPACE (f(n)) (2) TIME (f(n)) NTIME (f(n)) (3) SPACE (f(n)) NSPACE (f(n)) D kaz. (1) Stroj M nem ºe za as f(n) nav²tívit více neº f(n) polí ek na pásce. (2) a (3) Deterministický stroj je také nedeterministický stroj. D leºitou otázkou je moºnost deterministického výpo tu deterministickým strojem. Nejprve ukáºeme, ºe nedeterministický as lze simulovat stejn velkým deterministickým prostorem. Základní my²lenkou takové simulace bude po ítadlo zachycující vektor voleb. Tvrzení 7.4. NTIME (f(n)) SPACE (f(n)). D kaz. Chceme simulovat b h nedeterministického stroje M n jakým deterministickým strojem M. Budeme bez újmy na obecnosti p edpokládat, ºe simulující stroj má dv pracovní pásky. Na jedné z nich budeme simulovat výpo et stroje M, na druhé si budeme zaznamenávat, jaké volby mezi r znými pokra ováními jsme provedli. Nech c je maximální po et instrukcí aplikovatelných na jeden okamºitý popis. M ºeme pro jednuchost p edpokládat, ºe voleb je p esn c v kaºdém kroku (p idáme neexistující volby vedoucí k zastavení a zamítnutí vstupu). Kaºdý výpo et nedeterministického stroje je dán tzv. vektorem voleb, coº je posloupnost d 1,..., d t, kde t f(n) je délka výpo tu a d i ur uje, kterou instrukci z c moºných si stroj zvolil v i-tém kroku. Druhá páska tedy bude obsahovat vektor voleb. Kdykoli simulace jedné z v tví výpo tu stroje M skon í, stroj M zvý²í vektor voleb o jedna. P esn ji e eno, provede následující operaci: najde nejv t²í t, pro které je d t < c, zvý²í ho o jedna a v²echna d i, i > t smaºe. Poté simuluje výpo et nové v tve M dané aktuálním vektorem voleb. (Výpo et kon í po simulaci, ve které jsou v²echna d i = c.) Po ítadlo celkem spot ebuje prostor f(n) log c a celková prostorová náro nost je tedy O(f(n). Nyní sta í pouºít v tu o lineárním zrychlení.
18 T PÁN HOLUB Pro ur ení vztahu nedeterministické prostorové náro nosti k deterministické je zásadní problém Dostupnost. Jeho vstupem je orientovaný graf G(V, E) a dva jeho vrcholy s a t. Máme rozhodnout, zda z s do t vede cesta. (Problém bývá anglicky nazýván s-t connectivity nebo Stcon.) Lemma 7.5. Dostupnost SPACE ( log 2 (n) ), kde n je po et vrchol grafu. i D kaz. Budeme psát x y, pokud z x do y vede cesta délky nejvý²e 2 i. Z ejm log n z x vede cesta do y práv tehdy, kdyº x y, nebo délka nejkrat²í cesty mezi libovolnými dv ma vrcholy je nejvý²e n. Kaºdou cestu lze rozd lit na dv ásti, které se od sebe li²í nejvý²e o jednu. Pro i > 0 tedy platí tedy, ºe x i y, práv kdyº existuje n jaký vrchol z (st ed cesty), pro n jº x i 1 z z i 1 y. Na základ tohoto poznatku popí²eme algoritmus A(x, y, i), který zjistí, zda x i y. Pokud i > 1, algoritmus projde v²echny vrcholy z a zjistí, zda Pokud i = 0, zjistí, zda A(x, z, i 1) A(z, y, i 1). (x, y) E nebo x = y. Hloubka rekurze algoritmu bude log(n) a prostor k uloºení jedné úrovn je k log(n), kde k je n jaká konstanta (délka zápisu jednoho vrcholu je nejvý²e log(n) ). Tedy celková prostorová náro nost je v O(log 2 (n)). Tvrzení 7.6 (Savitchova v ta). Bu f prostorov konstruovatelná funkce, f(n) log n. Pak NSPACE (f(n)) SPACE ( f(n) 2). D kaz. Nech L NSPACE (f(n)) a nech M TM je (nedeterministický) Turing v stroj, který L rozhoduje. Chceme ukázat, ºe existuje deterministický stroj rozhodující L v prostoru f(n) 2. Klí em k d kazu je fakt, ºe pro dané x platí x L, práv kdyº existuje posloupnost snímk stroje M, která denuje p ijímající výpo et pro vstup x. Abychom toto vyuºili, uvaºujme orientovaný graf G S, jehoº vrcholy jsou v²echny moºné snímky stroje M a z vrcholu σ 1 vede hrana do vrcholu σ 2 práv tehdy, kdyº σ 1 δ M σ 2, neboli pokud σ 2 je snímek, který vznikne ze snímku σ 1 po jednom kroku stroje M. M ºeme p edpokládat, ºe existuje práv jeden akceptující snímek, ozna me ho ANO. Snímek se vstupem x p ed za átkem výpo tu ozna me vstup x. Nyní tedy platí x L práv tehdy, pokud v grafu G S existuje cesta z vrcholu vstup x do vrcholu ANO. Problém dostupnosti je p itom e²itelný v prostoru log 2 n, kde n je po et vrchol grafu. Po et vrchol grafu je dán velikostí mnoºiny stav Q M stroje M, po tem moºných slov zapsaných na pracovní pásce délky nejvý²e f(n): Σ f(n), po tem poloh hlavy na pracovní pásce: f(n), po tem poloh hlavy na vstupní pásce: n. Celkem je tedy po et vrchol V = nf(n) Q M Σ f(n) a log V = log n + log(f(n)) + log Q M + f(n) log Σ, coº je pro f(n) log n v O(f(n)).
SLOšITOST PRO KRYPTOGRAFII 19 Existenci cesty je proto moºné zjistit v prostoru O(f(n) 2 ). Zbývá vysv tlit, jakým zp sobem bude deterministický stroj s grafem G S pracovat. Je z ejmé, ºe ho nem ºe celý vypsat, protoºe tím by p ekro il sv j pracovní prostor. Procházení v²ech vrchol (snímk ) se bude dít v maximo-lexikograckém po adí. M ºeme bez újmy na obecnosti uvaºovat v²echny posloupnosti pat i né délky, které ani nemusí být zápisem n jakého snímku. (Zde pouºíváme p edpoklad prostorové konstruovatelnosti funkce f. Je-li f prostorov konstruovatelná, stroj M umí spo ítat délku snímku, aniº by p ekro il svou vlastní prostorovou náro nost.) Ov ování existence hrany mezi vrcholy σ 1 a σ 2 se provede simulací jednoho kroku p íslu²ného nedeterministického stroje. Simulace prostorové sloºitosti je asov náro ná: Tvrzení 7.7. Nech f(n) log n. Pak SPACE (f(n)) k>1 TIME ( k f(n)). D kaz. Nech M DTM je stroj rozhodující jazyk L s prostorovou náro ností f(n). Po et snímk je (podle diskuse v d kazu Savitchovy v ty) nejvý²e k f(n) pro n jaké k. Pokud stroj provede více neº k f(n) krok, znamená to, ºe n jaký snímek se objevil dvakrát, a stroj se tedy zacyklil, protoºe je deterministický. To je spor s p edpokladem, ºe rozhoduje L. Kombinací Tvrzení 7.4 a Tvrzení 7.7 dostáváme NTIME (f(n)) SPACE (f(n)) k>1 TIME ( k f(n)). šádná podstatn lep²í neº exponenciální simulace nedeterministického asu deterministickým není známa. Následující v ty ukazují, ºe hierarchie t íd sloºitosti je dosti hustá. Tvrzení 7.8 (O prostorové hierarchii). Nech f(n) a g(n) jsou funkce takové, ºe log n f(n), f(n) o(g(n)) a g(n) je prostorov konstruovatelná. Pak SPACE (f(n)) je vlastní podmnoºina SPACE (g(n)). D kaz. Zkonstruujeme jazyk, který leºí ve t íd SPACE (g(n)) a neleºí ve t íd SPACE (f(n)). Konstrukce má podobu diagonálního argumentu, tj. vyuºívá my²lenky b hu stroje, který má na vstupu sv j vlastní kód. Uvaºujme n jaké kódování Turingových stroj a ozna me [M] kód stroje M. Abychom mohli manipulovat s délkou [M], budeme uvaºovat slova 1 m 0[M], tzv. prexové kódy stroje M. Je z ejmé, ºe z kaºdého prexového kódu lze snadno zrekonstruovat kód p vodní. Slíbený jazyk L denujeme pomocí stroje U, který ho rozhoduje a pracuje v prostoru g(n). Stroj U je jistou formou univerzálního Turingova stroje. Základní my²lenka d kazu je následující: Stroj U je schopen v prostoru g(n) rozpoznat, jaký bude výstup stroje M pracujícího v prostoru f(n) v etn informace, zda výpo et diverguje. Do rozporu s nerozhodnutelností problému HaltingProblem se nedostáváme díky tomu, ºe U má garantováno prostorové omezení simulovaného stroje. Pokud simulace probíhá p íli² dlouho, pozná stroj U, ºe se simulovaný stroj zacyklil, díky svému dodate nému prostoru, který vyuºije pro po ítadlo. Stroj U tedy postupuje takto. Na vstupu x rozhodne (v konstantním prostoru), zda je x prexový kód n jakého M, a pokud ano, vymezí si na pásce prostor 1 2 g(n), pro simulaci pracovního prostoru stroje M a po ítadlo krok délky 1 2g(n) (tedy s rozsahem 2 1 2 g(n) krok ). (Zde pouºíváme p edpoklad prostorové konstruovatelnosti!) Zbylý prostor jist sta í pro pomocné výpo ty. Stroj U dále simuluje výpo et stroje M na vstupu x, tedy M(1 m 0[M]), a po ítá jeho kroky. Výstup stroje U je dán následujícími pravidly: