Применение машин тьюринга к словам


КОНСТРУИРОВАНИЕ МАШИН ТЬЮРИНГА



бет3/4
Дата23.02.2016
өлшемі344.5 Kb.
#3905
1   2   3   4

КОНСТРУИРОВАНИЕ МАШИН ТЬЮРИНГА



5.13. Известно, что на ленте записано слово ; n 1. Постройте машину Тьюринга с внешним алфавитом А = {а0, 1}, которая отыскивала бы левую единицу этого слова (т. е. приходила бы в состояние, при котором обозревалась бы ячейка с самой левой единицей данного слова, и в этом положе­нии останавливалась), если в начальный момент головка машины обозревает одну из ячеек с буквой данного слова.

5.14. Сконструируйте машину Тьюринга с внешним ал­фавитом А = {а0, 1}, которая каждое слово в алфавите А1 = {1} перерабатывает в пустое слово, исходя из стандарт­ного начального положения.

Указание. В алфавит внутренних состояний включите четыре буквы Q= {q0, q1, q2, q3}.



5.15. Сконструируйте машину Тьюринга с внешним алфавитом А = {а0, 1}, которая каждое слово длиной п в алфавите A1 = {1} перерабатывает в слово длиной п + 1 в том же алфавите А1.

Указание. Используйте алфавит внутренних состояний из двух букв. См. задачу 5.1.



5.16. На ленте машины Тьюринга записаны два набора единиц 1. Они разделены звездочкой *. Составьте функцио­нальную схему машины так, чтобы она выбрала больший из этих наборов, а меньший стерла, исходя из стандартного на­чального положения (см. задачу 5.2). Звездочка должна быть сохранена, чтобы было видно, какой из массивов выбран.

Указание. Машина может работать, например, следующим обра­зом. Заменить крайнюю правую единицу на  и из состояния q1 перейти в состояние q2, в котором она должна, ничего не меняя, прошагать к край­ней левой единице. Здесь, перейдя в состояние q3, заменить крайнюю левую единицу на букву . Далее, перейдя в состояние q4, прошагать к крайней правой единице, ничего не меняя. Здесь снова заменить единицу на бук­ву  и вернуться к крайней левой единице и т. д. Дальше программа имеет разветвление. Если, начиная двигаться с правого конца, машина в состоя­нии q1, сделав шаг влево, обозревает ячейку с буквой *, то это означает, что единицы правого массива иссякли. Следовательно, левый массив боль­ше. Тогда машина, перейдя в состояние q5. проходит ячейку с буквой * и во всех последующих ячейках слева проставляет единицы. Затем в со­стоянии q6 она возвращается к ячейке со *, минует ее и следует дальше вправо, стирая содержимое ячеек (там записаны буквы ). Дойдя до пер­вой пустой ячейки, машина останавливается. Если же, начиная двигаться с левого конца, машина в состоящий q3 сделав шаг вправо, обозревает ячей­ку с буквой *, то это означает, что иссякли единицы левого массива. Следовательно, большим оказывается правый массив. Привлекая новые состоя­ния q7 и q8, строим программу аналогично предыдущему ответвлению.



5.17. Постройте машину Тьюринга, которая бы к нату­ральному числу в десятичной системе счисления прибавляла единицу.

Р е ш е н и е. В качестве внешнего алфавита естественно выбрать алфавит, содержащий наименования всех цифр десятичной системы счисления. Конечно же, необходим и пу­стой символ а0. Итак, А ={ а0, 1 2, 3, 4, 5, 6, 7, 8, 9, 0}. Состоя­ний у машины будет два: q0 (это, как обычно, остановка) и q1 (рабочее состояние). Итак, Q = {q0, q1}. Функциональная схема {программа) машины:



А Q

а0

1

2

3

4

5

6

7

8

9

0

q1

q01

q02

q03

q04

q05

q06

q07

q08

q09

q1

q01

На­чальное положение машины стандартное. Читателю предла­гается проанализировать работу машины.



5.18. По аналогии с предыдущей задачей составьте функ­циональную схему машины Тьюринга, которая бы от нату­рального числа в десятичной системе счисления отнимала единицу.

5.19. Дана конечная совокупность единиц, вписанных в ячейки, взятые подряд без пропусков. Постройте функцио­нальную схему такой машины Тьюринга, которая записывала бы в десятичной системе число этих единиц, т. е. пересчитывала бы набор единиц.

5.20. На ленте записаны два числа в двоичной системе счисления, разделенные звездочкой:




1

0

1

1

*

1

0

1




Определите, какую операцию проделает с ними машина Тью­ринга, начиная из стандартного положения (крайняя правая ячейка, состояние q1), если программа машины задается таблицей:

А Q

q1

q2

q3

q4

q5

q6

a0

q0




q1

q5a0П

q6a0Л




1

q2

q2

q4

q4

q5

q6

0




q2

q3

q4

q5

q6

