opora
KAPITOLA 7. SLOŽITOST 153 2 ∞⋃ nl 2 k-EXPSPACE = DSpace(2 2. ∞⋃ nl ) ≡ k-NEXPSPACE = NSpace(2 2. ) l=0 ELEMENTARY = ∞⋃ k-EXP k=0 7.2.7 Vrchol hierarchie tříd složitosti Na vrcholu hierarchie tříd složitosti se pak hovoří o obecných třídách jazyků (funkcí), se kterými jsme se již setkali: • třída primitivně-rekurzívních funkcí PR (implementovatelných pomocí zanořených cyklů s pevným počtem opakování – for i=... to ...), • třída µ−rekurzívních funkcí (rekurzívních jazyků) R (implementovatelných pomocí cyklů s předem neurčeným počtem opakování – while ...) a • třída rekurzívně vyčíslitelných funkcí (rekurzívně vyčíslitelných jazyků) RE. 7.3 Vlastnosti tříd složitosti Prozkoumáme nyní vztahy a vlastnosti zadefinovaných složitostních tříd. 7.3.1 Vícepáskové stroje Zavedení vícepáskového stroje nemělo vliv na vyčíslitelnost. Ani v teorii složitosti nepřinese mnoho nového. Ukážeme, že ke každému vícepáskovému stroji existuje ekvivalentní jednopáskový, jehož výpočty jsou maximálně polynomiálně časově náročnější. Věta 7.3.1 Je-li jazyk L přijímán nějakým k-páskovým DTS M k v čase t(n), pak je také přijímán nějakým jednopáskovým DTS M 1 v čase O(t(n) 2 ). l=0 Důkaz. (idea)Ukážeme, jak může M k simulovat M 1 v uvedeném čase: • Na pásku stroje M 1 zapíšeme zřetězení obsahu pásek stroje M k . Dále si stroj M 1 musí uchovávat informaci o aktuální pozici hlav stroje M k (například symboly na pásce které jsou čteny hlavami stroje M k budou podtrženy) a informaci o konci jednotlivých pásek stroje M k (speciální oddělovače). • V první fázi simulace výpočtu stroje M k strojem M 1 si stroj M 1 upraví svoji pásku do požadovaného tvaru. • K simulaci jednoho kroku stroje M k musí stroj M 1 dvakrát přečíst svoji pásku. V prvním průchodu shromáždí informace o symbolech, které byly čteny jednotlivými hlavami stroje M k . V druhém průchodu patřičně upraví svoji pásku. • Problém nastává, pokud při simulaci stroj M k zapsal nějaký symbol na do teď prázdné políčko své pásky. V tom případě musí stroj M 1 posunout zbytek řetězce na pásce o jedno políčko doprava, aby uvolnil potřebné místo pro nový symbol.
KAPITOLA 7. SLOŽITOST 154 • Stroj M k nemůže mít na žádné pásce víc než t(n) symbolů kde n je délka vstupního řetězce. Tudíž stroj M 1 nemůže mít víc než k · t(n) symbolů. Simulace jednoho kroku stroje M k zabere 4 · k · (t(n)) kroků (dva průchody páskou tam a zpět) plus nanejvýš k · (t(n)) kroků (vytvoření prázdného políčka). Dohromady tedy počet kroků stroje M 1 bude v O(k 2·t(n) 2 ). Jelikož k je konstanta nezávislá na vstupu, celková časová složitost stroje M 1 je v O(t(n) 2 ). ✷ Příklad 7.3.1 Ukažte, že L = {w ∈ Σ ∗ | w je palindrom } ∈ P . 7.3.2 Determinismus a nedeterminismus Zatímco z hlediska vyčíslitelnosti nepřináší zavedení nedeterminismu nic nového, pro složitost je situace jiná. Ačkoli skutečné vztahy deterministických a nedeterministických tříd nebyly dosud dokázány, zdá se, že nedeterminismus výrazně snižuje zejména časové nároky výpočtu. Jeho sílu dobře ilustruje například následující pohled na výpočet nedeterministického stroje: • Zatímco klasický deterministický stroj krok za krokem výsledek počítá, nedeterministický stroj je prostě může uhodnout, zapsat a po té jen ověřit jeho správnost. Nedeterministický TS dokážeme simulovat strojem deterministickým, avšak jen za cenu exponenciálního nárůstu času: Věta 7.3.2 Je-li jazyk L přijímán nějakým NTS M n v čase t(n), pak je také přijímán nějakým DTS M d v čase 2 O(t(n)) . Důkaz. (idea) Ukážeme, jak může M d simulovat M n v uvedeném čase: • Očíslujeme si přechody M n jako 1, 2, ..., k. • M d bude postupně simulovat veškeré možné posloupnosti přechodů M n (obsah vstupní pásky si uloží na pomocnou pásku, aby ho mohl vždy obnovit; na jinou pásku si vygeneruje posloupnost přechodů z {1, 2, ..., k} ∗ a tu simuluje). • Vzhledem k možnosti nekonečných výpočtů M n nelze procházet jeho možné výpočty do hloubky – budeme-li je ale procházet do šířky (tj. nejdřív všechny řetězce z {1, 2, ..., k} ∗ délky 1, pak 2, pak 3, ...), určitě nalezneme nejkratší přijímající posloupnost přechodů pro M n , existuje-li. • Takto projdeme nanejvýš O(k t(n) ) cest, simulace každé z nich je v O(t(n)) a tudíž celkem využijeme nanejvýš čas O(k t(n) )O(t(n)) = 2 O(t(n)) . ✷ Příklad 7.3.2 Ukažte že L = {φ| φ je splnitelné formule v CNF} ∈ NP Vztah determinismu a nedeterminismu je jedním z nejslavnějších otevřených problémů informatiky. Zejména o problému ekvivalence polynomiálních časových tříd P = NP bylo řečeno mnoho. Jeho řešení se však zatím zdá být za hranicemi dnešních možností. Komplikovanost problému naznačují například výsledky, které
- Page 103 and 104: KAPITOLA 5. TURINGOVY STROJE 102 5.
- Page 105 and 106: KAPITOLA 5. TURINGOVY STROJE 104
- Page 107 and 108: KAPITOLA 5. TURINGOVY STROJE 106 L:
- Page 109 and 110: KAPITOLA 5. TURINGOVY STROJE 108 St
- Page 111 and 112: KAPITOLA 5. TURINGOVY STROJE 110 p
- Page 113 and 114: KAPITOLA 5. TURINGOVY STROJE 112
- Page 115 and 116: KAPITOLA 5. TURINGOVY STROJE 114 -
- Page 117 and 118: KAPITOLA 5. TURINGOVY STROJE 116 5.
- Page 119 and 120: KAPITOLA 5. TURINGOVY STROJE 118 D
- Page 121 and 122: KAPITOLA 5. TURINGOVY STROJE 120 5.
- Page 123 and 124: KAPITOLA 5. TURINGOVY STROJE 122 5.
- Page 125 and 126: KAPITOLA 6. MEZE ROZHODNUTELNOSTI 1
- Page 127 and 128: KAPITOLA 6. MEZE ROZHODNUTELNOSTI 1
- Page 129 and 130: KAPITOLA 6. MEZE ROZHODNUTELNOSTI 1
- Page 131 and 132: KAPITOLA 6. MEZE ROZHODNUTELNOSTI 1
- Page 133 and 134: KAPITOLA 6. MEZE ROZHODNUTELNOSTI 1
- Page 135 and 136: KAPITOLA 6. MEZE ROZHODNUTELNOSTI 1
- Page 137 and 138: KAPITOLA 6. MEZE ROZHODNUTELNOSTI 1
- Page 139 and 140: KAPITOLA 6. MEZE ROZHODNUTELNOSTI 1
- Page 141 and 142: KAPITOLA 6. MEZE ROZHODNUTELNOSTI 1
- Page 143 and 144: KAPITOLA 6. MEZE ROZHODNUTELNOSTI 1
- Page 145 and 146: KAPITOLA 6. MEZE ROZHODNUTELNOSTI 1
- Page 147 and 148: KAPITOLA 7. SLOŽITOST 146 7.1.3 Sl
- Page 149 and 150: KAPITOLA 7. SLOŽITOST 148 Příkla
- Page 151 and 152: KAPITOLA 7. SLOŽITOST 150 • Napr
- Page 153: KAPITOLA 7. SLOŽITOST 152 7.2.4 Ne
- Page 157 and 158: KAPITOLA 7. SLOŽITOST 156 7.3.4 Uz
- Page 159 and 160: KAPITOLA 7. SLOŽITOST 158 Pokud pr
- Page 161 and 162: KAPITOLA 7. SLOŽITOST 160 7.5.1 Po
- Page 163 and 164: KAPITOLA 7. SLOŽITOST 162 7.5.4 V
- Page 165 and 166: KAPITOLA 7. SLOŽITOST 164 6. Uveď
KAPITOLA 7. SLOŽITOST 153<br />
2<br />
∞⋃<br />
nl 2<br />
k-EXPSPACE = DSpace(2 2. ∞⋃<br />
nl<br />
) ≡ k-NEXPSPACE = NSpace(2 2. )<br />
l=0<br />
ELEMENTARY =<br />
∞⋃<br />
k-EXP<br />
k=0<br />
7.2.7 Vrchol hierarchie tříd složitosti<br />
Na vrcholu hierarchie tříd složitosti se pak hovoří o obecných třídách jazyků<br />
(funkcí), se kterými jsme se již setkali:<br />
• třída primitivně-rekurzívních funkcí PR (implementovatelných pomocí zanořených<br />
cyklů s pevným počtem opakování – for i=... to ...),<br />
• třída µ−rekurzívních funkcí (rekurzívních jazyků) R (implementovatelných<br />
pomocí cyklů s předem neurčeným počtem opakování – while ...) a<br />
• třída rekurzívně vyčíslitelných funkcí (rekurzívně vyčíslitelných jazyků) RE.<br />
7.3 Vlastnosti tříd složitosti<br />
Prozkoumáme nyní vztahy a vlastnosti zadefinovaných složitostních tříd.<br />
7.3.1 Vícepáskové stroje<br />
Zavedení vícepáskového stroje nemělo vliv na vyčíslitelnost. Ani v teorii složitosti<br />
nepřinese mnoho nového. Ukážeme, že ke každému vícepáskovému stroji existuje<br />
ekvivalentní jednopáskový, jehož výpočty jsou maximálně polynomiálně časově<br />
náročnější.<br />
Věta 7.3.1 Je-li jazyk L přijímán nějakým k-páskovým DTS M k v čase t(n),<br />
pak je také přijímán nějakým jednopáskovým DTS M 1 v čase O(t(n) 2 ).<br />
l=0<br />
Důkaz. (idea)Ukážeme, jak může M k simulovat M 1 v uvedeném čase:<br />
• Na pásku stroje M 1 zapíšeme zřetězení obsahu pásek stroje M k . Dále si stroj<br />
M 1 musí uchovávat informaci o aktuální pozici hlav stroje M k (například<br />
symboly na pásce které jsou čteny hlavami stroje M k budou podtrženy) a<br />
informaci o konci jednotlivých pásek stroje M k (speciální oddělovače).<br />
• V první fázi simulace výpočtu stroje M k strojem M 1 si stroj M 1 upraví svoji<br />
pásku do požadovaného tvaru.<br />
• K simulaci jednoho kroku stroje M k musí stroj M 1 dvakrát přečíst svoji<br />
pásku. V prvním průchodu shromáždí informace o symbolech, které byly<br />
čteny jednotlivými hlavami stroje M k . V druhém průchodu patřičně upraví<br />
svoji pásku.<br />
• Problém nastává, pokud při simulaci stroj M k zapsal nějaký symbol na do teď<br />
prázdné políčko své pásky. V tom případě musí stroj M 1 posunout zbytek<br />
řetězce na pásce o jedno políčko doprava, aby uvolnil potřebné místo pro<br />
nový symbol.