Тверской государственный университет
Опубликован: 21.08.2007 | Доступ: свободный | Студентов: 1309 / 43 | Оценка: 5.00 / 5.00 | Длительность: 14:18:00
ISBN: 978-5-94774-714-0
Специальности: Программист, Математик
Лекция 4:

Конечные автоматы: преобразователи и распознаватели

< Лекция 3 || Лекция 4: 12345 || Лекция 5 >

Этап 1. Устранение пустых переходов.

Рассмотрим поддиаграму автомата M, в которой оставлены лишь ребра, помеченные \varepsilon: D_{\varepsilon } =(Q, E_{\varepsilon }), где E_{\varepsilon } =\{  (q, q') | q' \in  \Phi (q,\varepsilon )\}.

Пусть D_{\varepsilon  *} =(Q, E_{\varepsilon }^{*}) - это граф достижимости (транзитивного замыкания) для D_{\varepsilon }. Тогда E_{\varepsilon }^{*} =\{  (q, q') | q=q' или в D_{\varepsilon } имеется путь из q в q'}.

Определим НКА M_{1}= <\Sigma , Q_{1}, q_{0}, F_{1}, \Phi _{1} > следующим образом: Q_{1} = \{ q_{0}\}  \cup  \{ q | \ существуют \ такие \ q' \in  Q и a \in  \Sigma , что \ q \in  \Phi (q', a) \}, т.е. кроме начального остаются лишь те состояния, в которые входят "непустые" ребра. F_{1} =\{  q | \ существует \ такое \ q' \in  F, что \ (q,q') \in  E_{\varepsilon }^{*} \}, т.е. к заключительным состояниям M добавляются состояния, из которых можно было попасть в заключительные по путям из \varepsilon -ребер.

Для каждой пары q' \in  Q, a \in  \Sigma полагаем \Phi _{1}(q,a) =\{  r |\ существует \ такое \ q' \in  F , \ что \ (q,q') \in  E_{\varepsilon }^{*} и \ r \in  \Phi (q',a) \}, т.е. в DM1} имеется a -ребро из q в r, если в DM был (возможно пустой) путь из \varepsilon -ребер в некоторое состояние q', из которого a -ребро шло в r.

Из этого определения непосредственно следует, что в НКА M1 нет пустых переходов по \varepsilon. Установим эквивалентность M и M1.

Лемма 4.1. L_{M_1} = L_M.

Доказательство. Пусть w=w1w2... wt - произвольное входное слово. Предположим, что w \in L_{M_1}. Это означает, что в диаграмме D_{M_1} имеется путь p=e1e2 ... et (e1= (q0=r0,r1), ei=(ri-1,ri), i=2,..., t) из q0 в некоторое состояние r_{t} \in  F_{1}, который несет слово w, т.е. ребро ei помечено символом wi. Из определения функции \Phi _{1} непосредственно следует, что для любого ребра ei(ri-1, ri) этого пути в диаграмме DM имеется путь из ri-1 в ri, начало (возможно пустое) которого состоит из \varepsilon -ребер, а последнее ребро помечено символом wi. Объединив эти пути, получим в диаграмме DM путь из q0 в rt , который несет слово w. Так как r_{t} \in  F_{1}, то либо r_{t} \in  F, либо в DM имеется путь по \varepsilon -ребрам из rt в некоторое состояние r' \in  F. В обоих случаях в DM имеется путь из q0 в заключительное состояние, который несет слово w, и следовательно, w \in  L_{M}.

Обратно, пусть w \in  L_{M}. Тогда в DM имеется путь из q0 в некоторое заключительное состояние r, который несет слово w. Пусть r0=q0, а ri - это состояние этого пути, в которое приводит ребро с меткой wi (i= 1,... , t). Рассмотрим отрезок этого пути между вершинами r_{i-1} и ri. Последнее ребро этого отрезка имеет метку wi, а все предыдущие (если они имеются) помечены \varepsilon. Тогда по определению \Phi _{1} в диаграмме D_{M_1} между r_{i-1} и ri имеется ребро с меткой wi. Объединив эти ребра, получим в D_{M_1} путь из q0 в rt. Так как либо r_{t}=r \in  F, либо в DM из rt имеется путь из \varepsilon -ребер в r \in  F, то из определения F1 следует, что r_{t} \in  F_{1}. Таким образом, w \in L_{M_1}.

Этап 2. Детерминизация.

Идея детерминизации состоит в том, что состояниями ДКА объявляются подмножества состояний НКА. Тогда для каждого такого подмножества T и входного символа a однозначно определено множество состояний T', в которые НКА может попасть из состояний T при чтении a.

Определим по НКА M_{1}= <\Sigma , Q_{1}, q_{0}, F_{1}, \Phi _{1} > ДКА A = <\Sigma , Q^{A}, q_{0}^{A}, F^{A}, \Phi ^{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}

Ясно, что A - детерминированный конечный автомат. Следующая лемма устанавливает связь между его вычислениями и вычислениями исходного НКА.

Лемма 4.4. Для любой пары состояний Q', Q'' из QA и любого слова w \in  \Sigma ^{*} имеем

(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)\}

Доказательство. Применим индукцию по длине слова w.

