opora
Kapitola 7 Složitost Cílem této kapitoly je pochopení aplikace Turingových strojů pro popis a klasifikaci časové a paměťové složitosti problémů a vymezení složitostních tříd těsně spjatých s otázkami časové a paměťové efektivity výpočtů a reálnosti realizovat řešení problémů na počítačích. 7.1 Základní pojmy složitosti 7.1.1 Složitost algoritmů Základní teoretický přístup a volba Turingova stroje jako výpočetního modelu vychází z Church-Turingovy teze: Každý algoritmus je implementovatelný jistým TS. Zavedení TS nám umožňuje klasifikovat problémy (resp. funkce) do dvou tříd: 1. problémy, jež nejsou algoritmicky ani částečně rozhodnutelné (resp. funkce algoritmicky nevyčíslitelné) 2. problémy algoritmicky alespoň částečně rozhodnutelné (resp. funkce algoritmicky vyčíslitelné). Nyní se budeme zabývat třídou algoritmicky (částečně) rozhodnutelných problémů (vyčíslitelných funkcí) v souvislosti s otázkou složitosti jejich rozhodování (vyčíslování). Analýzu složitosti algoritmu budeme chápat jako analýzu složitosti výpočtů příslušného TS, jejímž cílem je vyjádřit (kvantifikovat) požadované zdroje (čas, prostor) jako funkci závisející na délce vstupního řetězce. 7.1.2 Různé případy při analýze složitosti Nejdříve je třeba určit cenu jednoho konkrétního výpočtu konkrétního TS (paměť, čas výpočtu). Mějme TS M. Složitost bude tedy funkcí Compl M : N → N 1 . Je více možností její definice podle toho, který z možných výpočtů na vstupu příslušné délky (a jeho cenu) si vybereme jako určující: 1. analýza složitosti nejhoršího případu, 2. analýza složitosti nejlepšího případu, 3. analýza složitosti průměrného případu. Průměrná složitost algoritmu je definována následovně: Jestliže algoritmus (TS) vede k m různým výpočtům (případům) s cenou c 1 , c 2 , ..., c m , jež nastávají s pravděpodobností p 1 , p 2 , ..., p m , pak průměrná složitost algoritmu je dána jako Σ n i=1 p ic i . Obvykle (alespoň na teoretické úrovni) se věnuje největší pozornost složitosti nejhoršího případu. 1 pro dané n vrací míru složitosti výpočtu M na řetězcích délky n 145
KAPITOLA 7. SLOŽITOST 146 7.1.3 Složitost výpočtů TS Na cenu výpočtu se budeme dívat z hledisek času výpočtu a paměťové náročnosti. • Časová složitost – počet kroků (přechodů) TS provedený od počátku do konce výpočtu. • Prostorová (paměťová) složitost – počet „buněk“ pásky TS požadovaný pro daný výpočet. Příklad 7.1.1 Uvažme následující TS M: x/R x/L M: ∆/R ∆/x ∆/∆ Pro vstup w = ∆xxx∆∆... je: • časová složitost výpočtu M na w rovna 10, • prostorová složitost výpočtu M na w rovna 5. Lemma 7.1.1 Je-li časová složitost výpočtu prováděného TS rovna n, pak prostorová složitost tohoto výpočtu není větší než n + 1. Důkaz. Tvrzení je jednoduchou implikací plynoucí z definice časové a prostorové složitosti. ✷ Nyní budeme definovat funkce udávající složitost TS v závislosti na čase výpočtu (počtu kroků TS) a použitém prostoru (počtu použitých políček pásky). Bude se jednat o analýzu nejhoršího případu: Definice 7.1.1 Řekneme, že k-páskový DTS (resp. NTS) M přijímá jazyk L nad abecedou Σ v čase T M : N → N, jestliže L = L(M) a M přijme (resp. může přijmout) každé w ∈ L v nanejvýš T M (|w|) krocích. Definice 7.1.2 Řekneme, že k-páskový DTS (resp. NTS) M přijímá jazyk L nad abecedou Σ v prostoru S M : N → N, jestliže L = L(M) a M přijme (resp. může přijmout) každé w ∈ L při použití nanejvýš S M (|w|) buněk pásky. Poznámka 7.1.1 Do prostorové složitosti nepočítáme buňky pásky, na nichž je zapsán vstup, pokud nebudou během vypočtu přepsány. Zcela analogicky můžeme definovat vyčíslování určité funkce daným TS v určitém čase, resp. prostoru.
- Page 95 and 96: KAPITOLA 4. BEZKONTEXTOVÉ JAZYKY A
- Page 97 and 98: KAPITOLA 4. BEZKONTEXTOVÉ JAZYKY A
- Page 99 and 100: KAPITOLA 4. BEZKONTEXTOVÉ JAZYKY A
- Page 101 and 102: Kapitola 5 Turingovy stroje Cílem
- 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: KAPITOLA 6. MEZE ROZHODNUTELNOSTI 1
- Page 149 and 150: KAPITOLA 7. SLOŽITOST 148 Příkla
- Page 151 and 152: KAPITOLA 7. SLOŽITOST 150 • Napr
- Page 153 and 154: KAPITOLA 7. SLOŽITOST 152 7.2.4 Ne
- Page 155 and 156: KAPITOLA 7. SLOŽITOST 154 • Stro
- 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 146<br />
7.1.3 Složitost výpočtů TS<br />
Na cenu výpočtu se budeme dívat z hledisek času výpočtu a paměťové náročnosti.<br />
• Časová složitost – počet kroků (přechodů) TS provedený od počátku do<br />
konce výpočtu.<br />
• Prostorová (paměťová) složitost – počet „buněk“ pásky TS požadovaný pro<br />
daný výpočet.<br />
Příklad 7.1.1 Uvažme následující TS M:<br />
x/R<br />
x/L<br />
M:<br />
∆/R<br />
∆/x<br />
∆/∆<br />
Pro vstup w = ∆xxx∆∆... je:<br />
• časová složitost výpočtu M na w rovna 10,<br />
• prostorová složitost výpočtu M na w rovna 5.<br />
Lemma 7.1.1 Je-li časová složitost výpočtu prováděného TS rovna n, pak prostorová<br />
složitost tohoto výpočtu není větší než n + 1.<br />
Důkaz. Tvrzení je jednoduchou implikací plynoucí z definice časové a prostorové<br />
složitosti.<br />
✷<br />
Nyní budeme definovat funkce udávající složitost TS v závislosti na čase výpočtu<br />
(počtu kroků TS) a použitém prostoru (počtu použitých políček pásky). Bude se<br />
jednat o analýzu nejhoršího případu:<br />
Definice 7.1.1 Řekneme, že k-páskový DTS (resp. NTS) M přijímá jazyk L<br />
nad abecedou Σ v čase T M : N → N, jestliže L = L(M) a M přijme (resp. může<br />
přijmout) každé w ∈ L v nanejvýš T M (|w|) krocích.<br />
Definice 7.1.2 Řekneme, že k-páskový DTS (resp. NTS) M přijímá jazyk L nad<br />
abecedou Σ v prostoru S M : N → N, jestliže L = L(M) a M přijme (resp. může<br />
přijmout) každé w ∈ L při použití nanejvýš S M (|w|) buněk pásky.<br />
Poznámka 7.1.1 Do prostorové složitosti nepočítáme buňky pásky, na nichž je<br />
zapsán vstup, pokud nebudou během vypočtu přepsány.<br />
Zcela analogicky můžeme definovat vyčíslování určité funkce daným TS v určitém<br />
čase, resp. prostoru.