15
Vyčíslitelnost a složitost Tomáš Foltýnek [email protected] Turingův stroj

Turingův stroj

  • Upload
    iram

  • View
    69

  • Download
    2

Embed Size (px)

DESCRIPTION

Turingův stroj. Neformální popis Turingova stroje. 1936 Alan Turing Konečný automat s nekonečnou páskou na pásce je napsaný vstup symbol a y na pásce lze libovolně přepisovat po pásce se lze pohybovat oběma směry je možné měnit vnitřní stav Konečný automat neměl žádnou paměť - PowerPoint PPT Presentation

Citation preview

Page 1: Turingův  stroj

Vyčíslitelnost a složitostTomáš Foltý[email protected]

Turingův stroj

Page 2: Turingův  stroj

Vyčíslitelnost a složitost

Neformální popis Turingova stroje

• 1936 Alan Turing• Konečný automat s nekonečnou páskou

– na pásce je napsaný vstup– symbolay na pásce lze libovolně přepisovat– po pásce se lze pohybovat oběma směry– je možné měnit vnitřní stav

• Konečný automat neměl žádnou paměť– jen konečný počet stavů

• Zásobníkový automat měl nekonečný zásobník s přístupem pouze k symbolu na vrcholu

• Turingův stroj má nekonečnou pásku s přístupem kamkoliv.

strana 2

Zdroj: www.ecs.syr.edu

Page 3: Turingův  stroj

Vyčíslitelnost a složitost

Proč zavádíme Turingův stroj

• Je to zjednodušený model počítače– tzv. “výpočetní model”– model jakéhokoliv možného výpočtu

• Má jasnou formální definici umožňující dokazovat (ne)řešitelnost problémů

• Je formálním ekvivalentem vágně definované “algoritmické řešitelnosti”

• Cílem je ukázat, že existují problémy neřešitelné pomocí počítače

strana 3

Page 4: Turingův  stroj

Vyčíslitelnost a složitost 4

Definice Turingova stroje

• Turingův stroj je devíticeM = (Q, , , , , , q0, qA, qR), kde– Q je konečná množina vnitřních stavů je konečná množina vstupních symbolů

, je konečná množina páskových symbolů

, , (–) je počáteční symbol pásky (–) je prázdný symbol : (Q – {qA, qR}) Q{L,R} je přechodová funkce– q0Q je počáteční stav– qAQ je koncový akceptující stav– qRQ je koncový zamítající stav

Page 5: Turingův  stroj

Vyčíslitelnost a složitost 5

Výpočet Turingova stroje I.

• Turingův stroj čte symboly ze vstupní pásky• Na základě vnitřního stavu a čteného symbolu

TS podle přechodové funkce– změní svůj vnitřní stav– zapíše na pásku nový symbol– posune čtecí hlavu doleva, nebo doprava

• Vstupní páska je jednosměrně nekonečná– Zaplněno je vždy jen konečně mnoho políček– Ostatní políčka obsahují prázdný symbol

• Výpočet TS končí, jestliže se stroj dostane do některého ze stavů qA, qR.

Page 6: Turingův  stroj

Vyčíslitelnost a složitost 6

Konfigurace Turingova stroje

• Konfigurace je jednoznačně určena– vnitřním stavem– obsahem pásky– pozicí čtecí hlavy

• Může být obsah pásky „nekonečný“?• Konfiguraci tedy lze popsat trojicí

– K = (qQ, *, n) Q * N0

• Počáteční konfigurace (q0, w, 0)– počáteční stav– na pásce je vstupní slovo– čtecí hlava se nachází na počátečním políčku pásky

Page 7: Turingův  stroj

Vyčíslitelnost a složitost 7

Akceptující a zamítající konfigurace

• Výpočet TS končí, dostane-li se do některého ze stavů qA, qR.

• Akceptující konfigurace je tedy konfigurace tvaru (qA, , n)

• Zamítající konfigurace je pak konfigurace tvaru (qR, , n)

Page 8: Turingův  stroj

Vyčíslitelnost a složitost 8

Krok výpočtu TS

• Na množině všech konfigurací TS definujeme binární relaci krok výpočtu označovanou M

