Программа машины одна для всех задач
Исполнитель — головка, движущаяся по бесконечной ленте. В каждой ячейке —
символ 0, 1 или пустой символ λ.
Команда имеет вид новый_символ, движение, новое_состояние.
Начальное состояние — q0. Головка стартует в ближайшей пустой ячейке справа от исходной строки.
Разобраться с нуля 5 шагов
Этот блок лучше пройти перед генератором. Он объясняет идею не через готовую формулу, а через короткие строки.
Мини-тренажёр: хвост нулей ключ к задаче
Хвост нулей — это нули, которые стоят подряд в самом конце строки. Например, у строки
101000 хвост 000, значит t = 3. Если строка заканчивается единицей,
то t = 0.
Как думать в таких задачах
1000→0111хвост 000 исчез, единица стала нулём
10110→10101последний 0 стал 1, предыдущая 1 стала 0
1111→1110хвоста нулей нет, меняется последняя 1
0000→1111особый случай: строка вся из нулей
- Сначала смотрим на правый конец строки.
- Обозначаем через
tколичество нулей на самом конце. - Если в строке есть единица, машина превращает
u 1 0tвu 0 1t. - Поэтому из числа нулей исчезают
tхвостовых нулей, но появляется один новый ноль. - Получаем формулу K = Z − t + 1, где
Z— нули до работы,K— нули после. - Для минимума берём самый маленький хвост:
t = 0, поэтомуZ = K − 1. - Для максимума оставляем в исходной строке всего одну единицу, поэтому
Z = N − 1. - Случай
K = 0разбирается отдельно: исходная строка могла быть вся из нулей, значитZ = N.
Теория
- Лента — бесконечная последовательность ячеек, по одному символу в каждой.
- Головка — устройство, которое читает символ текущей ячейки и записывает новый.
- Состояние — внутренний режим головки. В этой программе есть
q0иq1. - λ — пустой символ.
L— влево,R— вправо,N— стоять,S— остановиться после команды.- Строки таблицы — состояния, столбцы — символы под головкой. На пересечении написано действие.
Генератор задач
Случайные N от 50 до 2000 и корректное K от 0 до N.
Чаще выбирается K > 0, чтобы задача не сводилась к особому случаю.
Готовые примеры
Три задачи из исходных материалов. Их можно загрузить в текущую задачу.
Ручной режим
Задайте свои N и K и выберите, что искать. Дробные значения не принимаются.
Текущая задача
Задача ещё не выбрана. Сгенерируйте новую, загрузите готовую или задайте параметры вручную.
Симулятор машины Тьюринга
Введите короткую двоичную строку. Кнопка «Один шаг» теперь сразу выполняет первый переход, даже если симуляция ещё не была запущена.
Для разработчика: автотесты функции решения и симулятора
Этот блок спрятан, чтобы не мешать ученику. Его можно открыть для проверки кода.