Конечный автомат
Конечный автомат — это математическая модель, которая последовательно читает входные символы и изменяет своё состояние по заданным правилам. После обработки всего входа автомат сообщает результат, например принимает слово или отвергает его.
Как устроен автомат
Работу автомата можно рассматривать как выполнение алгоритма: входное слово обрабатывается слева направо, по одному символу. Важна только текущая информация, сохранённая в состоянии; все ранее прочитанные символы учитываются через него.
- Состояния — возможные положения автомата.
- Начальное состояние — состояние, с которого начинается обработка.
- Переходы — правила изменения состояния по входному символу.
- Заключительные состояния — состояния, по которым определяется принятие слова.
Для каждого шага используется переход между состояниями. Его удобно записывать в таблице переходов. В простейшем, детерминированном автомате для каждой пары «состояние и символ» задано ровно одно следующее состояние.
Формальное описание
Здесь \(Q\) — конечное множество состояний, \(\Sigma\) — входной алфавит, \(\delta\) — функция переходов, \(q_0\) — начальное состояние, а \(F\) — множество заключительных состояний. Если после чтения всего слова автомат оказался в состоянии из \(F\), слово считается принятым согласно условию принятия слова автоматом.
Автомат проверяет, оканчивается ли двоичное слово символом 1. Ему достаточно двух состояний: «последний символ — 0» и «последний символ — 1». После чтения каждого символа автомат переходит в соответствующее состояние. Если конечным сделать состояние «последний символ — 1», слова 101 и 1 принимаются, а 100 — нет.
Что хранит состояние конечного автомата во время обработки слова?
Конечный автомат — это не конкретная программа и не бэктрекинг. Автомат заранее описывается состояниями и переходами и обычно обрабатывает вход последовательно, без возврата к предыдущим шагам.
Главное
- Конечный автомат имеет конечное число состояний и правила переходов по входным символам.
- Результат определяется состоянием после чтения всего входного слова.
- Формальная жазба автомата: \(A=(Q,\Sigma,\delta,q_0,F)\); переходы удобно задавать таблицей.