Базис. Пусть |w|=0, тогда w=\varepsilon, Q' = Q'' и утверждение выполнено. Пусть теперь |w|=1 и w= a \in  \Sigma. Тогда утверждение леммы следует непосредственно из определения \Phi ^{A(Q', a)}.

Шаг индукции. Предположим, что лемма справедлива для всех слов длины <= k, и пусть |w| = k+1. Выделим в w первый символ: w=aw'. Пусть \tilde{Q} - это такое состояние, что (Q', a) \vdash_A \tilde{Q}, \varepsilon). Тогда (\tilde{Q}, w^\prime) \vdash_A^* (Q^{\prime\prime},\varepsilon). Так как |w'|=k, то по индукционному предположению это эквивалентно следующему: Q^{\prime\prime}= \{ r\ |\ \text{ существует такое } q^\prime \in \tilde{Q}, \text{ что }\ (q,w^\prime) \vdash_{M_1}^* (r, \varepsilon)\}. Но из определения \Phi ^{A} следует, что \tilde{Q} =\{  q | \ существует \ такое \ q' \in  Q', \ что \ q \in  \Phi _{1}(q', a) \}. Объединив, эти два равенства, получаем: Q^{\prime\prime}= \{ r\ |\ \text{ существует такое } q^\prime \in Q^\prime, \text{ что }\ (q,w) \vdash_{M_1}^* (r, \varepsilon)\}.

Для завершения доказательства теоремы покажем с помощью леммы 4.4, что L_A = L_{M_1}.

Действительно, если слово w переводит состояние q0 в некоторое q \in  F_{1} в автомате M1, то, положив в лемме Q' ={ q0}, получим, что q \in  Q'' для состояния Q'', такого, что (Q', w)  \ vdash_{A}^{*} (Q'',\varepsilon ). Но тогда Q'' \in  F^{A} и w \in  L_{A}.

Обратно, если w \in  L_{A}, то для некоторого Q'' \in  F^{A} имеем (\{q_0\}, w) \vdash_A^* (Q^{\prime\prime},\varepsilon). Тогда в Q'' имеется некоторое состояние q \in  F_{1} и по лемме 4.4 в автомате M_1 \ (q_0,w) \vdash_{M_1}^* (q, \varepsilon)\}, т.е. w \in  L_{M1}.

Пример 4.2. Применим процедуру из теоремы о детерминизации к НКА N1 из примера 4.3.

На первом этапе получаем E_{\varepsilon }^{*} =\{ (2,0), (1, 4), (3, 1), (4, 1)\} и НКА M1 без пустых переходов, представленный на следующей диаграмме.

 Диаграмма автомата M1

Рис. 4.4. Диаграмма автомата M1

Заметим, что состояние 4 исчезло, так как в автомате N1 в него можно было попасть только по \varepsilon -переходу.

На втором этапе детерминизируем M1. ДКА A будет иметь 16 состояний: Q^{A}=\{ \varnothing , \{ 0\} , \{ 1\} , \{ 2\} , \{ 3\} ,\{ 0,1\} , \{ 0,2\} , \{ 0,3\} , \{ 1,2\} , \{ 1,3\} , \{ 2,3\} , \{ 0,1,2\} ,\{ 0,1,3\} ,\{ 0,2,3\} ,\{ 1,2,3\} ,\{ 0,1,2, 3\} \}.

Во множество заключительных состояний войдут состояния, содержащие заключительное состояние 3 автомата M1:

F^A={{3},{0,3}, {1,3}, {0,1,3}, {0,2,3},{1,2,3}, {0,1,2, 3}}.

Функция переходов \Phi ^{A} определена в следующей таблице

Q^{A}\setminus \Sigma a b
hline \varnothing \varnothing \varnothing
{0} {0,1} {0}
{1} \varnothing {2}
{2} {0,1,3} {0}
{3} \varnothing {2}
{0,1} {0,1} {0,2}
{0,2} {0,1,3} {0}
{0,3} {0,1} {0,3}
Q^{A}\setminus \Sigma a b
{1,2} {0,1,3} {0,2}
{1,3} \varnothing {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}
 Диаграмма автомата A

Рис. 4.5. Диаграмма автомата A

На самом деле нас интересуют лишь те состояния, в которые можно попасть из начального состояния {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. Постройте детерминированные конечные автоматы, которые распознают следующие языки в алфавите \sigma =\{ a, b\}:

  • 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))

Автомат должен допустить такую последовательность, если 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.

  • M=<\{ a, b\} ,\{ 0, 1,2\} , 0,\{ 2\} , \Phi > с программой \Phi : 0a \to  1, 0 \to  1, 1b \to  2, 1 \to  2, 2 b \to  2.
  • M=<\{ a, b\} ,\{ 0, 1,2\} , 0,\{ 2\} , \Phi > с программой \Phi : 0a \to  1, 0a \to  2, 1b \to  2, 1 \to  2, 2 b \to  0.
< Лекция 3 || Лекция 4: 12345 || Лекция 5 >
Гасан Баширов
Гасан Баширов
Азербайджан, Баку
Сергей Злобин
Сергей Злобин
Россия, Подольск