Příklady Turingova stroje - Turing machine examples

Následující příklady doplňují článek Turingův stroj .


Turingův úplně první příklad

Následující tabulka je Turingovým úplně prvním příkladem ( Alan Turing 1937):

„1. Stroj lze sestrojit pro výpočet sekvence 0 1 0 1 0 1 ...“ (0 <prázdné> 1 <prázdné> 0 ...) ( nerozhodnutelné str. 119)
Konfigurace Chování
m-konfigurace
(stav)
Symbol pásky Páskové operace Konečná konfigurace m
(stav)
b prázdný P0, R. C
C prázdný R. E
E prázdný P1, R. F
F prázdný R. b

Pokud jde o akce, které stroj ve skutečnosti provádí, Turing (1936) ( Nerozhodnutelný s. 121) uvádí následující:

„Tuto [příkladovou] tabulku (a všechny následující tabulky stejného druhu) je třeba chápat tak, že pro konfiguraci popsanou v prvních dvou sloupcích se operace ve třetím sloupci provádějí postupně a stroj poté přejde do m-konfigurace v posledním sloupci. " (Nerozhodnutelný s. 121)

Dává to velmi jasně najevo, když redukuje výše uvedenou tabulku na jedinou instrukci nazvanou „b“ ( nerozhodnutelná str. 120), ale jeho instrukce se skládá ze 3 řádků. Pokyn „b“ má tři různé možnosti symbolů {Žádný, 0, 1}. Po každé možnosti následuje sled akcí, dokud se nedostaneme do sloupce úplně vpravo, kde je konečná konfigurace m „b“:

Aktuální m-konfigurace (instrukce) Symbol pásky Operace na pásce Konečná konfigurace m (instrukce)
b Žádný P0 b
b 0 R, R, P1 b
b 1 R, R, P0 b

Jak poznamenala řada komentátorů včetně samotného Turinga (1937) (např. Post (1936), Post (1947), Kleene (1952), Wang (1954)), Turingovy pokyny nejsou atomové - další zjednodušení modelu může být provedeny bez snížení jeho výpočetního výkonu; více na stroji Post – Turing .

Jak je uvedeno v článku Turingův stroj , Turing navrhl, aby byl jeho stůl dále atomizován umožněním pouze jediného tisku/vymazání, po kterém následuje pohyb jedné pásky L/R/N. Dává nám tento příklad první převedené tabulky ( Undecidable , str. 127):

Aktuální m-konfigurace (Turingův stav) Symbol pásky Tisková operace Pohyb pásky Konečná m-konfigurace (Turingův stav)
q 1 prázdný P0 R. q 2
q 2 prázdný P prázdné, tj. E R. q 3
q 3 prázdný P1 R. q 4
q 4 prázdný P prázdné, tj. E R. q 1

Turingovo prohlášení stále zahrnuje pět atomových operací. Při dané instrukci (m-konfigurace) stroj:

  1. pozoruje páskový symbol pod hlavou
  2. na základě pozorovaného symbolu přejde k příslušné sekvenci instrukcí, kterou má použít
  3. vytiskne symbol S j nebo vymaže nebo nedělá nic
  4. pohybuje páskou doleva, doprava nebo vůbec
  5. přejde na konečnou konfiguraci m pro daný symbol

Protože akce Turingova stroje nejsou atomové, musí simulace stroje atomizovat každou 5-tici na sekvenci jednodušších akcí. Jedna z možností - použitá v následujících příkladech „chování“ jeho stroje - je následující:

(q i ) Testovací symbol pásky pod hlavou: Pokud je symbol S 0, přejděte na q i .01, pokud symbol S 1 přejděte na q i .11, pokud symbol S 2 přejděte na q i .21 atd.
(q i .01) vytiskněte symbol S j 0 nebo vymažte nebo nedělejte nic, pak přejděte na q i .02
(q i .02) posuňte pásku doleva nebo doprava, vůbec ne, pak přejděte na qm0
(q i .11) vytiskněte symbol S j 1 nebo vymažte nebo nedělejte nic, pak přejděte na q i .12
(q i .12) posuňte pásku doleva nebo doprava, vůbec ne, pak přejděte na qm1
(q i .21) vytiskněte symbol S j 2 nebo vymažte nebo nedělejte nic, pak přejděte na q i .22
(q i .22) posuňte pásku doleva nebo doprava, vůbec ne, pak přejděte na qm2
(atd. - se všemi symboly se musí počítat)

