Програма для машини Тюринга складається із набору правил переходів.
Кожне правило переходу складається з умови та команди переходу.
Умова переходу визначає який поточний стан та який символ на каретці задовольняють умову для виконання команди даного переходу.
Команда переходу визначає 3 дії, які може виконувати машина Тюринга:
Початковий стан машини буде поточним станом першого переходу програми.
Кінцевий стан почначається символом знаку оклику!
.
Регістр символів у програмі важливий.
Назва стану машини може містити будь-які друковані символи Unicode окрім пробільних та символу коми ,
. Наприклад, q1
, q'
, 1
, state_1
, стан-1
.
Символ у комірці стрічки може бути будь-яким друкованим символом Unicode окрім коми ,
.
Напрямок руху каретки при виконанні машиною команди кодується одним із трьох символів:
L
- рух влівоN
- не виконувати рухR
- рух вправоПрограма задається як послідовність переходів. Кожен перехід починається з нового рядка, пусті рядки ігноруються.
перехід1
перехід2
перехід3
перехідN
Перехід складається із умови та команди, що розділені символами ->
:
умова->команда
Перехід завжди починається з нового рядка і не містить символів перед умовою чи після команди.
Умова переходу складається з назви поточного стану та поточного символу, що розділені комою ,
: q1,g
, stateN,#
, 1,_
.
Команда переходу складається із нового символа, напрямку руху каретки та нового стану, що розділені комами: f,R,state2
, *,N,q2
, _,R,1
.
При цьому кожну із частин команди можна упускати - це означатиме, що відповідна дія не виконуватиметься:
,R,q1
- символ під кареткою залишається незміннимf,,q1
- каретка не рухається (аналогічно f,N,q1
)f,R,
- стан машини не змінюватиметьсяТоді повний перехід позначатиметься так:
q1,a->b,R,q2
А програма виглядатиме так:
q0,h->H,R,q0
q0,e->E,R,q0
q0,l->L,R,q0
q0,o->O,R,q0
q0,.->!,R,q1
q1, -> ,L,!
q 1,a->b,R,q2
,a->b,,
q,,->b,,
q,->b,,
q,xx->b,,
>
після символу -
: q,a-b,,
q,a->,,R,q2
q,a->xx,,
q,a->b,T,q2
q1,a->b,R,new state
q1,
, q1,x
, q1,x->
, q1,x->,
, q1,x->,R
,q, ->a,R,q
q,b->,,!
із пустою стрічкою на входіq1, ->,R,q2
q2, ->,L,q1
q2,x->,,!
із пустою стрічкою на вході