Задание 12:
исполнитель МТ

Машина Тьюринга: лента из клеток, головка, таблица команд.
Решаем разбором таблицы: подписываем, что делает каждое состояние, прогоняем ленту на коротком числе — и видим правило.

Базовый уровень, один балл. Ответ — одно целое число в десятичной записи.

условие

Как это выглядит на экзамене

На ленте в соседних ячейках записано двоичное представление числа 1000 без ведущих нулей, вокруг — пустые ячейки «λ». Головка стоит в ближайшей ячейке справа от числа.

λ01
q0λ, L, q1
q11, L, q20, L, q11, L, q1
q2λ, S, q2

Определите результат. Ответ — в десятичной системе.

По форме демоверсии 2027, числа свои.

Что дано

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

Где теряют балл

Перепутали столбцы 0 и 1 (их порядок в шапке бывает разный), начали не с той стороны, сдали двоичную запись вместо десятичной.

таблица

Как читать команду

код

  1. 1 — записать в текущую клетку 1 (может совпасть с тем, что там было);
  2. L — шаг влево, R — вправо, S — остановка после записи;
  3. q2 — новое состояние.

Работа начинается в q0. Пустая клетка «λ» — тоже символ: команда в её столбце срабатывает за краем числа.

Порядок столбцов

Бывает λ, 0, 1, бывает λ, 1, 0 — в задачах экзаменов встречаются оба. Каждый раз смотри в шапку.

Пустая клетка в таблице — пара «состояние — символ», которая не встречается.

прогон

Лента по шагам: прибавить 1

λ01
q0λ, L, q1
q11, R, q21, R, q20, L, q1
q2λ, S, q20, R, q21, R, q2

Число 11 = 10112, головка справа. Рамка — головка, жёлтым — изменённые клетки.

начало, q0λ1011λ
q1λ1011λ
q1λ1010λ
q1λ1000λ
q2λ1100λ
стопλ1100λ

1011 → 1100: 11 → 12. Состояние q1 единицы справа делает нулями, первый 0 — единицей. Это и есть «+1».

приём

Подпиши каждое состояние

В строкеЧто делает состояние
код и код, само в себяидёт влево до края числа, ничего не меняя
код и код, само в себяинверсия: каждая цифра меняется на противоположную
код в себя · код дальшеприбавляет 1
код в себя · код дальшевычитает 1
коддописывает 1 за краем числа
кодстирает цифру

Подписал все строки — прогони на коротком числе (пять-шесть цифр): правило станет видно. Потом примени его к числу из условия.

формулы

Что бывает с числом

x — исходное число, n — сколько у него двоичных цифр.

ПрограммаРезультатПример: x = 1000, n = 10
дописала справа код (k цифр s)x · 4 + 3 (x · 2k + s)4003
дописала слева кодx + 2n1000 + 1024 = 2024
дописала слева кодx + 2n+11000 + 2048 = 3048
+1, потом дописала 1(x + 1) · 2 + 12003
инверсия всех цифр2n − 1 − x1023 − 1000 = 23
стёрла последнюю цифруx // 2500

Формула — для проверки: правило читается из таблицы, а прогон ленты работает и там, где формулы нет.

стереть и поправить

Стирание и правка внутри числа

Стереть справа

Головка доходит до последней цифры и пишет λ — клетка становится пустой. Бывает с условием: стёрла последнюю, следующую стирает, только если там 0.

1097 = 10001001001 → стёрта 1 → последний 0 тоже стёрт → 100010010 = 274.

Правка в начале

Головка уходит к началу числа, делает шаг вправо — на первую цифру — и меняет одну цифру: первую 1 на «10», вторую слева 1 на 0, первый 0 на 1.

800 = 1100100000, вторая 1 → 0: 1000100000 = 544.

автомат

Состояния по кругу

Бывает программа, где 2–3 состояния по очереди переписывают каждую клетку и идут в одну сторону. Тогда — таблица хода: клетка, что было, в каком состоянии головка, что стало.

клетка1234567…
было1111111…
состояниеq1q2q3q2q3q2q3…
стало1010101…

После первой клетки повторяется блок из двух клеток «01». На ряду из 57 единиц: 1 клетка + 28 блоков. Нулей: 28 · 1 = 28.

Ряд из двух частей (сначала нули, потом единицы) считаем по частям: вторая часть начинается в том состоянии, где кончилась первая.

обратная задача

Какое число было

Дан результат — найти исходное. Пойми правило и сними действия в обратном порядке: убрать дописанные цифры, отменить инверсию или «+1».

Программа дописала 1 слева и 111 справа; результат 3655 = 111001000111. Снимаем: 11001000 = 200.

Инверсия теряет длину

1001 и 01001 после инверсии дают одно и то же число: впереди нули не видны. Исходных чисел много — с 4, 5, 6 … цифрами. Поэтому спрашивают наименьшее или наибольшее, меньшее N.

демо 2026

Сколько нулей могло быть

Лента из L цифр, неизвестных. Программа «−1» идёт справа: нули хвоста становятся единицами, ближайшая 1 — нулём, стоп.

былокодхвост — t нулей, A не меняется
сталокод

Пусть в A ровно z нулей. Нулей было z + t, стало z + 1. Если стало ровно 343, то z = 342, а нулей было 342 + t — чем длиннее хвост, тем больше. Хвост ограничен длиной: в A должно поместиться 342 нуля.

Перебрать ленты программой нельзя — их 2L. Только рассуждением.

второй способ

Программой: выполнить таблицу

код

Как устроена

Лента — строка с запасом пустых клеток, состояние — число. Одна строка код — одна клетка таблицы. Головка слева — код.

Когда полезна

Проверить себя; обратная задача — обернуть в код и перебрать код. На экзамене таблица маленькая, и разбор руками быстрее: программа — по желанию.

ловушки

Пять ловушек

  1. Шапка таблицы. Столбцы 0 и 1 стоят в разном порядке.
  2. Где головка. Слева или справа от числа — с этого края она и начнёт.
  3. Пустая клетка — символ. Команды в столбце λ работают за краем числа: там дописывают.
  4. Ответ в десятичной. Двоичную запись с ленты переведи.
  5. Ведущие нули. После инверсии или «−1» число может начинаться с нуля — на значение это не влияет.

Страница практикума узнаёт эти ошибки по ответу и называет, где именно сломалось.

практикум

Что дальше

Десять задач — по одной на каждую форму, все на экране сразу, порядок свой. Ошибся — появится разбор: что делает каждое состояние и лента по шагам, а кнопка «Новые числа» даст такую же задачу с другими числами.

Что станет с числомдописать справа · дописать слева · ±1 · инверсия · стереть справа · правка в начале · автомат
Посчитать цифрысколько нулей или единиц после программы
Назадкакое число было · сколько нулей могло быть

Исправленное не в зачёт: задача, решённая после разбора, закрыта, но в отметку идёт новая — по кнопке «Новые числа». Добрать можно хоть до пятёрки: 10 — «5», 9 — «4», 8 — «3».

дома

Домашняя работа

Те же десять форм, по одной задаче на каждую. Тип закрывается чистым верным ответом; ошибся — придёт такая же задача с другими числами.

Как сдать

От восьми закрытых типов появится код работы вида код и кнопка «Сдать работу».

Вторая кнопка открывает письмо: к коду прикладываются снимки черновика — подписанные состояния и лента до и после.

Зачем снимок

Число можно получить и не разобравшись. Черновик показывает, что приём ваш, — поэтому он и просится вместе с ответом.

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

Материалы подготовлены с использованием технологий искусственного интеллекта. Пробел раскрыть и дальше · ← → слайды