Takzvané „kanonické“ stroje s konečným stavem provádějí testy symbolů „paralelně“; více viz mikroprogramování .

V následujícím příkladu toho, co stroj dělá, si povšimneme některých zvláštností Turingových modelů:

„Konvence psaní obrázků pouze na alternativní čtverce je velmi užitečná: vždy ji využiji.“ (Nerozhodnutelný s. 121)

Při tisku tedy přeskakuje každé další políčko. Vytištěné čtverečky se nazývají F-čtverce; prázdné čtverce mezi nimi mohou být použity pro „značky“ a nazývají se „E-čtverce“ jako v „náchylných k vymazání“. F-čtverce jsou zase jeho „figurkové čtverce“ a budou nést pouze symboly 1 nebo 0-symboly, které nazýval „figury“ (jako v „binárních číslech“).

V tomto případě začíná páska „prázdně“ a „figury“ se na ni poté vytisknou. Pro stručnost jsou zde uvedeny pouze stavy TABLE:

Sekvence Identifikátor instrukce Hlava
. . . . . . . . . . . . . . . . . .
1 1 . . . . . . . . . . . . . . . . . .
2 2 . . . . . 0 . . . . . . . . . . . .
3 3 . . . . . . 0 . . . . . . . . . . .
4 4 . . . . . 1 . 0 . . . . . . . . . .
5 1 . . . . . . 1 . 0 . . . . . . . . .
6 2 . . . . . 0 . 1 . 0 . . . . . . . .
7 3 . . . . . . 0 . 1 . 0 . . . . . . .
8 4 . . . . . 1 . 0 . 1 . 0 . . . . . .
9 1 . . . . . . 1 . 0 . 1 . 0 . . . . .
10 2 . . . . . 0 . 1 . 0 . 1 . 0 . . . .
11 3 . . . . . . 0 . 1 . 0 . 1 . 0 . . .
12 4 . . . . . 1 . 0 . 1 . 0 . 1 . 0 . .
13 1 . . . . . . 1 . 0 . 1 . 0 . 1 . 0 .
14 2 . . . . . 0 . 1 . 0 . 1 . 0 . 1 . 0

Zde je zobrazen stejný „běh“ se všemi mezilehlými potisky pásek a pohyby:

Turingův stroj Turingův první stroj.JPG

Podrobný pohled na tabulku odhaluje určité problémy s Turingovým vlastním příkladem - ne všechny symboly jsou započítány.

Předpokládejme například, že jeho páska nebyla zpočátku prázdná. Co by se stalo? Turingův stroj bude číst jiné hodnoty, než jsou zamýšlené hodnoty.

Kopírovací podprogram

Jedná se o velmi důležitý podprogram používaný v rutině „násobení“.

Příklad Turingova stroje zpracovává řetězec 0s a 1s, přičemž 0 představuje prázdný symbol. Jejím úkolem je zdvojnásobit jakoukoli sérii 1 s, která se na pásce objeví, tak, že mezi ně napíšete 0. Například když hlava čte „111“, zapíše 0, pak „111“. Výstupem bude „1110111“.

Aby tento Turingův stroj splnil svůj úkol, bude potřebovat pouze 5 provozních stavů, které se nazývají {s 1 , s 2 , s 3 , s 4 , s 5 }. Každý stát provádí 4 akce:

  1. Přečtěte si symbol pod hlavou
  2. Napište výstupní symbol, který určuje stát
  3. Přesuňte pásku doleva nebo doprava podle rozhodnutí státu
  4. Přepnout do následujícího stavu podle aktuálního stavu
