opora

frantisek.plesicek
from frantisek.plesicek More from this publisher
10.02.2019 Views

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é

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.

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!