Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
[01] Соколов В.А. Формальные языки и грамматики....doc
Скачиваний:
96
Добавлен:
29.10.2018
Размер:
1.44 Mб
Скачать

Детерминированные конечные автоматы (распознаватели)

Рассмотрим самый простой случай, когда у автомата отсутствует дополнительная временная память, устройство управления может находиться в одном из конечного множества состояний, а реакция на входную строку выражается ответами «да» или «нет».

Определение 2.2.

Детерминированный конечный автомат (распознаватель), или сокращенно ДКА, – это пятерка

M = (Q, , , q0, F),

где:

Q – конечное множество внутренних состояний;

 – конечное множество символов, называемое входным алфавитом;

: Q    Q – всюду определенная функция, называемая функцией переходов;

q0Q начальное состояние;

FQ – множество заключительных состояний.

В дальнейшем под ДКА мы будем понимать только детерминированный конечный распознаватель. ДКА функционирует следующим образом. В начальный момент времени, находясь в состоянии q0, он с помощью читающей головки обозревает самый левый символ входной строки. Головка читает строку слева направо, без возвратов, сдвигаясь вправо на один символ за каждый шаг работы автомата. В соответствии с заданной функцией переходов автомат изменяет свои внутренние состояния в процессе чтения входной строки. Прочитав ее до конца, автомат оказывается либо в одном из заключительных состояний (и в этом случае строка будет допущена или распознана автоматом), либо в каком-то другом, не заключительном (и в этом случае строка отвергается).

Для наглядного представления функционирования автомата используются диаграммы переходов. Это ориентированные конечные графы, в которых вершины соответствуют внутренним состояниям автомата (и помечаются соответствующими символами).

Если M = (Q, , , q0, F) – ДКА, тогда его диаграмма переходов – это граф DM, имеющий ровно |Q| вершин, каждая из которых помечена некоторым qiQ. Для каждого правила перехода (qi, a) = qj в DM существует дуга (qi, qj), помеченная символом a. Вершина, помеченная q0, называется начальной, а те вершины, метки которых qf  F, называются финальными (или заключительными). Финальные вершины будем изображать квадратиками, а нефинальные - кружочками.

Нетрудно видеть, что определения ДКА с помощью пятерки (Q, , , q0, F) и посредством диаграммы переходов DM равносильны.

Полезно ввести обобщенную функцию переходов

*: Q  *  Q.

Вторым аргументом у * является не отдельный символ, а целая строка, а значение функции указывает на то внутреннее состояние, в котором окажется автомат после серии переходов в результате чтения этой строки.

Пример 2.3.

Рассмотрим ДКА

M = ({q0, q1, q2}, {a, b}, , q0, {q1}),

где (q0, a) = q0 , (q0, b) = q1,

(q1, a) = q0 , (q1, b) = q2,

(q2, a) = q2 , (q2, b) = q1.

Ему соответствует диаграмма DM:

a a

a b

q0 q­1 q2

b b

Этот автомат распознает строки ab, bab, abbb, bbaab, но отвергает baa или bbaa.

В заключение дадим рекурсивное определение функции *: *(q, ) = q,

*(q, a) = (*(q, ), a) для всех qQ,   *, a  .