Počáteční m-konfigurace (aktuální instrukce) Symbol pásky Operace tisku Pohyb pásky Konečná konfigurace m (další instrukce)
s 1 0 N. N. H
s 1 1 E R. s 2
s 2 0 E R. s 3
s 2 1 P1 R. s 2
s 3 0 P1 L s 4
s 3 1 P1 R. s 3
s 4 0 E L s 5
s 4 1 P1 L s 4
s 5 0 P1 R. s 1
s 5 1 P1 L s 5
H - - -

„Běh“ sekvencí strojů prostřednictvím 16 konfigurací stroje (aka Turingovy státy):

Sekvence Identifikátor instrukce Hlava
1 s 1 0 0 0 0 1 1 0 0 0 0 0
2 s 2 0 0 0 0 0 1 0 0 0 0 0
3 s 2 0 0 0 0 0 0 1 0 0 0 0
4 s 3 0 0 0 0 0 0 0 1 0 0 0
5 s 4 0 0 0 0 1 0 1 0 0 0 0
6 s 5 0 0 0 1 0 1 0 0 0 0 0
7 s 5 0 0 1 0 1 0 0 0 0 0 0
8 s 1 0 0 0 1 0 1 1 0 0 0 0
9 s 2 0 0 0 0 1 0 0 1 0 0 0
10 s 3 0 0 0 0 0 1 0 0 1 0 0
11 s 3 0 0 0 0 0 0 1 0 0 1 0
12 s 4 0 0 0 0 1 1 0 0 1 0 0
13 s 4 0 0 0 1 1 0 0 1 0 0 0
14 s 5 0 0 1 1 0 0 1 0 0 0 0
15 s 1 0 0 0 1 1 0 1 1 0 0 0
16 H 0 0 0 1 1 0 1 1 0 0 0

Chování tohoto stroje lze popsat jako smyčku: začíná v s 1 , nahrazuje první 1 číslicí 0, poté se pomocí s 2 přesune doprava, přeskočí 1 s a objeví se první 0. s 3 pak přeskočí další sekvenci 1 s (původně žádné) a nahradí první 0, kterou najde, s 1. s 4 se přesune zpět doleva, přeskočí 1 s, dokud nenajde 0 a přepne na s 5 . s 5 se poté přesune doleva, přeskočí 1 s, dokud nenajde 0, které původně napsal s 1 .

Nahradí 0 nulou 1, posune se o jednu pozici doprava a znovu zadá s 1 pro další kolo smyčky.

To pokračuje, dokud s 1 nenajde 0 (to je 0 uprostřed dvou řetězců 1 s), kdy se stroj zastaví.

Alternativní popis

Další popis vidí problém v tom, jak sledovat, kolik „1“ existuje. Nemůžeme použít jeden stav pro každé možné číslo (stav pro každý z 0,1,2,3,4,5,6 atd.), Protože pak bychom potřebovali nekonečné stavy, které by reprezentovaly všechna přirozená čísla, a stavový stroj je konečný - budeme to muset nějakým způsobem sledovat pomocí pásky.

Základní způsob, jak to funguje, je zkopírování každé „1“ na druhou stranu, pohyb tam a zpět - je dostatečně inteligentní, aby si pamatoval, na které části cesty je. Podrobněji přenáší každou „1“ na druhou stranu tím, že rozpoznává dělící „0“ uprostřed a rozpoznává „0“ na druhé straně, aby věděl, že dosáhla konce. Vrací se stejnou metodou, detekuje prostřední „0“ a poté „0“ na původní straně. Tato „0“ na původní straně je klíčem k hádance, jak sleduje počet jedniček.

Jde o to, že před nesením „1“ označí tuto číslici jako „převzatou“ a nahradí ji „0“. Když se vrátí, vyplní „0“ zpět „1“, poté přejde na další , označí ji „0“ a cyklus zopakuje, přenese „1“ napříč a tak dále. Při každém výletu napříč a zpět se značka „0“ přesune o krok blíže ke středu . Díky tomu sleduje, kolik „1“ je zaznamenáno.

