Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Algorytm.doc
Скачиваний:
0
Добавлен:
01.05.2025
Размер:
865.28 Кб
Скачать

7.3. Примеры построения машин Тьюринга

Пример 7.1.

  1. Пусть (X = {0,1}, Q = {q0,q1,q2}, q0, #, P), где Р имеет такие команды:

1 q0 1 q0 R

0 q0 0 q0 R # q0 # q1 L

1 q1 0 q1 L

0 q1 1 q2 L

# q1 1 q2 L ,

где в начальный момент головка осматривает первый символ слова р  F(x) в положении q0. Эта машина Тьюринга реализует алгоритм, который правильно вычисляет функцию f(x)=x+1 по правилам двоичного сложения добавления единицы до числа р, представленного в двоичной системе счисления. Рассмотрим некоторые примеры. Пусть р = 100111, тогда имеем такую последовательность команд:

1 q0 1 q0 R  0 q0 0 q0 R  0 q0 0 q0 R  1 q0 1 q0 R  1 q0 1 q0 R  1 q0 1 q0 R 

 # q0 # q1 L  1 q1 0 q1 L  1 q1 0 q1 L  0 q1 1 q2 L

В результате слово р = 100111 “переписалось” машиной в слово р` = 101000 = 100111 + 1 в двоичной системе счисления.

  1. Пусть (X = {0,1}, Q = {q0}, q0, #, P), где Р имеет такие команды:

0 q0 0 q0 L

1 q0 1 q0 L

# q0 1 q0 E

Действие этой машины заключается в том, что, начавши работу с какого-либо непустого слова р, до этого слова приписывается слева символ 1. Машина при этом не останавливается. То есть, результат работы машины не определенный.

  1. Пусть (X = {0,1}, Q = {q0,q1}, q0, #, P), где Р имеет такие команды:

# q0 # q0 R

0 q0 0 q0 R

1 q0 1 q1 E

Действие этой машины Тьюринга заключается в том, что в слове р машина ищет символ 1 (если он есть) и, найдя его, останавливается. Если слово р является числом в двоичной системе счисления, то машина останавливается, если это число не равняется нулю. В противном случае работа машины продолжается бесконечно.

  1. Пусть задано два слова а0а1 и а2а3а4а5 (рис. 7.2). Задание состоит в том,

чтобы, начиная с левого конца ленты, заменить символы а3 и а5 на а2 и а4 соответственно. После чего возвратиться к левому концу ленты. Команды имеют такой вид:

а0 q0 а0 q0 R а3 q2 а2 q2 R а4 q3 а4 q3 L

a1 q0 а1 q0 R а4 q2 а4 q2 R а2 q3 а2 q3 L

# q0 # q1 R а5 q2 а4 q3 R # q3 # q3 L

а2 q1 а2 q2 R # q3 # q3 L а1 q3 а1 qz L , где qz – состояние останова.

#

а0

а1

#

a2

а3

а4

а5

#

Рис. 7.2

Функциональную схему МТ для этого примера зададим в в виде таблицы 7.1.

Таб. 7.1.

X/Q

q0

q1

q2

q3

a0

R

a1

R

Lqz

a2

Rq2

L

a3

а2 R

a4

R

L

a5

а4 Rq3

#

Rq1

L

  1. Составим функциональную схему МТ, которая соответствует алгоритму

сложения двух чисел, представленных унарной записью. То есть, числа подаются совокупностью единиц, общая сумма которых равняется заданному числу. Числа отделяются знаком + (рис. 7.3.). Пусть это будут числа 4 и 6. Начальное слово на ленте имеет вид 1111 + 111111.

Функциональную схему МТ для этого примера приведено в таб. 7.2.

#

1

1

1

1

+

1

1

1

1

1

1

#

Рис. 7.3.

Таб. 7.2.

X/Q

Q0

q1

q2

1

# Rq2

1Lq1

1Rq2

#

Rq2

# Rq0

1Lq1

+

# Rqz

+Lq1

+Rq2

На этой схеме сложения начальные условия определяются ячейкой с крайней левой единицей и состоянием q0. На первом такте единица стирается, выдается команда движения вправо и переходу в состояние q2(#Rq2). Последующие такты сводятся до движения вправо через все единицы (1Rq2) и знак “+” (+Rq2) пока не будет достигнута пустая ячейка. Тогда в нее вписывается единица, а машина переходит в состояние q1(1Lq1). После этого происходит движение в обратном направлении через все символы 1 и “+” до первой пустой ячейке слева. Далее происходит движение вправо, и машина переходит в состояние q0(#Rq0). Благодаря такому циклу единица левого слагаемого переносится в правое слагаемое, что соответствует слову 111+1111111. Очевидно, что через четыре таких цикла начальное слово превратится в 1111111111. До начала пятого цикла в состоянии q0 рассматривается символ “+”, который стирается, происходит движение вправо и останов (#Rqz, вместо состояния qz можно использовать любое состояние, отсутствующее при написании команд). В результате получаем слово 1111111111, что соответствует числу 10.

6. Построить машину Тьюринга сложения двух натуральных чисел в алфавите Х{1}, как в предыдущем примере, начиная и заканчивая свою работу с левой непустой ячейки, но по другой программе.

Двигаясь вправо, найти символ "+" и заменить его на символ "1", затем дойти до правой крайней ячейки с символом "1", заменить его на # - пустой символ, повернуться в начальное положение и закончить роботу. Тогда программа будет иметь такой вид:

1 q0 1 q0 R

+ q0 1 q0

# q0 # q1 L

1 q1 # q2 L

1 q2 1 q2 L

# q2 # qz R

7. Построить машину Тьюринга, которая в алфавите Х{0,1,2,3,4,5,6,7,8,9} выполняет операцию сложения 1 к натуральному числу n, записанному в десятичной системе счисления: 1) находясь в начальном положении справа в крайней ячейке (т.е. в разряде единиц); 2) находясь в стандартном положении. Программа для поставленной задачи будет иметь вид:

1) 0 q1 1 qz 2) 0 q0 0 q0 R 0 q1 1 qz

1 q1 2 qz 1 q0 1 q0 R 1 q1 2 qz

2 q1 3 qz 2 q0 2 q0 R 2 q1 3 qz

3 q1 4 qz 3 q0 3 q0 R 3 q1 4 qz

4 q1 5 qz 4 q0 4 q0 R 4 q1 5 qz

5 q1 6 qz 5 q0 5 q0 R 5 q1 6 qz

6 q1 7 qz 6 q0 6 q0 R 6 q1 7 qz

7 q1 8 qz 7 q0 7 q0 R 7 q1 8 qz

8 q1 9 qz 8 q0 8 q0 R 8 q1 9 qz

9 q1 0 q1 L 9 q0 9 q0 R 9 q1 0 q1 L

# q1 1 qz # q0 # q1 L # q1 1 qz

8. Построить машину Тьюринга, выполняющую операцию (x div 2) – целочисленное деление, и имеющую входной алфавит А = {0, 1, #}. Таблица соответствия данной машины Тьюринга будет иметь следующий вид:

X/Q

q0

q1

q2

0

R

#q2L

0q2L

1

R

#q2L

1q2L

#

#q1L

0qz

Операция (x div 2) реализована сдвигом цепочки вправо на 1 разряд.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]