Пример 1. Рассмотрим язык L, состоящий из всех слов в алфавите Σ = {a, b}, которые начинаются на aa и содержат нечетное число символов b

Рассмотрим язык L, состоящий из всех слов в алфавите Σ = {a, b}, которые начинаются на aa и содержат нечетное число символов b.

Для выделения слов, начинающихся на aa создадим начальное состояние q0, которое первый символ a будет переводить в состояние q1, а второй символ a будет переводить q1 в состояние q2. Ясно, что все слова, которые начинаются на ab, ba, bb сами не входят в язык L и все их продолжения также ошибочны. Заведем для них ошибочное состояние q!. Остальные слова естественно разбиваются на два класса: т.е., в которых четное число символов b, и те, в которых число таких символов нечетно (они и принадлежат L). Так как после получения aa число b четно, то для представления слов первого класса будем использовать состояние q2, а для представления слов второго создадим состояние q3, которое и будет заключительным. В результате получаем автомат, диаграмма которого представлена на рис. 5.14. Здесь начальное состояние отмечено стрелкой , а заключительное состояние отмечено двумя окружностями.

Рис. 5.14. Диаграмма автомата А

Проверим работу этого автомата, например, на входном слове w = aaababa. При его чтении порождается следующая последовательность конфигураций:

(q0, aaababa) (q1, aababa) ((q2, ababa) ((q2, baba) ((q3, aba) ((q3, ba) ((q2, a ()(q2, ε).

Заключительное состояние этого вычисления q2 не является заключительным.

Следовательно, w LA. Если же мы рассмотрим в качестве входа слово w1= wb =aaababab, то, продолжив на один шаг приведенное выше вычисление, получим, что (q0, w1) (q3, ε). Следовательно, w1 LA.

Проверка показала, что на двух входах автомат A работает верно. Как установить, что он построен корректно, т.е. верно работает на всех входных словах и распознает L?


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: