Задание 12: Формальные исполнители. Машина Тьюринга
- Тема: Формальные исполнители. Машина Тьюринга (Редактор, Робот, Чертёжник, МТ).
- Ответ: строка или число.
- Балл: 1. Время: 6 мин. Сложность: повышенный.
Общая информация
Задание 12 проверяет умение выполнять алгоритмы для различных формальных исполнителей.
Задания: N12.Машина Тьюринга
Типы исполнителей
1. Редактор
Работает с буквенно-цифровыми последовательностями (строками).
2. Робот
Работает с шахматным полем или сеткой. Может перемещаться по клеткам и выполнять действия.
3. Чертёжник
Применяет алгоритмы на координатной плоскости. Похож на Черепаху, но с другими командами.
4. Машина Тьюринга (МТ)
Работает с лентой, считывает и записывает символы, перемещается по ленте.
Исполнитель «Редактор»
Основные команды
Заменить (v, w)
- Заменяет первое левое вхождение строки v на последовательность w
- Если вхождения нет, строка не меняется
- Поиск идёт слева направо
Обнаружено (v)
- Проверяет наличие подстроки v в строке
- Возвращает "правда" или "ложь"
- Строка остаётся неизменной
Дополнительные команды (могут встречаться)
- Удалить (v) - удаляет первое вхождение v
- Вставить (v, позиция) - вставляет v в указанную позицию
- Найти (v) - возвращает позицию первого вхождения v
Алгоритм решения
Шаг 1: Анализ задачи
- Определить тип исполнителя (Редактор, Робот, Чертёжник, МТ)
- Выписать все команды и их описание
- Зафиксировать начальное состояние (исходная строка, позиция и т.д.)
Шаг 2: Выполнение алгоритма
Составить таблицу трассировки:
Шаг Команда Состояние строки Примечание 0 - Исходная строка Начальное состояние 1 Заменить(...) Новая строка Результат замены 2 Обнаружено(...) Та же строка Проверка условия ... ... ... ... Выполнять команды строго по порядку:
- После каждой команды фиксировать новое состояние
- Учитывать условия (если есть)
- Выполнять циклы полностью
Особое внимание:
- Команда "Заменить" ищет первое левое вхождение
- После замены поиск следующего вхождения начинается с начала строки (или с позиции после замены, в зависимости от формулировки)
- Условия проверяются перед выполнением зависящих от них команд
Шаг 3: Проверка результата
- Проверить выполнение всех команд
- Проверить правильность замен - убедиться, что заменено первое вхождение
- Записать ответ в требуемом формате
Пример решения (Редактор)
Задача: Исполнитель Редактор получает на вход строку и выполняет следующий алгоритм:
НАЧАЛО
ПОКА нашлось (111)
заменить (111, 2)
заменить (222, 1)
КОНЕЦ ПОКА
КОНЕЦ
Определите, какая строка получится в результате применения этого алгоритма к строке, состоящей из 100 единиц.
Решение:
Начальное состояние: строка из 100 единиц:
111...1(100 раз)Трассировка:
- Шаг 1: Найдено "111" → заменяем на "2":
2+111...1(97 единиц) - Шаг 2: Найдено "111" → заменяем на "2":
22+111...1(94 единицы) - Шаг 3: Найдено "111" → заменяем на "2":
222+111...1(91 единица) - Шаг 4: Найдено "222" → заменяем на "1":
1+111...1(91 единица) - Шаг 5: Найдено "111" → заменяем на "2":
12+111...1(88 единиц) - ... (процесс продолжается)
- Шаг 1: Найдено "111" → заменяем на "2":
Анализ:
- Каждые 3 единицы заменяются на "2"
- "222" заменяется на "1"
- Процесс цикличен: 111 → 2, 222 → 1
Результат: После всех замен останется строка, которая зависит от остатка от деления 100 на 3.
Ответ: (требуется полный расчёт)
Особенности работы с Редактором
Поиск вхождений
- "Первое левое вхождение" означает, что поиск идёт слева направо
- После замены поиск может начинаться:
- С начала строки (в большинстве задач)
- С позиции после замены (уточняется в условии)
Циклы
- ПОКА условие - выполняется, пока условие истинно
- ПОВТОРИ n раз - выполняется ровно n раз
- Важно отслеживать, когда условие цикла становится ложным
Условия
- ЕСЛИ условие ТО команды - выполняется только при истинном условии
- ЕСЛИ условие ТО ... ИНАЧЕ ... - выбор между двумя вариантами
Типичные ошибки
- Неправильный поиск вхождений - нужно искать первое левое вхождение, а не все
- Ошибки в циклах - не учитывается момент выхода из цикла
- Пропуск шагов - не все команды выполняются
- Неправильная интерпретация команд - важно внимательно читать описание
- Ошибки при множественных заменах - нужно отслеживать все изменения строки
Полезные советы
- Составляйте таблицу трассировки - это помогает не пропустить шаги
- Внимательно читайте описание команд - особенно про поиск вхождений
- Отслеживайте циклы - фиксируйте состояние после каждой итерации
- Проверяйте условия - перед выполнением зависящих команд проверяйте условие
- Используйте обратный ход - если нужно восстановить исходные данные
- Проверяйте результат - выполняйте алгоритм повторно для проверки
Остальные исполнители - подробно
1) Робот
Исполнитель Робот работает в клетчатом поле/лабиринте. Обычно требуется довести Робота до клетки, закрасить нужные клетки или проанализировать работу алгоритма.
Таблица команд Робота
| Тип | Команда | Что делает |
|---|---|---|
| Движение | вверх |
Переход на 1 клетку вверх |
| Движение | вниз |
Переход на 1 клетку вниз |
| Движение | влево |
Переход на 1 клетку влево |
| Движение | вправо |
Переход на 1 клетку вправо |
| Условие | сверху свободно |
Нет стены сверху |
| Условие | снизу свободно |
Нет стены снизу |
| Условие | слева свободно |
Нет стены слева |
| Условие | справа свободно |
Нет стены справа |
| Действие (в ряде задач) | закрасить |
Закрашивает текущую клетку |
Алгоритм решения задач на Робота
- Перепишите стартовую позицию Робота и направление (если задано).
- Выпишите команды и условия цикла (
ПОКА,ЕСЛИ). - Выполняйте команды пошагово в таблице трассировки: шаг, клетка, проверка условия, действие.
- Каждый раз проверяйте, не идёт ли команда движения в стену.
- В конце запишите позицию/число закрашенных клеток/полученный маршрут (что спрашивает задача).
Шаблон таблицы:
| Шаг | Позиция | Условие | Команда | Результат |
|---|---|---|---|---|
| 0 | (x0, y0) | - | - | старт |
| 1 | ... | справа свободно? | вправо | ... |
2) Чертёжник
Чертёжник работает на координатной плоскости. Основная идея: каждая команда добавляет вектор смещения к текущей точке.
Таблица команд Чертёжника
| Команда | Что делает | Пример |
|---|---|---|
Сместиться на (a, b) |
Переход из (x, y) в (x + a, y + b) |
(4, 2) + (2, -3) -> (6, -1) |
Повтори k [ ... ] |
Повторяет блок команд k раз |
Повтори 3 [Сместиться на (1, 0)] |
Поднять перо (если есть) |
Перемещение без рисования | Разрыв линии |
Опустить перо (если есть) |
Включение рисования | Возобновление линии |
Алгоритм решения задач на Чертёжника
- Выпишите все векторы смещения из условия.
- Для каждого блока
Повтори kпосчитайте суммарный вектор блока и умножьте наk. - Сложите все смещения по
xи поyотдельно. - Если по условию возврат в стартовую точку, составьте систему:
- сумма по
x= 0 - сумма по
y= 0
- сумма по
- Найдите неизвестные параметры (
n,a,b) и подставьте в ответ.
Шаблон таблицы:
| Блок | Δx | Δy | Кол-во повторов | Вклад в сумму |
|---|---|---|---|---|
Сместиться на (a, b) |
a | b | 1 | (a, b) |
Повтори k [...] |
dx | dy | k | (k*dx, k*dy) |
3) Машина Тьюринга
Машина Тьюринга (МТ) работает с лентой из ячеек. На каждом шаге выбирается команда по паре (текущее состояние, текущий символ).
Таблица команд МТ
| Элемент команды | Обозначение | Что означает | Пример |
|---|---|---|---|
| Запись символа | 0, 1, 2, #, λ и т.д. |
Что записать в текущую ячейку | 1, R, q2 |
| Сдвиг вправо | R (иногда >) |
Перейти на одну ячейку вправо | 0, R, q3 |
| Сдвиг влево | L (иногда <) |
Перейти на одну ячейку влево | 1, L, q1 |
| Без сдвига | N (иногда .) |
Остаться в той же ячейке | 0, N, q4 |
| Останов | S / H / ! |
Завершить работу алгоритма | 1, S, q0 |
| Переход в состояние | qk |
Следующее состояние головки | 0, R, q5 |
Примечание: в разных сборниках обозначения могут отличаться, но логика одинаковая.
Алгоритм решения задач на МТ
- Запишите начальную ленту, позицию головки и начальное состояние.
- На каждом шаге ищите в таблице команд нужную ячейку:
- строка - текущее состояние;
- столбец - текущий символ.
- Выполняйте команду в фиксированном порядке:
- записать символ;
- сдвинуть головку;
- перейти в новое состояние.
- Ведите трассировку до команды останова.
- Снимите ответ: итоговая лента, позиция головки или нужный фрагмент (по условию).
Шаблон таблицы трассировки:
| Шаг | Состояние | Позиция | Символ под головкой | Команда | Фрагмент ленты |
|---|---|---|---|---|---|
| 0 | q1 |
0 | 1 |
- | ... 0 [1] 0 ... |
| 1 | q2 |
1 | 0 |
1, R, q2 |
... 0 1 [0] ... |
| 2 | q3 |
0 | 1 |
0, L, q3 |
... [0] 1 0 ... |
Составлено: Лилия С.
Источники: КИМ ЕГЭ 2026, открытый банк ФИПИ, спецификация ЕГЭ по информатике
Удачи на экзамене! 🎓