• (p, , n) M{

– (q, snb(), n+1) pro (p,n) = (q,b,R)

– (q, snb(), n-1) pro (p,n) = (q,b,L)

• Reflexivní a tranzitivní uzávěr relace M značíme M

* a definujeme jako k-násobný součin relace M pro všechna k N0

– tedy přechod přes 0-k kroků

Page 9: Turingův  stroj

Vyčíslitelnost a složitost

Zkrácený zápis konfigurace

• Konfiguraci (q,X1X2…Xk,n) lze zapsat jako řetězec X1X2…Xn-1qXnXn+1…Xk

– označení stavů nesmí být páskovými symboly– pozice stavu jednoznačně určuje pozici čtecí

hlavy

• Krok výpočtu pak lze psát jako– X1…Xn-1pXn…Xk M X1…Xn-1bqXn+1…Xk pro

(p,Xn) = (q,b,R)– X1…Xn-1pXn…Xk M X1…Xn-2qXn-1bXn+1…Xk pro

(p,Xn) = (q,b,L)

strana 9

Page 10: Turingův  stroj

Vyčíslitelnost a složitost 10

Výpočet Turingova stroje

• Výpočet TS je posloupnost konfigurací K0, K1, K2, …

• K0 je počáteční konfigurace TS• Ki M Ki+1 i≥0• Výpočet může být buď konečný, nebo

nekonečný. Je-li konečný, pak poslední konfigurací ve výpočtu je akceptující, nebo zamítající konfigurace.

Page 11: Turingův  stroj

Vyčíslitelnost a složitost 11

TS akceptuje, zamítá, cyklí

• Řekneme, že TS M daný vstupní řetězec w*

– akceptuje, jestliže výpočet M je konečný a poslední konfigurace je akceptující, tedy (q0, w*, 0) M

* (qA, z, n)– zamítá, jestliže výpočet M je konečný a poslední

konfigurace je zamítající, tedy (q0, w*, 0) M

* (qR, z, n)• Řekneme, že TS M pro daný vstupní řetězec w* cyklí,

jestliže výpočet TS M na slově w je nekonečný.• Jestliže TS M dané slovo w akceptuje, nebo zamítá, pak

říkáme, že nad daným slovem zastaví.• TS, který zastaví pro každý vstup, se nazývá úplný.

Page 12: Turingův  stroj

Vyčíslitelnost a složitost 12

Jazyk akceptovaný a rozhodovaný TS

• Jazyk akceptovaný TS M označujeme L(M) a definujeme jako množinu slov, které TS M akceptuje:L(M) = {w* | M akceptuje w}

• Je-li M navíc úplný TS, říkáme, že M rozhoduje jazyk L.

Page 13: Turingův  stroj

Vyčíslitelnost a složitost 13

Rekursivní a rekursivně spočetné jazyky• Jazyk L* nazýváme

– rekursivně spočetný právě tehdy, když L = L(M) pro nějaký TS M

– rekursivní právě tehdy, když L = L(M) pro nějaký úplný TS M

• Tedy– Ke každému rekursivnímu jazyku existuje TS, který

jej rozhoduje, tj. jeho výpočet je konečný– Ke každému rekursivně spočetnému jazyku musí

existovat TS, který akceptuje každé slovo w L, ale pro slova nepatřící do L buď zamítá, nebo cyklí.

Page 14: Turingův  stroj

Vyčíslitelnost a složitost 14

Příklady

• Navrhněte TS rozhodující jazyk L = {xux| x {0,1}, u {0,1}*}

• Navrhněte TS rozhodující jazyk L = {cdwcd | c,d {0,1}, w {0,1}*}

• Navrhněte TS rozhodující jazyk L = {anbncn | n >= 0}

• Navrhněte TS rozhodující jazyk L = {w | w {a}*, |w| = 2n, n ≥ 1}

• Navrhněte TS rozhodující jazyk “dominových kostek” L = {w| w{a..z}2, wi[2] = wi+1[1] i}

Page 15: Turingův  stroj

Vyčíslitelnost a složitost 15

Metody konstrukce TS

• Zapamatování v řídicí jednotce– Navrhněte TS rozhodující jazyk L = {xux| x {a,b}, u

{a,b}*} {a,b}• Tedy jazyk všech slov, které začínají a končí

stejným symbolem• Označování symbolů

– Navrhněte TS rozhodující jazyk L = {w | w {a}*, |w| = 2n, n ≥ 1}

• Tedy jazyk všech slov nad jednoprvkovou abecedou, jejichž délka je mocninou dvojky

• Používání více pásek