Статья Автор: Деникина Н.В., Деникин А.В.

Машина Тьюринга — проверка программой

Питон здесь — не решение, а проверка

Соблазн понятный: написать симулятор и прогонять им всё подряд.

Не сработает. В счётных задачах входов 21000, а на экзамене за номер дают шесть минут.

Зато симулятор идеален для другого: проверить гипотезу. Ты рассуждением нашёл ответ — а машина подтвердила.


Что нужно хранить

Всего три вещи, ровно как у самой МТ:

  • лента — словарь «позиция → символ», потому что индексы бывают отрицательными;
  • позиция головки — обычное число;
  • состояние — строка.

Программу удобно держать словарём: ключ — пара (состояние, символ), значение — тройка из команды.

Пустой символ в коде пишем как '_': греческая лямбда в исходнике только мешает.

Функция run принимает ленту-строку, стартовую позицию головки и словарь правил, а возвращает две вещи: строку ленты после остановки и число шагов.


Порядок внутри шага — тот же, что в таблице

Сначала записать символ. Потом проверить S. Потом сдвинуть.

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

▶ Запусти и попробуй: смени в словаре dec команду ('q1','1'): ('0','S','q1') на ('0','L','q1') — увидишь, как вычитание превращается в инверсию.



Чем этот код намеренно проще

Здесь нет ни enumerate, ни генераторов, ни collections. Только словарь, цикл и условия.

Так задумано. Симулятор нужен, чтобы ему доверять: чем меньше особых функций, тем легче глазами проверить, что он делает именно то, что написано в таблице.

Короткая запись выигрывает в длине и проигрывает в проверяемости. Для инструмента самопроверки это плохой размен.


Запусти код из блока выше. Что напечатает вторая строка вывода?


В симуляторе строку cells[head] = write переставили после сдвига головки. Что произойдёт?


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


Куда смотреть дальше

  • Демонстрационный вариант ЕГЭ по информатике на сайте ФИПИ — там номер 12 дан в актуальной формулировке с машиной Тьюринга.
  • Открытый банк заданий ФИПИ — раздел с заданиями по исполнителям.
  • Задачи этого номера в банке SilverTests — тег «ЕГЭ-12. Выполнение алгоритмов для исполнителя (МТ)».
Загрузка...
Чтобы оставить комментарий, необходимо авторизоваться
💬
Пока нет комментариев. Будьте первым!
Печать