"Информатика (базовый уровень)", Гейн А.Г., Юнерман Н.А.
Автомат — это формальный исполнитель, который обрабатывает входные сигналы по заранее заданным правилам. Он не выбирает способ действия самостоятельно: результат зависит от текущего состояния и полученного сигнала. После каждого шага автомат может перейти в другое состояние и выполнить действие. Чтобы описать его работу, задают множество состояний, входной алфавит, начальное состояние и правила переходов.
Текст подготовлен нейронной сетью по теме параграфа и не заменяет учебник — важные факты и формулировки сверяйте с ним.
Формальный исполнитель — объект, который выполняет команды строго по заданным правилам и не проявляет самостоятельности. Он не придумывает решение и не меняет алгоритм по своему желанию. Такое понятие нужно, чтобы точно описывать работу устройства или программы.
Автомат — формальный исполнитель, способный менять своё состояние под воздействием входных сигналов или команд. Например, устройство может перейти из режима ожидания в режим работы после нажатия кнопки. Автомат удобен для описания процессов, где дальнейшие действия зависят от уже полученных сигналов.
Состояние автомата — описание его положения в данный момент, от которого зависит дальнейшее поведение. Состояния можно обозначать q₀, q₁, q₂ или любыми другими именами. Они позволяют хранить существенную для работы информацию, не расписывая всю историю событий.
Алфавит — конечное множество входных сигналов или символов, которые может воспринимать автомат. Например, алфавит может состоять из символов 0 и 1: {0, 1}. Он ограничивает набор допустимых команд, поступающих на вход.
У автомата должно быть конечное множество состояний, потому что его работу нужно полностью перечислить и однозначно описать. Для каждого состояния задаются правила реакции на входные сигналы, поэтому бесконечное число вариантов нельзя было бы практически представить в таблице или схеме. Конечность делает поведение автомата проверяемым и позволяет реализовать его в программе или устройстве.
Входной сигнал вызывает переход из текущего состояния в новое согласно заданному правилу. Вместе с переходом может выполняться действие: например, автомат может выдать символ, включить лампу или изменить счётчик. Сначала определяется состояние до сигнала, затем выбирается правило и только после этого фиксируется новое состояние.
Описание автомата включает несколько частей: множество состояний, входной алфавит, начальное состояние и правила переходов. Начальное состояние необходимо, потому что до обработки первого символа автомат уже должен находиться в каком-то положении. Если хотя бы один из этих элементов не задан, последовательность работы может оказаться неоднозначной.
Один и тот же сигнал способен приводить к разным действиям в зависимости от текущего состояния. Например, сигнал 1 в состоянии «ожидание» может запустить процесс, а в состоянии «работа» — остановить его. Поэтому при анализе нельзя смотреть только на очередной символ: нужно одновременно учитывать состояние, в котором автомат его получил.
Работу автомата удобно представить таблицей переходов или схемой. В таблице строки соответствуют состояниям, столбцы — входным сигналам, а клетки содержат новое состояние и, если нужно, действие. На схеме состояния изображают вершинами, а переходы — стрелками с подписями сигналов; начальное состояние отмечают отдельно.
| Элемент или характеристика | Что задаёт | На что влияет |
|---|---|---|
| Множество состояний | Все возможные состояния автомата | Определяет варианты поведения автомата |
| Входной алфавит | Допустимые входные сигналы | Определяет, какие команды или символы может обрабатывать автомат |
| Начальное состояние | Состояние, с которого начинается работа | Определяет исход обработки входной последовательности |
| Правило переходов | Новое состояние после получения сигнала | Задаёт последовательность работы автомата |
| Выходное действие или результат | Результат работы на каждом шаге или после обработки всей последовательности | Позволяет определить, что сделал автомат |
Чтобы воспользоваться таблицей, сначала найдите строку начального состояния. Затем читайте входную последовательность слева направо и каждый раз выбирайте столбец очередного сигнала.
Число в найденной клетке становится текущим состоянием для следующего шага. Если в клетке указано действие или результат, его также записывают.
Автомат имеет состояния q₀ и q₁. Из q₀ по сигналу 0 он переходит в q₁, а по сигналу 1 остаётся в q₀. Из q₁ правила не указаны, поэтому для продолжения нужно считать, что автомат возвращается в q₀ по 1 и остаётся в q₁ по 0. Определим состояние после обработки 1010, начиная с q₀.
Ответ: после обработки последовательности 1010 автомат находится в состоянии q₁. Решение показывает, почему символы нельзя обрабатывать независимо: каждый следующий переход начинается из состояния, полученного на предыдущем шаге.
По таблице переходов нужно построить схему автомата с тремя состояниями и указать путь при обработке слова 01101. Обозначим состояния q₀, q₁ и q₂, а начальным будем считать q₀; стрелку подписываем тем символом, который вызывает переход.
Ответ: схема строится непосредственным переносом всех правил из таблицы, а искомый путь записывается как цепочка из шести состояний: начального и пяти полученных после сигналов. Конкретные вершины цепочки определяются значениями таблицы.
Нужно принимать последовательность, если она заканчивается символом 1, и отвергать её в остальных случаях. Достаточно хранить не всю последовательность, а только информацию о последнем обработанном символе.
Ответ: автомат принимает слово тогда, когда после обработки всех символов находится в q₁. Например, 01101 принимается, а 1100 отвергается, потому что последнее состояние определяется последним символом.
Автомат считают разумным исполнителем. Ошибка возникает из-за привычки приписывать устройствам самостоятельный выбор. Проверьте себя: для каждого шага должно находиться заранее заданное правило, а не объяснение «автомат решил сам».
Состояние путают с входным сигналом. Сигнал поступает извне и вызывает переход, а состояние сохраняется после шага и влияет на следующую реакцию. Чтобы проверить различие, выпишите отдельно входное слово и цепочку состояний.
Забывают начальное состояние. Без него первый переход неизвестен, поэтому итог обработки нельзя определить однозначно. Перед решением всегда отмечайте, из какого состояния начинается работа.
Не задают переход для допустимого сигнала. Тогда автомат может остановиться или его поведение окажется неописанным. Проверьте каждую строку таблицы: для каждого символа входного алфавита должно быть указано правило либо специальное условие.
Для изучения автоматов нужны понятия алгоритма, исполнителя, команды, последовательности команд и условного выбора. Дальше эта тема помогает понимать алгоритмы, логические схемы, языки программирования и моделирование процессов. Автоматическая обработка строк и распознавание последовательностей основаны на переходах между состояниями.
Чем автомат отличается от обычного исполнителя?
Автомат — это разновидность формального исполнителя, работа которого описывается состояниями и переходами между ними. Он не рассуждает и не выбирает действие, а точно выполняет правило для текущего состояния и входного сигнала.
Зачем автомату нужны состояния?
Состояние хранит информацию о том, что уже произошло и как автомат должен действовать дальше. Благодаря состояниям один и тот же сигнал может обрабатываться по-разному.
Может ли один и тот же сигнал перевести автомат в разные состояния?
Да, если автомат находится в разных состояниях. Переход определяется не только сигналом, но и парой «текущее состояние — входной сигнал».
Как по таблице переходов определить результат работы автомата?
Нужно начать с начального состояния и последовательно прочитать символы входной последовательности. Для каждого символа находят строку текущего состояния и соответствующий столбец, затем переходят в указанное состояние.
Что произойдёт, если для некоторого сигнала переход не задан?
Работу автомата нельзя однозначно продолжить: правило поведения в такой ситуации отсутствует. В полном описании указывают переход для каждого допустимого сигнала или заранее объясняют, что происходит при его отсутствии.
§ 8. Формальный исполнитель: автомат