РУҚА
Тапсырма № 12 · ЕГЭ

Обработка слова конечным автоматом

Как по символам слова проследить путь автомата и определить результат обработки
6 мин чтенияҚиындық: Обновлено 29 қыркүйек 2026

Конечный автомат обрабатывает слово слева направо: читает очередной символ, по таблице переходов выбирает новое состояние и продолжает работу до конца слова. Чтобы решить задачу, нужно правильно задать начальное состояние, выполнить все переходы и проверить, в каком состоянии автомат оказался после последнего символа.

Модель обработки слова

Слово — это конечная последовательность символов некоторого алфавита, например \(abba\) немесе \(10110\). Автомат имеет конечное множество состояний. Одно состояние является начальным, а некоторые состояния могут быть заключительными. Правило перехода задаётся таблицей переходов: для каждой пары «текущее состояние — прочитанный символ» указано следующее состояние.

D
Конечный автомат

Конечный автомат — это устройство, которое имеет состояния, читает символы слова по одному и после каждого символа переходит в состояние, определённое правилом переходов. В детерминированном автомате для каждой пары состояния и символа задан ровно один переход.

Обработка начинается в начальном состоянии. Если слово имеет \(n\) символов, автомат выполняет ровно \(n\) переходов, если переход для каждого символа существует. Состояние, в котором автомат находится после чтения всего слова, называют конечным состоянием обработки. Не следует путать его с заключительным состоянием: заключительность важна только тогда, когда требуется определить, принимает ли автомат слово.

\[q_0 \xrightarrow{a_1} q_1 \xrightarrow{a_2} q_2 \xrightarrow{a_3} \dots \xrightarrow{a_n} q_n\]

Здесь \(q_0\) — начальное состояние, \(a_1,a_2,\dots,a_n\) — символы слова, а \(q_n\) — состояние после обработки слова. В компактной жазбалар переход обозначают так: \(q_{i+1}=\delta(q_i,a_{i+1})\), где \(\delta\) — функция переходов.

Алгоритм пошаговой обработки

Для ручного решения удобно составить цепочку состояний или таблицу трассировки. Такая запись защищает от пропуска символов и помогает проверить каждый переход.

  1. Запишите начальное состояние автомата \(q_0\).
  2. Запишите символы слова слева направо, не меняя их порядок.
  3. Для очередного символа найдите строку текущего состояния и столбец этого символа в таблице переходов.
  4. Перейдите в указанное состояние и запишите его.
  5. Повторяйте действия, пока все символы не будут обработаны.
  6. Используйте последнее состояние для ответа: например, назовите его или проверьте, является ли оно заключительным.
ШагПрочитанный символСостояние до переходаСостояние после перехода
0—\(q_0\)—
1\(a_1\)\(q_0\)\(q_1\)
2\(a_2\)\(q_1\)\(q_2\)
\(n\)\(a_n\)\(q_{n-1}\)\(q_n\)
T
Правило количества қадам

При обработке слова длины \(n\) автомат читает ровно \(n\) символов и выполняет ровно \(n\) переходов. После \(k\) қадам обработаны первые \(k\) символов слова, а текущее состояние равно \(q_k\).

Это правило полезно для самопроверки. Если в слове пять символов, в цепочке должно быть шесть состояний вместе с начальным: \(q_0,q_1,q_2,q_3,q_4,q_5\). Повторение состояния допустимо: автомат может несколько раз возвращаться в одно и то же состояние.

Разобранный пример

Пусть автомат имеет состояния \(A\), \(B\), \(C\) и начальное состояние \(A\). Кесте переходов такова:

СостояниеСимвол 0Символ 1
\(A\)\(B\)\(A\)
\(B\)\(C\)\(A\)
\(C\)\(C\)\(B\)

Требуется определить состояние автомата после обработки слова \(101001\).

