Другой вариант алгоритма:

q1

|

e q1 R

e

Пример 1

1.  Дано число n в десятичной системе счисления. Разработайте машину Тьюринга, которая увеличивала бы заданное число на 2. В начальный момент времени автомат обозревает крайнюю левую цифру. В конечном состоянии он так же должен обозревать крайнюю левую цифру числа. Составить программу-таблицу и нарисовать диаграмму переходов. Кроме самой программы-таблицы, описать словами, что выполняется машиной в каждом состоянии. Отметьте запрещенные клетки таблицы.

q1

q2

q3

q4

q5

e

eq2L

Х

1q5S

eq5R

Х

0

0q1R

2q4L

1q4L

0q4L

1

1q1R

3q4L

2q4L

1q4L

2

2q1R

4q4L

3q4L

2q4L

3

3q1R

5q4L

4q4L

3q4L

4

4q1R

6q4L

5q4L

4q4L

5

5q1R

7q4L

6q4L

5q4L

6

6q1R

8q4L

7q4L

6q4L

7

7q1R

9q4L

8q4L

7q4L

8

8q1R

0q3L

9q4L

8q4L

9

9q1R

1q3L

0q3L

9q4L

q1 – перемещение автомата к последней цифре числа

q2 – добавление к последней цифре числа значения 2

q3 – увеличение разрядов числа на 1, если последняя цифра числа 8 или 9

q4 – перевод автомата в крайнюю левую позицию

q5 – завершение работы

Протестировать решение на числах 72, 39, 98, 999.

2.  На информационной ленте машины Тьюринга содержится непрерывная последовательность символов «%». Сконструируйте машину Тьюринга, которая заменит каждый третий символ на символ «$» (отсчет символов начинается с правого края строки). В начальный момент времени автомат обозревает произвольный символ заданной строки символов. В конечный момент времени он должен обозревать крайний левый символ. Составить программу-таблицу и нарисовать диаграмму переходов. Кроме самой программы-таблицы, описать словами, что выполняется машиной в каждом состоянии. Отметьте запрещенные клетки таблицы.

НЕ нашли? Не то? Что вы ищете?

q1

q2

q3

q4

q5

e

eq2L

eq5R

eq5R

eq5R

X

%

%q1R

%q3L

%q4L

$q2L

$

X

X

X

X

Протестировать на значениях $, $$$, $$$$$.

3.  На информационной ленте машины Тьюринга записано число N (N>2) в унарной системе счисления. Читающая головка находится напротив крайнего левого символа в записи числа. Выполните трассировку программы для некоторого числа. Определите, какую задачу она решает. Придумайте, как можно решить эту же задачу, используя меньшее число состояний. Запишите свое решение в виде программы-таблицы. Отметьте запрещенные клетки таблицы.

q1

q2

q3

q4

q5

|

| q1 R

e q3 L

e q4 L

| q4 L

e

e q2 L

e q5 R

Вычитает из числа 2.

q1

q2

q3

|

eq2R

eq3R

e

X

X

X

4.  Дано число X в двоичной системе счисления. Постройте две машины Тьюринга: первая должна решать задачу умножения двоичного числа на 8, вторая – задачу вычитания 1 из заданного двоичного числа. Если при вычитании в старшем разряде получается ноль, заменять его пустым символом. Используя композицию построенных машин Тьюринга решить две задачи: вычисления Y1 = 8X – 1 и Y2 = (X – 1)*8. В начальный момент времени автомат обозревает крайний левый непустой символ. Во всех машинах Тьюринга отметьте запрещенные клетки таблицы.

Чтобы умножить двоичное число на 8, достаточно приписать справа от него три нуля.

Y=X*8

q1

q2

q3

q4

q5

e

0q2R

0q3R

0q4L

eq5R

X

0

0q1R

X

X

0q4L

1

1q1R

X

X

1q4L

Y=X-1

p1

p2

p3

p4

p5

e

ep2L

X

ep4R

X

X

0

0p1R

1p2L

0p3L

ep5R

1

1p1R

0p3L

1p3L

1p5S

Объединяем обе части для вычисления выражения Y1=8X-1

q1

q2

q3

q4

q5

p1

p2

p3

p4

p5

e

0q2R

0q3R

0q4L

eq5R

X

ep2L

X

ep4R

X

X

0

0q1R

X

X

0q4L

0p1S

0p1R

1p2L

0p3L

ep5R

1

1q1R

X

X

1q4L

1p1S

1p1R

0p3L

1p3L

1p5S

Объединяем обе части для вычисления выражения Y1=(X-1)*8

p1

p2

p3

p4

p5

q1

q2

q3

q4

q5

e

ep2L

X

ep4R

X

X

0q2R

0q3R

0q4L

eq5R

X

0

0p1R

1p2L

0p3L

ep5R

0q1S

0q1R

X

X

0q4L

0p1S

1

1p1R

0p3L

1p3L

1p5S

1q1S

1q1R

X

X

1q4L

1p1S

Протестировать на значениях 11, 100

Из за большого объема этот материал размещен на нескольких страницах:
1 2 3 4 5