
formal_language_theory / lectures / unit_7
.pdf
Универсальная машина Тьюринга
m |
m |
|
|
ccc блок 1 cc блок 2 cc ... cc блок N ссс110... |
|
программа |
данные |
Универсальная машина Тьюринга U будет моделировать движения, которые бы предпринимала Tm T на входной цепочке, представленной как данные на ленте машины U, следующим образом.
21

Универсальная машина Тьюринга
m
[1] ссс 0с0с11R0сс
[2] 111L1c111L1c11R1cc
[3] 1111R0c1111R0c111L1cc
m
[4] 0с0с0ссc110 ...
U
1. Машина U передвигает свою головку вправо, пока она не обнаружит маркер в области данных над входным символом, ска- нируемым машиной T.
22

Универсальная машина Тьюринга
m
[1] ссс 0с0с11R0сс
U(1)
[2]111L1c111L1c11R1cc
[3]1111R0c1111R0c111L1cc
m
[4]0с0с0ссc110 ...
2. Этот символ, назовем его A, запоминается в конечном управлении ма- шины U, которая с этого момента начинает движе- ние влево, пока не достигнет маркера, регистрирую- щего текущее состояние машины T (отмечающего соответствующий блок в коде таблицы машины T ).
23

Универсальная машина Тьюринга
3. Машина U удаляет этот
mm1
[1]ссс 0с0с11R0сс
U
[2]111L1c111L1c11R1cc
[3]1111R0c1111R0c111L1cc
m
[4]0с0с0ссc110 ...
30
маркер (заменяет его символом B), передвигается вправо к подблоку, соответствующему символу A (=1), и помещает маркер над первым символом S в этом подблоке при условии, что S = 1. В последующем этот маркер подблока будем называть m1.
Если же S = 0, то машина U останавливается, поскольку у машины T нет никакого следующего движения.
24

Универсальная машина Тьюринга
m2 m1
[1] ссс 0с0с11R0сс
U
[2]111L1c111L1c11R1cc
[3]1111R0c1111R0c111L1cc
m
[4]0с0с0ссc110 ...
4. Предположим, |
что |
|
S = 1. |
|
|
Тогда |
машина |
U |
движется |
влево, пока |
не |
находит цепочку ссс. Затем машина U
движется вправо, помечая крайнее правое из этих трех с. Этот маркер назовем m2.
25

Универсальная машина Тьюринга
|
m2 |
m1 |
[1] |
ссс 0с0с11R0сс |
|
[2] |
111L1c111L1c11R1cc |
|
[3] |
1111R0c1111R0c111L1cc |
|
|
|
m |
[4]0с0с0ссc110 ...
5. После этого машина U входит в подпрограмму, которая попеременно передвигает маркер m1 на один символ ‘1’ вправо, а маркер m2 — на один блок вправо.
Чтобы различать эти маркеры (т. к. оба есть m) машина U будет запоминать в своем конечном управлении: m2 левее или правее m1.
26

Универсальная машина Тьюринга
m2 — маркер следующего
состояния
m1 m2
[1] ссс 0с0с11R0сс
[2] 111L1c111L1c11R1cc
m
[3] 1111R0c1111R0c111L1cc
6. Когда машина U сдвигает m1 на символ, который не является ‘1’, т. е. он есть L или R, маркер m2 располагается над символом ‘с’, который как раз перед
[4]0с0с0ссc110 ... блоком, соответствующим
следующему состоянию машины T.
27

Универсальная машина Тьюринга
m m
[1]ссс 0с0с11R0сс 2
[2]111L1c111L1c11R1cc
[3]1111R0c1111R0c111L1cc1
m
[4]0с0с0ссc110 ...
U(R0)
7. В этой точке машина U удаляет маркер m1 и записывает в своем конечном управлении направление (R), в котором машина T будет двигать свою головку ленты, и символ (0), который машина T должна печатать.
Затем машина U снова движется вправо в область данных и находит маркер, который указывает место головки ленты машины T.
28

Универсальная машина Тьюринга
[1] |
m2 |
ссс 0с0с11R0сс |
|
[2] |
111L1c111L1c11R1cc |
[3] |
1111R0c1111R0c111L1cc |
|
m |
[4]0с0с0ссc 1010 ...
U(R0)
8. Символ, находящийся под маркером, заменяется на символ, запомненный в конечном управлении (0), а маркер сдвигается на одну ячейку в направлении, также зафиксированном в конечном управ- лении (R).
Таким образом машина U смоделировала одно движение машины T.
29

Универсальная машина Тьюринга
m2
[1] ссс 0с0с11R0сс
U(1)
[2] 111L1c111L1c11R1cc
[3] 1111R0c1111R0c111L1cc
m
[4]0с0с0ссc 0 10 ...
U
Далее машина U запоминает новый символ (1), сканируемый машиной T, в своем конечном управлении, начинает двигаться влево, пока не достигнет маркера m2, регистрирующего текущее состояние машины T, и повторяет процесс, который был только что описан (см. п.3).
30