Univerzalita a robustnost IBllO 1 / 19 Jednoduchý výpočtový model Hľadáme čo najjednoduchší počítač (výpočtový model), ktorý je schopný realizovať všetky algoritmické výpočty. Prečo? • aký najjednoduchší model je schopný realizovať všetky výpočty? • obecnosť výsledkov o praktickej neriešitelnosti a nerozhodnutelnosti • presná formulácia a formálne dôkazy tvrdení týkajúcich sa praktickej neriešitelnosti a nerozhodnutelnosti Jednoduchý výpočtový model - dáta • dáta = reťazce symbolov • počet rôznych symbolov potrebných na zakódovanie reťazcov je konečný (podobne ako na zakódovanie všetkých čísel nám stačí v desiatkovej resp. binárnej sústave 10 resp. 2 číslice) • dáta môžeme zapisovať na jednorozmernú pásku, ktorá obsahuje políčka; na každom políčku je zapísaný jeden symbol, ktorý je prvkom vstupnej abecedy Linearizácia dátových štruktúr • linearizácia zoznamu • linearizácia dvojrozmerného poľa, matice • linearizácia stromu Dynamické dátové štruktúry a neohraničenosť jednosmernej pásky Jednoduchý výpočtový model - riadiaca jednotka b/a/*/d/a/b/b/*/b/ 4/19 Jednoduchý výpočtový model - riadiaca jednotka • výpočet je realizovaný riadiacou jednotkou • riadiaca jednotka je vždy v jednom z konečne veľa rôznych stavov (stav zodpovedá inštrukcii algoritmu) • riadiaca jednotka vždy snímá práve jedno políčko jednorozmernej pásky (hodnota, s ktorou manipuluje inštrukcia algoritmu) 9 atomické akcie • prečítanie symbolu z políčka pásky » zápis symbolu na políčko pásky a posun o jedno políčko na páske » zmena stavu riadiacej jednotky • závislosť zmeny na aktuálnych hodnotách Jednoduchý výpočtový model - základné operácie jeden krok výpočtu • prečítanie symbolu • podľa aktuálneho stavu riadiacej jednotky a prečítaného symbolu sa vykoná • zmena stavu • zápis symbolu • posun o jedno políčko vpravo alebo víavo Turingov stroj Alan Turing, 1936 6/19 Turingov stroj Turingov stroj Turingov stroj (TS) pozostáva z • (konečnej) množiny stavov • (konečnej) abecedy symbolov • nekonečnej pásky rozdelenej na políčka • čítacej a zapisovacej hlavy, ktorá sa pohybuje po páske a sníma vždy 1 políčko pásky • prechodového diagramu 7/19 Turingov stroj - prechodový diagram Prechodový diagram • orientovaný graf • vrcholy grafu sú stavy TS • hrana z vrcholu s do vrcholu t reprezentuje prechod a je označená dvojicou tvaru (a/b, L) alebo (a/b, R); a a je symbol, ktorý hlava TS z pásky číta (tzv. spínač) • b je symbol, ktorý na pásku zapisuje • L resp. R určuje smer pohyb hlavy doľava resp. doprava • požadujeme, aby diagram bol jednoznačný (deterministický Turingov stroj), tj. zo stavu nesmú vychádzať dve hrany s rovnakým spínačom • jeden zo stavov je označený ako štartovný (počiatočný) stav (označený šípkou) • niektoré zo stavov sú označené ako koncové stavy (označené výrazným ohraničením) Tu ringov stroj - výpočet Krok výpočtu prechod z s do ŕ označený (a/b, L) v prechodovom diagrame ak riadiaca jednotka TS je v stave s a hlava číta symbol a, tak hlava prepise symbol a symbolom b, posunie sa o 1 políčko doľava a stav riadiacej jednotky sa zmení na í (analogicky pre (a/b, R) a pohyb vpravo) Výpočet Výpočet začína v počiatočnom stave na najlavejšom neprázdnom políčku pásky. Výpočet prebieha krok po kroku tak, ako predpisuje prechodový diagram. Výpočet sa zastaví keď dosiahne niektorý z koncových stavov. I Turingov stroj Turingov stroj pre palindrómy .-. a/a, R f \b/b, R — -i J a/a, L return r , J b/b, L #/#, R 10 / 19 #|#|t7|fc|f>|ŕ7|#|#|-- t © # # # b b\a\#\# f © # # # b b\#\#\# n Turingov stroj # # # b b a # # FCD # # # b b a # # í© ■■■### í) &|a|#|#|--- t © ■■■### b b\a\#\# ■■■ \ © ■•• #|#|#|ŕ|ft|#|#|#|--- + © riß) 11 / 19 T ###bb### ####b### r@ Turingov stroj # # #\#\b\#\# # | © ####b### n ######## r® # # # # # # # # T FES.' 12 / 19 I Turingov stroj Simulátor Turingových strojov http://www.f i.muni.cz/ xbarnat/tafj/turing 13 / 19 Turingov stroj ako algoritmus • Turingov stroj môžeme chápať ako počítač s jedným, fixovaným programom • softwarom je prechodový diagram; hardwarom je riadiaca jednotka a páska • jednotlivé TS sa líšia iba svojim softwarom, preto často hovoríme o programovaní Tu ringovho stroja Turingov stroj ako algoritmus • Turingov stroj môžeme naprogramovať tak, aby riešil rozhodovací problém • pre rozhodovací problém P, ktorého množina vstupných inštancií je kódovaná ako množina linearizovaných reťazcov, konštruujeme Turingov stroj M s počiatočným stavom s a dvoma koncovými stavmi YES a NO pre každý vstup X, ak M začne výpočet v stave s na najlavejšom symbole reťazca X, tak M skončí výpočet v stave YES a NO v závislosti na tom, či výstupom P pre X je "Áno" alebo "Nie" Turingov stroj ako algoritmus Turingove stroje môžu byť naprogramované aj pre riešenie iných než rozhodovacích problémov. V takomto prípade predpokladáme, že keď sa TS zastaví (prejde do koncového stavu), tak výstupom je reťazec zapísaný na páske medzi dvoma špeciálnymi znakmi (napr. !) Ak sa výpočet zastaví a na páske je iný počet symbolov ! ako 2, chápeme výpočet ako neukončený (tj. ako výpočet, ktorý cyklí donekonečna). 17 Churchova Tu ringová hypotéza Aké problémy sú riešitelné pomocou vhodne naprogramovaného TS? Churchova Turingova hypotéza Každý algoritmický problém, pre ktorý existuje program v nejakom programovacom jazyku vyššej úrovne a je riešiteľný na nejakom hardwaru, je riešiteľný aj na Turingovom stroji. Prečo hypotéza? CT hypotéza formuluje vzťah medzi dvoma konceptami: • matematicky presný pojem riešitelnosti na Turingovom stroji a • neformálny koncept algoritmickej riešitelnosti, ktorý je postavený na pojmoch "programovací jazyk vyššej úrovne", "program v programovacom jazyku" Churchova Turingova hypotéza Argumenty pre Churchovovu Tu ringovú hypotézu CT hypotézu formulovali v 30-tych rokoch nezávisle Alonso Church a Alan Turing. Od tej doby bolo navrhnutých množstvo "univerzálnych" modelov (absolútnych, schopných riešii všetky mechanicky riešitefné problémy) • Turingove stroje (Alan Turing) • lambda kalkulus (Alonso Church) • produkčné systémy (Emil Post) • rekurzívně funkcie (Stephen Kleené) • kvantové počítače Fakt 0 všetkých navrhnutých formalizmoch je dokázané, že sú ekvivalentné v tom zmysle, že určujú zhodnú triedu algoritmicky riešitelných problémov. 18 / 19 Churchova Turingova hypotéza Dôsledky Churchovej Turingovej hypotézy • extrémne výkonné superpočítače nie sú silnejšie než malé počítače s jednoduchým programovacím jazykom; za predpokladu neohraničeného času a velkosti pamäte dokážu obidva riešiť tie isté algoritmické problémy • pojem algoritmicky riešiteľného (rozhodnutelného) problému je robustný, tj. je nezávislý na konkrétnej voľbe výpočtového modelu resp. programovacieho jazyka • CT hypotéza podporuje správnosť definície nerozhodnuteľných problémov 19 / 19