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

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

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

Произведение автоматов

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

Пусть M_{1} = <\Sigma , Q_{1}, q_{0}^{1}, F_{1}, \Phi _{1}> и M_{2} = <\Sigma , Q_{2}, q_{0}^{2}, F_{2}, \Phi _{2}> - два конечных автомата с общим входным алфавитом \Sigma, распознающих языки L1 и L2, соответственно. Определим по ним автомат M= <\Sigma , Q, q_{0}, F, \Phi >, называемый произведением M1 и M2 (M= M1 x M2), следующим образом. Q= Q_{1} x Q_{2} =\{  (q, p) | q \in  Q_{1}, p \in  Q_{2}\}, т.е. состояния нового автомата - это пары, первый элемент которых - состояние первого автомата, а второй - состояние второго автомата. Для каждой такой пары (q,p) и входного символа a \in  \Sigma определим функцию переходов: \Phi ((q,p), a) = (\Phi _{1}(q,a), \Phi _{2}(p,a)). Начальным состоянием M является пара q0= (q01, q02), состоящая из начальных состояний автоматов-множителей. Что касается множества заключительных состояний, то оно определяется в зависимости от операции над языками L1 и L2, которую должен реализовать M.

Теорема 4.1.

  • При F_{\cup } = \{  (q,p) | q \in  F_{1} или p \in  F_{2} \} автомат M= <\Sigma , Q, q_{0}, F_{\cup }, \Phi > распознает язык L = L_{1} \cup  L_{2}.
  • При F_{\cap } = \{  (q,p) | q \in  F_{1} и p \in  F_{2} \} автомат M= <\Sigma , Q, q_{0}, F_{\cap }, \Phi > распознает язык L = L_{1} \cap  L_{2}.
  • При F_{\setminus } = \{  (q,p) | q \in  F_{1} и p \notin  F_{2} \} автомат M= <\Sigma , Q, q_{0}, F_{\setminus }, \Phi > распознает язык L = L1 \ L2.

Доказательство этой теоремы непосредственно выводится из следующего утверждения.

Лемма 4.2. Для любых двух состояний (q,p) и (q', p') автомата M и любого входного слова w слово w переводит (q,p) в (q', p') в автомате M тогда и только тогда, когда оно переводит q в q' в автомате M1 и p в p' в автомате M2.

Лемма устанавливается индукцией по длине слова w.

Следствие4.1.1. Класс конечно автоматных языков замкнут относительно теоретико множественных операций объединения, пересечения и разности.

Недетерминированные конечные автоматы и их детерминизация

Недетерминированные конечные автоматы, рассматриваемые в этом параграфе, являются обобщениями детерминированных: они при чтении очередного символа на входе могут выбрать в качестве следующего одно из нескольких состояний, а кроме того, могут изменить состояние без чтения входа. Основной результат, который мы установим, утверждает, что это обощение не существенно: недетерминированные и детерминированные конечные автоматы распознают одни и те же языки.

Определение 4.8. Недетерминированный конечный автомат (НКА) - распознаватель - это система вида

M = <\Sigma, Q, q_0, F, \Phi>,

включающая следующие компоненты:

  • \Sigma  =\{ a_{1}, \dots  , a_{m}\}  (m \ge  1) - конечное множество - входной алфавит ;
  • Q={q0, ... , qn-1} (n >= 1) - конечное множество - алфавит внутренних состояний;
  • q_{0} \in  Q - начальное состояние автомата;
  • F \subseteq  Q - множество принимающих (допускающих, заключительных) состояний ;
  • \Phi : Q x (\Sigma  \cup  \{ \varepsilon \} ) \to  2^{Q} - функция переходов.

Для a \in  \Sigma значение \Phi (q, a) - это множество состояний в каждое из которых может перейти автомат из состояния q, когда получает на вход символ a. \Phi (q, \varepsilon ) - это множество состояний в каждое из которых может перейти автомат из состояния q без чтения символа на входе.

Как и для детерминированных автоматов, функцию переходов можно представить с помощью набора команд-программы: для каждой пары q \in  Q и a \in  \Sigma и каждого состояния q' \in  \Phi (q, a) в программу помещается команда q a -> q', и для каждого состояния q' \in  \Phi (q, \varepsilon ) в программу помещается команда q -> q'. Отличие от детерминированного случая состоит в том, что для одной пары q \in  Q и a \in  \Sigma в программе может быть несколько команд вида q a -> q' или не быть ни одной такой команды. Кроме того, могут появиться \varepsilon -команды (пустые переходы) вида q -> q', означающие возможность непосредственного перехода из q в q' без чтения символа на входе.

При табличном задании функции \Phi в таблице появляется (m+1) -ый столбец, соответствующий пустому символу \varepsilon и на пересечении строки q и столбца a \in  (\Sigma  \cup  \{ \varepsilon \} ) стоит множество состояний \Phi (q,a).

