| |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
|
| ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
Лекция 12. Примеры машин Тьюринга Пример 1. Машина, увеличивающая данное число на единицу — машина «1». В начале работы головка воспринимает заполненную ячейку (ячейку, содержащую символ 1), и внутренняя память машины находится в состоянии q1. В процессе работы машина находит справа пустую ячейку, печатает в ней единицу и останавливается. В результате работы машинное слово 01xq11y00 (где 1n означает последовательность из п единиц) преобразуется в слово 01x+yq010. Преобразование, осуществляемое машиной в результате выполнения программы, будем обозначать стрелкой . В данном случае имеем 01xq11y00 01x+yq0100. Запишем совокупность команд, составляющих данную программу: q11 ® q11П — после выполнения у раз этой команды машина придет в состояние 01x+yq100; q10 ® q01C — после выполнения этой команды машина приходит в состояние 01x+yq010. Пример работы машины при х=2, y=4 приведен в табл. 4.1. Состояние машины предоставлено в таблице словом, записанным на ленте с символом внутренней памяти, расположенным над воспринимаемой ячейкой. Таблица 4.1.
Машина выполняет программу и в том случае, если х=у=0; при этом слово 0q100 преобразуется в слово 0q010. Программу машины можно представить в виде таблицы, содержащей необходимые команды. Программа рассмотренной машины представлена табл. 4.2., где а — символ обозреваемой ячейки, q — символ состояния внутренней памяти. Таблица 4.2.
Пример 2. Машина, уменьшающая данное число на единицу — машина «-1». Эта машина осуществляет преобразование 01xq11y001x+y-2q01000 (y>0) Воспринимая в исходном состоянии заполненную ячейку, машина находит правый край данного массива единиц, стирает единицу и останавливается напротив самой правой из оставшихся единиц. Дополнительное условие, машина «отказывается» работать, если в начальном состоянии она воспринимает незаполненную ячейку. Команды, осуществляющие данную программу: q11 ® q21П — после выполнения команды получаем слово 01x+1q21y-10; q21 ® q21П —после выполнения (у—I) раз этой команды машин приходит в состояние 01x+yq20; q20 ® q30Л —это дает слово 01x+y-1q310; q31 ® q00Л — после выполнения этой команды имеем заключительное слово 01x+y-2q0100. Программа .данной машины приведена в табл. 4.3. Таблица 4.3.
В программе отсутствуют команды, начинающиеся словами q10 и q30. Но ситуация q30 вообще не встречается при работе машины, а ситуация q10 встречается только в тех случаях, когда данная программа не применима (в этих случаях внутренняя память машины не приходит в заключительное состояние, оставаясь в состоянии q1). Пример 3. Машина, сдвигающая головку вправо, на следующий массив единиц — машина «С+». Необходимо осуществить преобразование 01xq11y0z1w01x+y0z1w-1q0 10 (y0, z1, w1) (0z здесь означает последовательность из z нулей). Машина находит следующий справа массив единиц и останавливается, воспринимая самую правую заполненную ячейку. Программа содержит команды: q11 ® q11П (через у тактов команда дает слово 01x+yq10z1v0); q10 ® q20П, q20 ® q20П (выполнение этих команд приводит к слову 01x+y0z q21v0); q21 ® q31П, q31 ® q31П (получается слово 01x+y0z1vq30); q30 ® q00Л (получается заключительное слово). Программа приведена в табл. 4.4. Таблица 4.4.
Если исходное машинное слово имеет вид 01xq11y00… , то машина продолжает работать «вечно», пристраивая справа пустые ячейки и не приходя в заключительное состояние; таким образом, данная программа не применима к слову 01xq11y00… . Будем рассматривать также машины Тьюринга, внутренняя память которых имеет не одно, а несколько заключительных состоянии. Пример 4. Машина, проверяющая истинность равенства х = 0,— машина «Пр». В исходном положении машина воспринимает самую правую заполненную ячейку массива из х+1 единиц, изображающего на ленте число х. Если слева от этой ячейки — пустая ячейка, то по окончании работы машины ее внутренняя память приходит в состояние q01; если слева — заполненная ячейка, внутренняя память приходит в состояние q02: 01xq11 Работа машины осуществляется в соответствии со следующей программой (справа от команд будем писать слово, получающееся в результате применения данной команды): q11q21Л: 01x-1q2110 (или q2010 при x=0), q21q021П: 01xq0210 (или q20q010П: 0q0110). Программа машины представлена в табл. 4.5. Таблица 4.5.
Приведем далее без пояснений программы нескольких простых машин. Пример 5. Машина «С-», сдвигающая головку влево на следующий массив единиц: 01x+10y1zq11w01xq010y1z+w0, либо, если z = v = 0: 01x+10yq1001xq010y0 (в последнем случае, в частности, может быть у = 0). Программа машины приведена в табл. 4.6. Таблица 4.6.
Пример 6. Машина «H», печатающая число 0: 01xq11y00001x+y0q010 (x0, y>0); в частном случае может быть 01xq11y001z001x+yq01z+10 Программа машины приведена в табл. 4.7. Таблица 4.7.
Программа машины приведена в табл. 4.8. Таблица 4.8.
Построим сначала программу для осуществления следующего цикла:
Как и прежде, слева будем писать команды, а справа — машинные слова, получающиеся в результате применения этих команд столько раз, сколько они применимы:
Далее,
Вводим затем команды
Программа машины «У» приведена в табл. 4.9. Таблица 4.9.
| ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|