*




q3







q5

q3

5.21. Вопрос, аналогичный вопросу из предыдущей задачи, для ленты




1

1

0

1

*

1

0

0

1




и для машины Тьюринга с программой:

q11



q10Л,




q10



q1Л,

q21



q20Л,




q20



q3Л,

q31



q4Л,




q1*



q2Л,

q41



q10Л,




q1а0



q0.

5.22. На ленту подряд вписаны два конечных набора еди­ниц, разделенные звездочкой. Составьте программу машины Тьюринга, которая выписывала бы подряд, без разделения звездочкой, столько единиц, сколько их в обоих наборах (сло­жение единиц).

Указание. См. задачу 5.3.



5.23. На ленту подряд вписаны два конечных набора еди­ниц, разделенные звездочкой. Причем в левом наборе единиц больше, чем в правом. Составьте программу машины Тьюринга, которая в левом наборе оставляла бы ровно столько еди­ниц, на сколько единиц в левом наборе больше, чем в правом, а все остальные единицы стирала бы (вычитание единиц).

Указание. См. задачу 5.4.



5.24. Два конечных набор а. из т и n единиц записаны на ленту подряд. Машина в: начальном положении обозревает крайнюю правую единицу левого набора. Постройте про­грамму машины Тьюринга, которая выдавала бы набор единиц из НОД (m, п) штук, а остальные единицы, стирала бы.

Указание. Используйте алгоритм Евклида нахождения наибольшего общего делителя двух натуральных чисел и запрограммируйте его для машины Тьюринга. См. задачу 5.5.



5.25. Постройте машину Тьюринга, осуществляющую пе­ревод слова в слово . Причем в начальном положении машина должна находиться в состоянии q1 и обозревать первую ячейку, эту же ячейку она должна обо­зревать и в момент остановки. (Эта машина называется «пере­нос нуля» и обозначается А.)

Решение. Приводим программу машины. Рядом с командами изображаем конфигурации, получающиеся в ре­зультате выполнения соответствующих команд:









q1



















Начальное положение




0

0

1

….

1

0













q2
















q10 → q2П




0

0

1

….

1

0
















q3













q20  q31




0

1

1

….

1

0

























q3




q31  q3П




0

1

1

….

1

0






















q4







q30  q4Л




0

1

1

….

1

0






















q5







q41  q50




0

1

….

1

0

0



















q6










q50  q6Л




0

1

….

1

0

0










q6



















q61  q6Л




0

1

….

1

0

0










q0



















q60  q00




0

1

….

1

0

0




Проанализируйте работу машины.

5.26. Постройте машину Тьюринга, перерабатывающую слово в это же слово из стандартного начального положения, причем в момент остановки должна обозре­ваться крайняя левая ячейка. (Эта машина называется «ле­вый сдвиг» и обозначается Б.)

5.27. Условие аналогично условию предыдущей задачи, но в начальном положении должна обозреваться крайняя левая ячейка, а конечное положение стандартно. Эта машина называется «правый сдвиг» и обозначается Б+.)

Указание. Программа этой машины получается из программы


Б заменой символа Л символом П.

5.28. Постройте машину Тьюринга (называемую «транс­позиция» и обозначаемую В), которая перерабатывает слово в слово , причем в начальном и конечном положении обозревается ячейка, содержащая 0, меж­ду двумя наборами единиц.

5.29. Постройте машину Тьюринга (называемую «удвое­ние» и обозначаемую Г), которая перерабатывает слово в слово , причем в начальном и конечном положении обозревается крайняя левая ячейка.

5.30. Постройте машину Тьюринга, переводящую слово в слово , причем в начальном положении обозревается ячейка с 0 между наборами из у и z единиц, а в конечном положении обозревается ячейка с 0 между наборами из г и х единиц. (Эта машина называется «циклический сдвиг» и обозначается Ц3.)

Указание. Проверьте, что такой перевод произойдет в резуль­тате последовательного применения (композиции) ранее построенных ма­шин В, Б и В, т. е. Ц3 = ВБВ.

Решение. В самом деле, введем обозначение и вычислим:

ВБВ(01x01y01z0) = ВБ (В (01x01y01z0)) = ВБ (01x01z01y0) = В(Б (01x01z01y0)) =

= В(01x01z01y0)) = ) = 01z01x01y0.

5.31. Постройте машину Тьюринга, перерабатывающую слово 01x01y (здесь использовано обозначение ) в слово 01x01y01x01y, причем в начальном положении обо­зревается самая левая ячейка, а в конечном  ячейка, в ко­торой записан 0, заключенный между массивами 1x01y и 1y01x. (Машина называется «копирование» и обозначается К2.

Указание. Проверьте, что эта машина представляет собой сле­дующую композицию построенных выше машин:




Достарыңызбен бөлісу:
1   2   3   4




©dereksiz.org 2024
әкімшілігінің қараңыз

    Басты бет