Для недетерминированного автомата M = <\Sigma , Q, q_{0}, \Phi  > в диаграмме DM=(Q, E) с выделенной начальной вершиной q0 и множеством заключительных вершин F ребра взаимно-однозначно соответствуют командам: команде вида q a -> q' (a \in  \Sigma ) соответствует ребро (q,q' ), с меткой a , а команде вида q -> q' соответствует ребро (q,q' ), с меткой \varepsilon .

Скажем, что заданный последовательностью ребер путь p=e1e2 ... eT в диаграмме DM несет слово w=w1w2 ... wt (t <= T), если после удаления из него "пустых" ребер (т.е. ребер с метками \varepsilon ) остается последовательность из t ребер p'=e_{j_1}e_{j_2} \ldots e_{j_t}, метки которых образуют слово w , т.е. wi - это метка ребра e_{j_i}\ (1 \leq i \leq t). Очевидно, это эквивалентно тому, что последовательность меток на ребрах пути p имеет вид \varepsilon^{k_1}w_1\varepsilon^{k_2}w_2 \ldots \varepsilon^{k_t}w_t \varepsilon^{k_{t+1}}, где kj >= 0 (j=1,2, ... , t+1) и \ t + \sum_{j=1}^{t+1} k_j = T.

Слово w переводит q в q' в диаграмме DM, если в ней имеется путь из q в q' который несет w .

На недетерминированные автоматы естественным образом переносится определение конфигураций и отношения перехода между ними.

Определение 4.9. Назовем конфигурацией НКА M = <\Sigma , Q, q_{0}, F, \Phi , > произвольную пару вида (q, w), в которой q \in  Q и w \in  \Sigma ^{*}. Определим отношение \vdash_M перехода из одной конфигурации в другую за один шаг:

(q, w) \vdash_M (q^\prime, w^\prime)\ \Leftrightarrow \ (w = aw^\prime \textit{ и } q^\prime \in \Phi(q,a) )

или

( w = w^\prime и q^\prime \in \Phi(q,\varepsilon)).

Как и для ДКА, через \vdash_M^* обозначим рефлексивное и транзитивное замыкание отношения \vdash_M.

Внешне определение распознавания слов НКА совпадает с определением для ДКА.

Определение 4.10. НКА M распознает (допускает, принимает) слово w, если для некоторого q \in F \ (q_0, w) \vdash_M^* (q, \varepsilon).

Язык LM, распознаваемый НКА M, состоит из всех слов, распознаваемых автоматом:

L_M= \{ w\ |\ M \text{ распознает } \ w\}

Отличие состоит в том, что у НКА может быть несколько различных способов работы (путей вычисления) на одном и том же входном слове w. Считаем, что НКА распознает (допускает, принимает) это слово, если хотя бы один из этих способов приводит в заключительное состояние из F.

Из определения диаграммы DM непосредственно следует, что НКА M распознает слово w, тогда и только тогда, когда существует такое заключительное состояние q \in  F, что в диаграмме DM слово w переводит q0 в q. Иными словами, в DM имеется путь из q0 в q, на ребрах которого написано слово w (с точностью до меток \varepsilon ).

Пример 4.1. Рассмотрим НКА N_{1} = < \{ a, b\} , \{ 0,1,2,3, 4\} , 0, \{ 3\} , \Phi >, где

\Phi : Q\setminus \Sigma _{X} a b \varepsilon
0 {0,1} {0} \varnothing
1 \varnothing \varnothing {4}
2 {3} \varnothing \varnothing
3 \varnothing \varnothing {1}
4 \varnothing {2} \varnothing

Его диаграмма D_{N_1} представлена ниже на рис. 4.3.

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

Рис. 4.3. Диаграмма автомата N1

Рассмотрим работу этого автомата на слове ababa:

(0,ababa) \vdash_{N_1}(1, baba)\vdash_{N_1}(4, baba)\vdash_{N_1}(2, aba)
 \vdash_{N_1}(0, aba)\\ \vdash_{N_1}(1, ba)\vdash_{N_1}(4, ba)\vdash_{N_1}(2, a)
\vdash_{N_1}(3,\varepsilon).

Так как 3 - заключительное состояние, то ababa \in  L_{N1}. Заметим, что у автомата N1 имеются и другие способы работы на этом слове, не ведущие к заключительному состоянию. Например, он может после чтения каждого символа оставаться в состоянии 0. Но чтобы слово допускалось, достаточно существовать хотя бы одному "хорошему" способу.

Очевидно, что детерминированные конечные автоматы являются частными случаями недетерминированных. Естественно спросить, распознают ли недетерминированные конечные автоматы больший класс языков чем детерминированные? Следующая теорема показывает, что классы языков, распознаваемых НКА и ДКА совпадают.

Теорема 4.2. (Детерминизация НКА)

Для каждого НКА M можно эффективно построить такой ДКА A, что LA = LM.

Доказательство Пусть M= <\Sigma , Q, q_{0}, F, \Phi  > - НКА. Процедура построения по нему эквивалентного ДКА состоит из двух этапов: на первом по M строится эквивалентный ему НКА M1, в программе которого отсутствуют переходы по \varepsilon, а на втором этапе по M1 строится эквивалентный ДКА A.

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