Když se vrátí, značka „0“ vypadá jako konec sbírky „1“ k ní - jakékoli „1“, které již byly přeneseny, jsou pro ni neviditelné (na druhé straně značky „0“ ) a tak to vypadá, jako by to fungovalo na (N -1) čísle „1“ s - podobně jako důkaz matematickou indukcí .

Úplný „běh“ ukazující výsledky přechodných „pohybů“. Chcete -li to vidět lépe, klikněte na obrázek a poté klikněte na stažení ve vyšším rozlišení:

Příklad kopie Turingova stroje. JPG

3stavový zaneprázdněný bobr

Následující Turingova tabulka pokynů byla odvozena z Petersona (1988), strana 198, obrázek 7.15. Peterson pohne hlavou; v následujícím modelu se páska pohybuje.

Symbol pásky Aktuální stav A. Současný stav B Současný stav C.
Napište symbol Přesuňte pásku Další stav Napište symbol Přesuňte pásku Další stav Napište symbol Přesuňte pásku Další stav
0 1 R. B 1 L A 1 L B
1 1 L C 1 R. B 1 N. STŮJ

Kresba „stavu“ 3stavového zaneprázdněného bobra zobrazuje vnitřní posloupnosti událostí, které jsou nutné ke skutečnému provedení „stavu“. Jak bylo uvedeno výše, Turing (1937) naprosto jasně ukazuje, že toto je správná interpretace 5-tic, které popisují instrukci ( Undecidable , str. 119). Další informace o atomizaci Turingových 5-tic naleznete na Post-Turingově stroji :

Stavový diagram 3 stav zaneprázdněný bobr. JPG

Následující tabulka ukazuje "komprimovaný" běh - pouze Turingovy stavy:

Sekvence Identifikátor instrukce Hlava
1 b 0 0 0 0 0 0 0 0 0 0 0 0 0 0
2 B 0 0 0 0 0 0 0 1 0 0 0 0 0 0
3 A 0 0 0 0 0 1 1 0 0 0 0 0 0 0
4 C 0 0 0 0 1 1 0 0 0 0 0 0 0 0
5 B 0 0 0 1 1 1 0 0 0 0 0 0 0 0
6 A 0 0 1 1 1 1 0 0 0 0 0 0 0 0
7 B 0 0 0 1 1 1 1 1 0 0 0 0 0 0
8 B 0 0 0 0 1 1 1 1 1 0 0 0 0 0
9 B 0 0 0 0 0 1 1 1 1 1 0 0 0 0
10 B 0 0 0 0 0 0 1 1 1 1 1 0 0 0
11 B 0 0 0 0 0 0 0 1 1 1 1 1 0 0
12 A 0 0 0 0 0 1 1 1 1 1 1 0 0 0
13 C 0 0 0 0 1 1 1 1 1 1 0 0 0 0
14 H 0 0 0 0 1 1 1 1 1 1 0 0 0 0

Úplný „běh“ 3stavového zaneprázdněného bobra. Výsledné Turingovy stavy (to, čemu Turing říkal „m-konfigurace“-„konfigurace stroje“) jsou zobrazeny zvýrazněně šedě ve sloupci A a také pod pokyny stroje (sloupce AF-AU)):

Turingův stroj příklad 3 stav zaneprázdněný bobr.JPG

Reference

Úplné reference viz Turingův stroj .

  • Ivars Peterson, 1988, The Mathematical Tourist: Snapshots of Modern Mathematics , WH Freeman and Company, New York, ISBN  0-7167-2064-7 (pbk.). Turingovy stroje jsou popsány na str. 194ff, příklad zaneprázdněného bobra je na obrázku 7.15 na straně 198.
  • Martin Davis editor, 1965, The Undecidable: Basic Papers on Undecidable Propositions, Unsolvable Problems and Computable Functions , Raven Press, New York, no ISBN, no card catalog number.
  • Alan Turing, 1937, On Computable Numbers, with an Application to the Entscheidungsproblem , str. 116ff, with short comments by Davis on page 115.
  • Alan Turing, 1937, On Computable Numbers, with an Application to the Entscheidungsproblem. Oprava , str. 152-154.