Turingův stroj

Turingův stroj navrhl Alan Turing v roce 1936 jako prostředek pro studium algoritmů. Jde o abstraktní systém. Můžeme si jej však představit jako reálné zařízení tvořené třemi základními částmi, a to

1. řídící jednotkou,
2. hlavou pro čtení a zápis,
3. doprava nekonečnou páskou s políčky pro zpracovávané symboly.

Zajímavé je, že náhražku Turingova stroje s konečnou páskou, si někteří nadšenci sestro­jují dokonce i ze dřeva. Viz Richard Ridel

Řídící jednotka je konečný automat. Symboly nějaké abecedy čte z nekonečné pásky snímací hlava, která je na pásku opět zapisuje. Páska se může pohybovat vždy o jedno políčko oběma směry s výjimkou prvního políčka zleva. V každém kroku přečte hlava jeden symbol z pásky, konečný automat změní svůj stav, hlava zapíše symbol na pole pásky, ze kterého četla a páska se posune o jedno pole vlevo nebo vpravo.

Na pásku Turingova stroje zapíšeme konečný počet symbolů vstupní abecedy, na ostatních polích zůstanou prázdné symboly „ “, které v definici označíme například Δ, konečný automat nastavíme do počátečního stavu, hlavu umístíme nad počáteční symbol a stroj spustíme.

Turingův stroj definujeme jako uspořádanou pětici

T = (U, X, x0, δ, F)
kdeUje konečná množina páskových symbolů U = (V ᑌ W ᑌ {δ},
Vneprázdná vstupní abeceda,
Wmnožina pomocných symbolů,
Δprázdný symbol,
x0 ∈ X   počáteční stav,
F ⊂ Xmnožina koncových stavů,
δpřechodová funkce, δ: (X − F) × U → X × U × {L, R},

kde symbol L z množiny {L, R} označuje, že se páska posune vlevo, symbol R znamená, že se páska posune doprava.

Přechodová funkce δ přiřazuje některým dvojicím (x, u) trojici (x′, u′, d), kde x ∈ X − F je současný stav automatu, u ∈ U je symbol přečtený z pásky, x′ je nová hodnota stavu, u′ ∈ U je nová hodnota symbolu, kterým bude nahrazen na pásce symbol ud ∈ {L, R} určuje směr posunu hlavy. Pro stavy x ∈ F není přechodová funkce δ definována, výpočet končí a stroj se v koncovém stavu zastaví. Avšak i pro některé stavy x ∈ X − F a vstupní symboly u ∈ U nemusí bát přechodová funkce definována. Také v tomto případě výpočet končí a stroj se zastaví ve stavu x, který nepatří do množiny F. Podobně je výpočet ukončen a stroj se zastaví, jestliže je hlava nad prvním symbolem pásky zleva a je požadováno další posunutí pásky vpravo (tj. hlavy vlevo).

Abychom mohli jednoduše sledovat činnost Turingova stroje, zavedeme označení zahrnující situaci na pásce, polohu hlavy a stav automatu. Konfigurace Turingova stroje je výraz tvaru αxβ, který znamená, že na pásce je v daném okamžiku zapsán řetěz αβ, kde αβ ∈ U*, automat je ve stavu x ∈ X a hlava stojí nad prvním symbolem zleva řetězu β. Prázdné symboly Δ vlevo od řetězu α a vpravo od řetězu β neuvažujeme. Nejpřehlednější ovšem je je napsat stav nad nebo pod symbol, na kterém se nachází páska.


Ukázka výpočtu pomocí Turingova stroje

Tento Turingův stroj má pouhé dva stavy a pracuje na pásce, na které mohou být zapsány znaky 0, 1 a prázdný znak. Stavy jsou označeny znaky A a B. Prázdný znak je v tabulce řídícího automatu bez označení. V tabulce situací (konfigurací stroje) na pásce je zadáno výchozí, slovo, počáteční umístění hlavy a počáteční stav. Tím je zadán postup výpočtu Turingova stroje. Můžeme jej sledovat až k jeho zastavení. Po zastavení na pásce zůstane slovo, které je řešením požadovaného zadání.

Zadání Turingova stroje pomocí tabulky a popis situací na pásce během činnosti. Popisy situací jsou dva pro dvě různé varianty zadání.

    A         
    1  0  1    

       A       
    1  0  1    

           A    
    1  0  1    

              A 
    1  0  1    

           B    
    1  0  1    

       B       
    1  0  0    

    H          
    1  1  0    

    A         
    1  1  1    

       A       
    1  1  1    

           A    
    1  1  1    

              A 
    1  1  1    

           B    
    1  1  1    

       B       
    1  0  0    

    B          
    0  0  0    

 H             
 1  0  0  0    

Dvě varianty situací
na pásce (konfigura-
cí):
Ve stavu A se hlava
při přečtení znaku 0
i znaku 1 posouvá do-
prava, zapisuje stejné
znaky, jaké přečetla
a zůstává ve stavu A.
Při přečtení prázdné-
ho znaku zapíše prá-
zdný znak, změní stav
na B, posune se dole-
va, a pokud přečte
znak 1, nahradí jej
znakem 0. Při přečtení
znaku 0 nebo prázd-
ného znaku jej nahra-
dí znakem 1 a zastaví
se.
Zastavení nad prázd-
ným políčkem nasta-
ne, pokud jsou ve slo-
vě na pásce samé zna-
ky jedna.

Slovo v zadání znamená číslo ve dvojkové soustavě a popsaný Turingův stroj k němu při každém spuštění přičte číslo 1 a zastaví se. Zastavení u levého sloupce situací obecně nemusí nastat nad první jedničkou, jak se stalo shodou okolností v našem případě. V pravém sloupci pod sebe na prázdný znak před první číslici na pásce jedničku zapíše vždy.