Курс№12. Машина Тьюринга0%
Теория · номер 12 из 27

Машина Тьюринга

Есть лента с символами, головка и таблица команд. Надо понять, что программа сделает с лентой. Шагать по большому числу не придётся, достаточно разгадать программу на маленькой ленте.

5 разделов~30 минут1 первичный балл
  1. 1Как устроена машина
  2. 2Читаем таблицу команд
  3. 3Две простые программы
  4. 4Как решать на экзамене
  5. 5Ловушки и домашка
Раздел 1 из 5

Как устроена машина

Команда состоит из трёх частей через запятую: что записать, куда сдвинуться, в какое состояние перейти.

СдвигЧто значит
LВлево
RВправо
NБез сдвига
SЗавершить работу после этой команды

Например, команда 0, L, q3 записывает 0, сдвигает головку влево и переводит её в состояние q3. Сдвиг происходит после записи. Пустая клетка в таблице значит, что такой пары состояния и символа быть не может.

Раздел 2 из 5

Читаем таблицу команд

На экзамене на ленте записано двоичное число, а слева и справа от него λ. Головка стоит рядом с числом. Ответом будет итоговая запись на ленте, переведённая в десятичную систему.

Вот программа. На ленте 101, головка в ближайшей ячейке справа от числа.

λ01
q0λ, L, q1
q11, S, q10, L, q11, L, q1

Проследим по шагам. Жирным выделена ячейка, над которой стоит головка.

ШагСостояниеЛентаКоманда
1q0λ 1 0 1 λλ, L, q1
2q1λ 1 0 1 λ1, L, q1
3q1λ 1 0 1 λ0, L, q1
4q1λ 1 0 1 λ1, L, q1
5q1λ 1 0 1 λ1, S, q1
Итог1 1 0 1

Программа прошла всё число, ничего в нём не меняя, и приписала единицу слева. Было 101, это 5, стало 1101, это 13. Теперь то же самое можно сделать с любым числом, не шагая по нему.

Раздел 3 из 5

Две простые программы

Инвертировать все биты

Головка стоит на пустой клетке справа от строки. Нужно, чтобы все 0 стали 1, а все 1 стали 0.

λ01
q0λ, L, q1
q1λ, S, q11, L, q10, L, q1

Сначала один шаг с пустой клетки на последний символ. Потом идём влево и меняем каждый символ. Пустая клетка слева означает конец.

Пусть на ленте 250 нулей и 750 единиц в любом порядке. Сколько единиц будет после работы? Каждый ноль станет единицей, поэтому единиц станет 250, а нулей 750.

Попробуй самучебная задача

Та же программа. На ленте 300 нулей и 700 единиц. Сколько единиц будет на ленте после работы?

Прибавить 1 к двоичному числу

Головка стоит на последней цифре.

λ01
q01, S, q01, S, q00, L, q0

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

Попробуй самучебная задача

Та же программа. На ленте двоичная запись числа 47, головка на последней цифре. Какое число получится на ленте? Ответ запиши в десятичной системе.

Раздел 4 из 5

Как решать на экзамене

  1. Выпиши таблицу и прогони её на 2–3 маленьких лентах из 2–3 символов.
  2. Сформулируй общее правило: «инвертирует», «прибавляет 1», «приписывает слева».
  3. Примени правило к большому числу. По шагам идти не нужно.
  4. Прогони программу руками на маленькой ленте ещё раз и сверь с правилом.

В настоящих задачах программы обычно делают что-то из этого:

Что делает программаКак это выглядит в таблице
Дописывает цифры слева или справаИдёт по числу, ничего не меняя, потом пишет в клетки с λ
Прибавляет 1Единицы становятся нулями, первый ноль становится единицей
Меняет ведущую цифру и дописывает единицу слеваДоходит до λ, возвращается на шаг, меняет цифру и снова идёт влево
Раздел 5 из 5

Ловушки и домашка

ЛовушкаКак не попасться
Где стоит головка в началеСправа или слева от числа, на последней цифре или рядом с ней. Читай условие
Что считают в ответеЕдиницы, нули, длину ленты или число в десятичной системе
Порядок действий в командеСначала запись, потом сдвиг
Команда с SСимвол из неё записывается, и только потом машина останавливается

Домашка

Шесть задач с настоящих экзаменов и из банка ФИПИ. Описание исполнителя повторяется над каждой задачей. Сначала разгадай программу на ленте 101, потом примени правило к числу из условия.

Где теряют балл в этих задачах

В последней задаче головка стоит слева от числа, а не справа, как в остальных.

Примеры и задачи «Попробуй сам» учебные, в домашке задачи с настоящих экзаменов и из банка ФИПИ.