Показать Шешім Разбор
1
До чтения слова автомат находится в начальном состоянии \(A\).
\(\displaystyle q_0=A\)
2
Первый символ — \(1\). В строке \(A\) и столбце \(1\) стоит \(A\).
\(\displaystyle q_1=\delta(A,1)=A\)
3
Второй символ — \(0\). Из \(A\) по символу \(0\) переходим в \(B\).
\(\displaystyle q_2=\delta(A,0)=B\)
4
Третий символ — \(1\). Из \(B\) по символу \(1\) переходим в \(A\).
\(\displaystyle q_3=\delta(B,1)=A\)
5
Четвёртый символ — \(0\). Из \(A\) по символу \(0\) переходим в \(B\).
\(\displaystyle q_4=\delta(A,0)=B\)
6
Пятый символ — \(0\). Из \(B\) по символу \(0\) переходим в \(C\).
\(\displaystyle q_5=\delta(B,0)=C\)
7
Шестой символ — \(1\). Из \(C\) по символу \(1\) переходим в \(B\).
\(\displaystyle q_6=\delta(C,1)=B\)
№
Жауап

После обработки слова \(101001\) автомат находится в состоянии \(B\). В цепочке есть семь состояний \(A,A,B,A,B,C,B\): первое состояние начальное, остальные соответствуют алты прочитанным символам.

Если в условии дополнительно сказано, что заключительными являются, например, состояния \(B\) и \(C\), то слово принимается. Если заключительным является только \(C\), слово не принимается, хотя обработка всё равно заканчивается в состоянии \(B\).

Микро-проверка

Слово содержит 4 символа. Сколько состояний нужно записать в полной трассировке, включая начальное?

Что именно спрашивают в тапсырмаларда

В задачах встречаются несколько близких формулировок. Сначала определите, что требуется найти, и только потом выполняйте трассировку.

  • «В каком состоянии окажется автомат?» — нужен последний элемент цепочки.
  • «Какое слово обработано?» — по известным переходам или цепочке состояний восстанавливают символы.
  • «Принимает ли автомат слово?» — после обработки нужно сравнить последнее состояние с множеством заключительных состояний.
  • «Сколько слов приводит в состояние...» — может потребоваться полный перебор всех слов заданной длины.
  • «Сколько переходов выполнено?» — обычно ответ равен длине слова, если обработка не прерывается.

В задачах на перебор важно различать длину слова и число возможных слов. Если алфавит содержит \(m\) символов, количество слов длины \(n\) равно \(m^n\), когда повторения разрешены. Но для обработки каждого конкретного слова достаточно линейного числа действий: один переход на один символ. Это связано с классами сложности алгоритмов.

\[T(n)=n=O(n)\]
Приём для длинного слова

Разбивайте слово на группы по несколько символов и после каждой группы фиксируйте состояние. Например, для \(0111011001\) можно записать переходы после первых 3, 6 и 9 символов, а затем обработать остаток. Группировка не меняет порядок символов.

Частые ошибки

!
Ошибки при обработке

1. Начинают не с начального состояния, а с первой строки таблицы или с первого встретившегося состояния. 2. Читают слово справа налево. 3. Используют столбец предыдущего символа вместо текущего. 4. Пропускают переход при повторяющемся символе. 5. Считают заключительным последнее состояние автоматически, не сверяясь с условием. 6. Путают номер шага с номером символа: начальное состояние имеет номер \(0\), а после первого символа получается состояние с номером \(1\).

Запомнить

На каждом шаге задавайте себе два вопроса: «В каком состоянии я сейчас?» и «Какой символ читаю сейчас?». Только эта пара определяет следующий переход.

Самопроверка и итог

Q
Жылдам тест по теме

Проверь себя

~ 2 мин4 вопроса
Вопрос 1 / 4
Вопрос 1 из 4 · число переходов
Автомат начал в состоянии \(q_0\) и обработал слово длины 7. Как обозначается состояние после обработки?
Главное за минуту

Главное

  • Обработка слова идёт слева направо, по одному символу за шаг.
  • Начинайте с начального состояния и для каждого символа находите переход по паре «текущее состояние — символ».
  • Для слова длины \(n\) выполняется \(n\) переходов и записывается \(n+1\) состояний вместе с начальным.
  • Ответом обычно является последнее состояние; принятие слова проверяют отдельно по множеству заключительных состояний.
  • Полная трассировка состояний помогает не пропустить символ и обнаружить ошибку в таблице переходов.