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

Языки и детерминированные конечные автоматы

Дадим теперь строгое определение языка, связанного с конкретным ДКА.

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

Язык, допустимый ДКА M = (Q,,,q0,F), – это множество всех строк из *, допустимых автоматом М, т.е. L(M) = { |   * и *(q0, )  F}.

Так как функции  и * являются всюду определенными и каждый шаг работы автомата определяется единственным образом, то любая строка   * после прочтения ее либо допускается (распознается) автоматом, либо отвергается им. Отсюда следует, что

= { |   * и *(q0, )  F}.

Пример 2.5.

a a, b

q0 b q­1 a, b q2

Этой диаграмме соответствует ДКА, допускающий язык L = {anb| n  0}.

Теорема 2.6.

Пусть M = (Q, , , q0, F) – детерминированный конечный авто-мат (распознаватель) и пусть DM – соответствующая диаграмма пе-реходов. В этом случае для любых qi, qj Q и    + *(qi, ) = qj тогда и только тогда, когда в DM существует путь, помеченный последовательностью символов , из вершины qi в вершину qj.

Доказательство.

Проведем его индукцией по длине строки .

Пусть || = 1, т.е.  = а для некоторого  . Тогда *(qi­, α) = (qi, а) = qj, по определению, соответствует дуге (qi, qj), помеченной а, в DM. Допустим, что для всех  таких, что ||  n, утверждение верно. Пусть || = n + 1, и пусть *(qi, ) = qj. Можно положить  = а, где || = n. Тогда для некоторого qk

*(qi, ) = qk и *(qi­, ) = (qk­, a) = qj.

По предположению, равенство *(qi, ) = qk эквивалентно существованию пути в DM из qi в qk, помеченному . Кроме того, соотношение *(qk, a) = qj эквивалентно существованию дуги (qk, qj) с меткой а, что дает нам в DM путь из qi в qj, проходящий через вершину qk и помеченный строкой a, который соответствует соотношению *(q, ) = qj. Теорема доказана.

Функция  может быть задана таблицей:

a1

a2

...

ak

...

an

q0

q1

.

.

.

qi

qj

.

.

.

qm

Здесь на пересечении i-й строки и k-го столбца находится qj тогда и только тогда, когда (qi, ak) = qj.

Если функция  не всюду определенная, то ее можно доопределить так, что соответствующий автомату язык не изменится.

Для любой пары (q, a), для которой (q, a) не определено, положим (q, a) = , где   Q  . Кроме того, для любого а   положим (, a) = .

При этом функция  становится всюду определенной. Так как   Q, то   F, а отсюда следует, что для любой строки   *   L(M) тогда и только тогда, когда в модифицированном ДКА М *(q0, )  F, что означает, что   L(M). Следовательно, L(M) = L(M).

Пример 2.7.

b a, b

a

q0 q1

b a a b

q2 q3 q4

a b

b a

У приведенного на диаграмме автомата функция переходов не является всюду определенной. Вводя новое состояние , являющееся «ловушкой», мы доопределяем эту функцию (достройка диаграммы показана штрихами).

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

Язык L называется автоматным, если существует ДКА М такой, что L = L(M).

Таким образом, семейство всех ДКА определяет класс автоматных языков.