Конечные автоматы: преобразователи и распознаватели
Этап 1. Устранение пустых переходов.
Рассмотрим поддиаграму автомата M, в которой оставлены лишь ребра, помеченные
, где
.
Пусть - это граф достижимости (транзитивного замыкания)
для
. Тогда
или в
имеется путь из q в q'}.
Определим НКА следующим образом:
, т.е. кроме начального остаются лишь те состояния, в которые
входят "непустые" ребра.
,
т.е. к заключительным состояниям M добавляются состояния, из которых можно было
попасть в заключительные по путям из
-ребер.
Для каждой пары полагаем
, т.е. в DM1} имеется a -ребро из q в r, если в DM был (возможно пустой) путь из
-ребер в некоторое состояние q', из которого a -ребро шло в r.
Из этого определения непосредственно следует, что в НКА M1 нет пустых переходов
по Установим эквивалентность M и M1.
Лемма 4.1. .
Доказательство. Пусть w=w1w2... wt - произвольное входное слово.
Предположим, что . Это означает, что в диаграмме
имеется путь p=e1e2 ... et (e1= (q0=r0,r1), ei=(ri-1,ri), i=2,..., t)
из q0 в некоторое состояние
,
который несет слово w, т.е. ребро ei помечено символом wi.
Из определения функции
непосредственно следует,
что для любого ребра ei(ri-1, ri) этого пути в диаграмме DM
имеется путь из ri-1 в ri, начало (возможно пустое) которого состоит
из
-ребер, а последнее ребро помечено символом wi. Объединив эти пути,
получим в диаграмме DM путь из q0 в rt , который несет слово w.
Так как
, то либо
, либо в DM имеется путь по
-ребрам из rt в некоторое состояние
. В обоих случаях
в DM имеется путь из q0 в заключительное состояние, который несет слово w,
и следовательно,
.
Обратно, пусть . Тогда в DM имеется путь из q0 в
некоторое заключительное состояние r, который несет слово w. Пусть r0=q0, а ri - это состояние этого пути, в которое приводит ребро с меткой wi (i= 1,... , t).
Рассмотрим отрезок этого пути между вершинами r_{i-1} и ri. Последнее ребро этого отрезка
имеет метку wi, а все предыдущие (если они имеются) помечены
Тогда по определению
в диаграмме
между r_{i-1} и ri
имеется ребро с меткой wi. Объединив эти ребра, получим в
путь
из q0 в rt. Так как либо
, либо в DM из rt имеется
путь из
-ребер в
, то из определения F1 следует, что
.
Таким образом,
.
Этап 2. Детерминизация.
Идея детерминизации состоит в том, что состояниями ДКА объявляются подмножества состояний НКА. Тогда для каждого такого подмножества T и входного символа a однозначно определено множество состояний T', в которые НКА может попасть из состояний T при чтении a.
Определим по НКА ДКА
следующим образом.
![\begin{array}{l}
Q^A =\{ Q'\ |\ Q' \subseteq Q_1\},\\
q_0^A =\{ q_0\},\\
F^A =\{ Q'\ |\ Q' \cap F_1 \neq \emptyset \},\\
\Phi^A(Q', a) =\{ q\ |\ \text{ существует такое } q^\prime \in Q', \text{ что } q \in \Phi_1(q^\prime, a) \}.
\end{array}](/sites/default/files/tex_cache/8ef55039b597183c1ec6f70f630c290c.png)
Ясно, что A - детерминированный конечный автомат. Следующая лемма устанавливает связь между его вычислениями и вычислениями исходного НКА.
Лемма 4.4. Для любой пары состояний Q', Q'' из QA и любого слова имеем
![(Q^\prime, w) \vdash_A^* (Q^{\prime\prime},\varepsilon)\ \Longleftrightarrow\ Q^{\prime\prime}= \\ =\{ r\ |\ \text{ существует такое } q^\prime \in Q^\prime, \text{ что }\ (q,w) \vdash_{M_1}^* (r, \varepsilon)\}](/sites/default/files/tex_cache/01dc7ecce25141094c6ad7e075cb1478.png)
Доказательство. Применим индукцию по длине слова w.
Базис. Пусть |w|=0, тогда , Q' = Q'' и утверждение выполнено.
Пусть теперь |w|=1 и
. Тогда утверждение леммы следует непосредственно
из определения
.
Шаг индукции. Предположим, что лемма справедлива для всех слов длины <= k,
и пусть |w| = k+1. Выделим в w первый символ: w=aw'.
Пусть - это такое состояние, что
.
Тогда
.
Так как |w'|=k, то по индукционному предположению это эквивалентно
следующему:
.
Но из определения
следует, что
.
Объединив, эти два равенства, получаем:
.
Для завершения доказательства теоремы покажем с помощью
леммы 4.4, что .
Действительно, если слово w переводит состояние q0 в некоторое в автомате M1, то, положив в лемме Q' ={ q0}, получим, что
для состояния Q'', такого, что
. Но тогда
и
.
Обратно, если , то для некоторого
имеем
. Тогда в Q''
имеется некоторое состояние
и по лемме 4.4 в автомате
, т.е.
.
Пример 4.2. Применим процедуру из теоремы о детерминизации к НКА N1 из примера 4.3.
На первом этапе получаем и
НКА M1 без пустых переходов, представленный на следующей диаграмме.
Заметим, что состояние 4 исчезло, так как в автомате N1 в него можно было
попасть только по -переходу.
На втором этапе детерминизируем M1. ДКА A будет иметь 16 состояний: .
Во множество заключительных состояний войдут состояния, содержащие заключительное состояние 3 автомата M1:
F^A={{3},{0,3}, {1,3}, {0,1,3}, {0,2,3},{1,2,3}, {0,1,2, 3}}.
Функция переходов определена в следующей таблице
![]() |
a | b |
---|---|---|
hline ![]() |
![]() |
![]() |
{0} | {0,1} | {0} |
{1} | ![]() |
{2} |
{2} | {0,1,3} | {0} |
{3} | ![]() |
{2} |
{0,1} | {0,1} | {0,2} |
{0,2} | {0,1,3} | {0} |
{0,3} | {0,1} | {0,3} |
![]() |
a | b |
---|---|---|
{1,2} | {0,1,3} | {0,2} |
{1,3} | ![]() |
{2} |
{2,3} | {0,1,3} | {0,2} |
{0,1,2} | {0,1,3} | {0,2} |
{0,1,3} | {0,1} | {0,2} |
{0,2,3} | {0,1,3} | {0,2} |
{1,2,3} | {0,1,3} | {0,2} |
{0,1,2,3} | {0,1,3} | {0,2} |
На самом деле нас интересуют лишь те состояния, в которые можно попасть из начального состояния {0}. Несложный анализ показывает, что их только три: {0,1}, {0,2 } и {0, 1, 3 }. Остальные состояния не достижимы из {0} и, следовательно, не влияют на работу автомата A. Их можно отбросить. Таким образом, в диаграмме автомата остаются 4 состояния, показанные на рис. 4.5.
Замечание. В рассмотренном примере у построенного ДКА A оказалось не больше состояний, чем у исходного НКА N1. К сожалению, это не всегда так. Существуют примеры НКА с n состояниями, для которых эквивалентные ДКА содержат не менее 2n состояний.
Задачи
Задача 4.1. Автомат по продаже кофе имеет щель для получения монет, кнопку, нажатие которой после уплаты достаточной суммы приводит к получению кофе, и накопитель, через который он выдает сдачу покупателю. Автомат принимает монеты достоинством в 1, 2 и 5 рублей. Чашка кофе стоит 8 руб. Пока полученная сумма недостаточна, горит красная лампочка. Если сумма, полученная автоматом, >= 8, то зажигается зеленая лампочка и после нажатия кнопки автомат наливает кофе и, если требуется, дает сдачу. Если автомат получает монету, когда горит зеленая лампочка, то он немедленно ее возвращает. Определите входной и выходной алфавиты конечного автомата, управляющего продажей кофе, и постройте его функции переходов и выходов.
Задача 4.2. Электронные часы имеют табло с указанием часов, минут и секунд и две управляющие кнопки. Одна кнопка переводит часы из нормального режима в режим настройки времени - вначале в настройку часов, затем - минут, затем - секунд, а затем возвращает в нормальный режим. Другая кнопка в нормальном режиме ничего не меняет, а в режиме настройки нажатие на нее увеличивает на единицу число настраеваемых часов, минут или секунд. Постройте автомат, который принимает на вход сигналы нажатия от двух кнопок, а на выходе выдает сигналы изменения режима и увеличения соответствующего числа.
Задача 4.3. Докажите лемму 4.1 индукцией по длине входного слова.
Задача 4.4. Постройте детерминированные конечные автоматы, которые
распознают следующие языки в алфавите :
- L = {w | длина w делится на 5} ;
- L = {w | w не содержит подслов 'aab' и 'bba'} ;
- L = {w | w содержит четное число букв а и нечетное число букв b} ;
- L = {w | число букв а делится на 3, а число букв b на 2 }.
Задача 4.5. Выше в примере 4.1 был построен автомат с выходом, выполняющий сложение двух двоичных чисел. Постройте автомат-распознаватель, который проверяет правильность сложения. На вход поступают последовательности троек нулей и единиц:
![(x_1(1),x_2(1),y(1)), (x_1(2),x_2(2),y(2)), \ldots (x_1(n),x_2(n),y(n))](/sites/default/files/tex_cache/8043cc34670172087d3162ebd3b8166a.png)
Автомат должен допустить такую последовательность, если y = y(n) ... y(2)y(1) - это первые n битов суммы двоичных чисел x1= x1(n)... x1(2)x1(1) и x2 = x2(n)... x2(2)x2(1).
Задача 4.7. Докажите лемму 4.2.
Задача 4.8. Докажите, что приведенный на рис. 4.5 автомат A распознает язык, состоящий из всех слов, заканчивающихся на 'aba'.
Задача 4.9. Используя процедуру детерминизации недетерминированных автоматов из теоремы 4.2, постройте ДКА, эквивалентный заданному НКА M.
-
с программой
.
-
с программой
.