Church-Turingova teze Univerzální Turingův stroj Diagonalizace

Slides:



Advertisements
Podobné prezentace
Deduktivní soustava výrokové logiky
Advertisements

DOTAZOVACÍ JAZYKY slajdy přednášce DBI006
J. Pokorný 1 DOTAZOVACÍ JAZYKY slajdy přednášce DBI006 J. Pokorný MFF UK
Rozhodnutelnost.
J. Pokorný 1 DOTAZOVACÍ JAZYKY slajdy přednášce DBI006 J. Pokorný MFF UK Odpřednášeno
Dynamické systémy.
Dualita úloh lineárního programování a analýza citlivosti
MARKOVSKÉ ŘETĚZCE.
Teorie vyčíslitelnosti – věta o rekurzi
Teorie vyčíslitelnosti
HYPERTEXT PREPROCESSOR. PROGRAMOVÁNÍ. DEFINICE POJMŮ Problém Problém nevyřešený, nežádoucí stav obvykle vyžaduje nějaké řešení Neřešitelný problém Neřešitelný.
Jazyk VHDL Martin Štěpánek
Aplikace teorie grafů Základní pojmy teorie grafů
Algebra.
Teorie čísel Nekonečno
Základy informatiky přednášky Kódování.
Fakulta životního prostředí Katedra informatiky a geoinformatiky
Varianty Turingova stroje Výpočet funkcí pomocí TS
Lineární algebra.
Úvod do Teorie množin.
Základní číselné množiny
Důkazové metody.
Seminář – Základy programování
Algoritmizace.
SWI072 Algoritmy komprese dat1 Algoritmy komprese dat Statistické metody komprese dat a Shannon-Fanův kód.
Algoritmus po krocích rozepsaný návod k nějaké činnosti
REDUKCE DAT Díváme-li se na soubory jako na text, pak je tento text redundantní. Redundance vyplývá z:  některé fráze nebo slova se opakují  existuje.
Fakulta životního prostředí Katedra informatiky a geoinformatiky
Tento Digitální učební materiál vznikl díky finanční podpoře EU- OP Vzdělávání pro konkurenceschopnost. Není – li uvedeno jinak, je tento materiál zpracován.
ORIENTOVANÉ GRAFY V této části se seznámíme s následujícími pojmy:
Abeceda a formální jazyk
Příklady jazyků Příklad 1: G=({S}, {0,1}, P, S)
Gramatiky a jazyky Přednáška z předmětu Řízení v komplexních systémech
Složitost.
Teorie vyčíslitelnosti
Jazyk vývojových diagramů
Predikátová logika.
V matematice existují i seskupení objektů, které nejsou množinami.
JavaScript Podmínky, cykly a pole.
Algebra II..
AUTOMATY Bori · Brkos Formální jazyk {a, b, aa, ab, ba, bb, aaa, aab, aba, abb, baa, bab, bba, bbb} nad abecedou {a, b}
Úvod do předmětu Opakování
Vztah bezkontextových jazyků a ZA
Regulární výrazy Regulární výrazy představují další možnost popisu regulárních jazyků (právě od nich dostaly své jméno). Definice: Množina všech regulárních.
Algoritmizace a programování Algoritmizace – základní pojmy - 01
Složitost II TIN063 Ondřej Čepek. 2 Sylabus 1.Výpočetní model – DTS a NTS 2.Časová a prostorová složitost výpočtu 3.Technické pomůcky: lineární komprese,
P-těžké, np-těžké a np-úplné problémy
Turingův stroj.
doc. RNDr. Zdeněk Botek, CSc.
Automaty a gramatiky.
Churchova (Turingova) teze
Mlhavost Fuzzy logika, fuzzy množiny, fuzzy čísla
Konečné automaty a vyhledávání
Jak může Turingův stroj řešit úlohu? Mám rozhodnout, zda posloupnost znaků 0 a 1 obsahuje dvě 0 za sebou.
NP-úplné problémy v grafech
Algoritmicky nerozhodnutelný problém Věta: Problém přijetí prázdného slova Turingovým strojem je algoritmicky nerozhodnutelný. A TM ={  M,e  | M je TS.
Teorie čísel Prvočíslo Generování prvočísel: Erathosenovo síto
Doc. Josef Kolář (ČVUT)Prohledávání grafůGRA, LS 2010/11, Lekce 4 1 / 15Doc. Josef Kolář (ČVUT)Turingovy strojeGRA, LS 2012/13, Lekce 12 1 / 21 TURINGOVY.
Doc. Josef Kolář (ČVUT)Prohledávání grafůGRA, LS 2010/11, Lekce 4 1 / 15Doc. Josef Kolář (ČVUT)NP-úplné problémyGRA, LS 2012/13, Lekce 13 1 / 14 NP-ÚPLNÉ.
Churchova (Turingova) teze
Úvod do programování Vyučující: Mgr. Vítězslav Jersák
Algoritmizace a programování Algoritmy 1 - Úvod. Základní pojmy Počítačový program Počítačový program zápis zdrojového kódu, kterému rozumí počítač zápis.
Základní pojmy v automatizační technice
Algoritmizace – základní pojmy
Základní pojmy v automatizační technice
Teorie vyčíslitelnosti – věta o rekurzi
Matematická logika 5. přednáška
Gödelova(y) věta(y).
Definiční obory. Množiny řešení. Intervaly.
Algoritmizace a datové struktury (14ASD)
Transkript prezentace:

Church-Turingova teze Univerzální Turingův stroj Diagonalizace

Postup řešení určitého problému Algoritmus Postup řešení určitého problému Obecný Konečný Deterministický Srozumitelný Opakovatelný Jak pojem algoritmus formalizovat?

Formalizace pojmu algoritmus 1900 Hilbert: Formulace 23 problémů století mj. problém jak rozhodnout, zda má daný polynom (nad více proměnnými) celočíselné kořeny Pojem algoritmus byl do té doby intuitivní 1936 A. Turing – Turingův stroj 1936 A. Church – λ kalkul Oba formalismy jsou ekvivalentní

Church-Turingova teze „Každý proces, který lze intuitivně nazvat algoritmem, lze ralizovat pomocí Turingova stroje“ Ztotožnění pojmů „algoritmicky řešitelný“ a „řešitelný pomocí TS“

Kódování Turingova stroje Je dán TS M = (Q, , , , , , q0, qA, qR). Předpokládejme seřazení a očíslování prvků množin Q, ,  takové, že Q = {q0, qA, qR, …},  = {, , …} Dále označme s1 = L a s2 = R Pak hodnotu přechodové funkce (qi,xj) = (qk,xl,sm) lze jednoznačně zakódovat binárním řetězcem 0i10j10k10l10m Binárním kódem TS M je pak řetězec 111<KÓD1>11 <KÓD2>11…11 <KÓDr>111 Analogicky lze kódvat i vstupní slova stroje M Kód stroje M označíme <M>, kód slova w označíme <w>

Univerzální Turingův stroj Díky kódování TS a vstupního slova lze sestrojit Univerzální TS U takový, že L(U) = {<M>#<w> | M akceptuje slovo w} Výpočet stroje U: Ověří, že je slovo požadovaného tvaru (pokud ne, tak zamítá) Simuluje krok po kroku výpočet stroje M nad slovem w. U má 3 pásky: kód stroje M, aktuální obsah pásky stroje M, aktuální stav stroje M U akceptuje (zamítá) právě tehdy, když M nad w akceptuje (zamítá). Pokud M nad w cyklí, pak i U nad <M>#<w> cyklí.

Verifikace korektnosti algoritmu Je dán algoritmus A zapsaný programovacím jazykem určený Turingovým strojem … Chceme určit, zda skutečně řeší daný problém tedy transformuje daný vstup na daný výstup Problém (vstup, výstup) i algoritmus (TS) jsou formálně specifikovatelné ale ověření korektnosti je algoritmicky neřešitelný problém

Problém příslušnosti pro TS Problém určit, zda stroj M slovo w akceptuje, nebo neakceptuje (tj. zamítne, nebo bude cyklit). Tedy problém určit, zda w  L(M) Definujeme jazyk odpovídající problému: PP = {<M>#<w> | stroj M akceptuje slovo w} Tedy PP = {<M>#<w> | w  L(M)}

Snadno lze ověřit, že PP je částečně rozhodnutelný Rozhodnutelnost PP Snadno lze ověřit, že PP je částečně rozhodnutelný L(U) = PP U není úplný, proto zatím nevíme, zda je PP rozhodnutelný Může existovat i jiná metoda, než je UTS? Odpověď na otázku za chvíli…

Diagonalizace I. 1873 Georg Cantor Existuje jazyk, který není rekursivně spočetný Každý řetězec nad abecedou {0,1} lze chápat jako kód nějakého TS, resp. jako kód nějakého slova. Pro dané slovo x  {0,1}* označme Mx Turingův stroj s kódem x a wx slovo s kódem x. Všechna slova nad abecedou lze snadno uspořádat a sestrojit dvourozměrnou tabulku

Diagonalizace II. w w0 w1 w00 w01 w10 … M 1 M0 M1 M00 M01 M10

Diagonalizace III. Zkonstruujeme jazyk D nad abecedou {0,1}. Zařadíme do něj právě taková slova wd, která nejsou akceptována strojem Md. Sestrojili jsme jazyk, který není akceptován žádným Turingovým strojem. Kdyby byl akceptován nějakým strojem Mm, pak by nesměl obsahovat slovo wm právě tehdy, když jej obsahuje, a naopak.

Důkaz ne-rozhodnutelnosti PP Sporem. Předpokládejme existenci úplného TS T akceptujícího jazyk PP Pro vstup <M>#<w> stroj T pracuje takto: T zastaví a akceptuje právě tehdy, když M zastaví a akceptuje T zastaví a zamítne právě tehdy, když M zastaví a zamítne, anebo když cyklí na w. Zkonstruujeme stroj N, který pro vstup x pracuje takto: Na pásku zapíše řetěz x#x Simuluje výpočet stroje T na vstupu x#x N akceptuje právě tehdy, když T zamítne vstup x#x N zamítne právě tehdy, když T akceptuje vstup x#x Stroj N nad vstupem <N> pak nechá stroj T simulovat sebe sama a zamítne právě tehdy, když akceptuje, a akceptuje právě tehdy, když tamítne Dostáváme tedy spor, tudíž stroj T nemůže existovat Jazyk PP tedy není rekursivní

Důsledek ne-rozhodnutelnosti PP Jazyk co-PP = {<M>#<w> | M neakceptuje w} není rekursivně spočetný PP je rekursivně spočetný. Kdyby byl i co-PP rekursivně spočetný, pak by byl PP i co-PP rekursivní Víme, že PP není rekursivní, tudíž co-PP nemůže být ani rekurisvně spočetný Neexistuje tedy (ani neúplný) TS akceptující jazyk co-PP