Опубликован: 09.07.2007 | Уровень: профессионал | Доступ: свободно | ВУЗ: Московский государственный университет имени М.В.Ломоносова
Лекция 7:

Синтаксические моноиды

< Лекция 6 || Лекция 7: 1234 || Лекция 8 >
Аннотация: В данной лекции рассматривается понятие синтаксического моноида и приводится доказательство еще одного критерия автоматности формального языка, который можно сформулировать в терминах классов эквивалентности слов по взаимозаменяемости. Приведены примеры практической реализации критерия и предоставлены упражнения для самостоятельного решения

Основная цель данной лекции - доказать еще один критерий автоматности формального языка. Этот критерий можно сформулировать в терминах классов эквивалентности слов по взаимозаменяемости (однако формальные определения будут даны без использования понятия класса эквивалентности). Слова x и y считаются взаимозаменяемыми (относительно языка L ), если при замене в любом слове из языка L подслова, совпадающего с x, на y снова получится слово из языка L и наоборот. В разделе 6.3 фактически доказывается, что язык L является автоматным тогда и только тогда, когда соответствующее отношение взаимозаменяемости разбивает множество всех слов рассматриваемого алфавита на конечное число классов эквивалентности.

Но сначала мы докажем аналогичный результат для отношения взаимозаменяемости не подслов, а префиксов (раздел 6.1). Соответствующие классы эквивалентности слов позволяют построить минимальный детерминированный конечный автомат для заданного языка. Известен и другой метод нахождения минимального детерминированного конечного автомата (раздел 6.2), но этот метод можно применять только тогда, когда уже имеется какой-нибудь детерминированный конечный автомат, распознающий данный язык. В конце лекции доказывается, что классы эквивалентности по взаимозаменяемости относительно автоматного языка сами являются автоматными языками.

6.1. Множества правых контекстов

Определение 6.1.1. Пусть L \subseteq \Sigma ^* и y \in \Sigma ^*. Тогда множество правых контекстов слова y относительно языка L определяется следующим образом:

\rightcontext_{L} ( y ) \bydef \{ z \in \Sigma ^* \mid y z \in L \} .

Пример 6.1.2. Пусть \Sigma = \{ a , b \} и L = \{ a^n b a^n \mid n \geq 0 \}. Тогда

  1. \rightcontext_{L} ( a^i ) = \{ a^k b a^{k+i}
\mid k \geq 0 \}
  2. если i \geq j, то \rightcontext_{L} ( a^i b a^j ) = \{ a^{i-j} \} ;
  3. если i < j, то \rightcontext_{L} ( a^i b a^j ) = \varnothing ;
  4. если | y |_b > 1, то \rightcontext_{L} ( y ) = \varnothing.

Определение 6.1.3. Для любого состояния p полного детерминированного конечного автомата \lalg Q , \Sigma , \Delta , I , F \ralg и любого слова w обозначим через \Delta _{ w } ( p ) такое состояние q, что существует путь из p в q с меткой w (в силу полноты и детерминированности такое состояние существует и единственно).

Лемма 6.1.4. Если язык L распознается полным детерминированным конечным автоматом \lalg Q , \Sigma , \Delta , I , F \ralg, то

| \{ \rightcontext_{L} ( y ) \mid y \in \Sigma ^* \} | \leq | Q | .

Доказательство. Пусть I = {s}. Введем обозначение

J \bydef \{ \rightcontext_{L} ( y ) \mid y \in \Sigma ^* \} .
Определим функцию f \colon J \farrow Q, положив f(A) равным \Delta _{ y } ( s ), где y - некоторое слово, для которого выполнено условие \rightcontext_{L} ( y ) = A (если существует несколько таких слов y, то можно использовать, например, первое среди них в лексикографическом порядке).

Заметим, что для любых слов u и v, если \rightcontext_{L} ( u ) \neq \rightcontext_{L} ( v ), то \Delta _{ u } ( s ) \neq \Delta _{ v } ( s ). Следовательно, функция f является инъективной. Но тогда | J | \leq | Q |.

Пример 6.1.5. Рассмотрим язык L, порождаемый полным детерминированным конечным автоматом \lalg Q , \Sigma , \Delta , I , F \ralg из примера 2.6.4. Тогда

\begin{align*}
& \{ \rightcontext_{L} ( y ) \mid y \in \Sigma ^* \} =
 \{ \rightcontext_{L} ( \varepsilon ) , \rightcontext_{L} ( a ) ,
 \rightcontext_{L} ( b ) \} ,\\
& \rightcontext_{L} ( \varepsilon ) =
 \{ (ab)^n \mid n \geq 0 \} \pcup \{ (ab)^n a \mid n \geq 0 \} ,\\
& \rightcontext_{L} ( a ) =
 \{ b (ab)^n \mid n \geq 0 \} \cup \{ (ba)^n \mid n \geq 0 \} ,\\
& \rightcontext_{L} ( b ) = \varnothing .
\end{align*}

Лемма 6.1.6. Если L \subseteq \Sigma ^* и множество \{ \rightcontext_{L} ( y ) \mid y \in \Sigma ^* \} конечно, то язык L является автоматным.

Доказательство. Язык L распознается полным детерминированным конечным автоматом \lalg Q , \Sigma , \Delta , I , F \ralg, где

\begin{align*}
 Q &\peq \{ \rightcontext_{L} ( y ) \mid y \in \Sigma ^* \} ,\\
 I &\peq \{ \rightcontext_{L} ( \varepsilon ) \} ,\\
 F &\peq \{ \rightcontext_{L} ( y ) \mid y \in L \} ,\\
 \Delta &\peq
\{ \lp \rightcontext_{L} ( y ) , a , \rightcontext_{L} ( y a ) \rp
\mid y \in \Sigma ^* , \ a \in \Sigma \} .
\end{align*}

Пример 6.1.7. Пусть \Sigma = \{ a , b \}. Рассмотрим автоматный язык L = a+b*. Обозначим

\begin{align*}
 q_\varepsilon &= \rightcontext_{L} ( \varepsilon ) ,\\
 q_a &= \rightcontext_{L} ( a ) ,\\
 q_b &= \rightcontext_{L} ( b ) = \varnothing ,\\
 q_{ab} &= \rightcontext_{L} ( ab ) .
\end{align*}
Тогда \{ \rightcontext_{L} ( y ) \mid y \in \Sigma ^* \} =
\{ q_\varepsilon , q_a , q_b , q_{ab} \}. Язык L распознается полным детерминированным конечным автоматом \lalg Q , \Sigma , \Delta , I , F \ralg, где Q = \{ q_\varepsilon , q_a , q_b , q_{ab} \}, I = \{ q_\varepsilon \}, F = \{ q_a , q_{ab} \},
\begin{multiline*}
\Delta = \{
\lp q_\varepsilon , a , q_a \rp ,\
\lp q_\varepsilon , b , q_b \rp ,\
\lp q_a , a , q_a \rp ,\
\lp q_a , b , q_{ab} \rp ,\
\\
\lp q_b , a , q_b \rp ,\
\lp q_b , b , q_b \rp ,\
\lp q_{ab} , a , q_b \rp ,\
\lp q_{ab} , b , q_{ab} \rp
\} .
\end{multiline*}
\objectwidth={7.5mm} \objectheight={7.5mm} \let\objectstyle=\scriptstyle
\xymatrix {
  *=[o][F-]{q_\varepsilon}
 \ar @`{+/l16mm/} [] ^{}
 \ar  "1,2"  ^{a}
 \ar  "2,3"  _{b}
& *=[o][F=]{q_a}
 \rloop{0,1} ^{a}
 \ar  "1,3"  ^{b}
& *=[o][F=]{q_{ab}}
 \ar  "2,3"  ^{a}
 \rloop{0,1} ^{b}
\\
  %
& 
& *=[o][F-]{q_b}
 \rloop{1,0} ^{a}
 \rloop{0,-1} ^{b}
}

Теорема 6.1.8. Язык L \subseteq \Sigma ^* является автоматным тогда и только тогда, когда множество \{ \rightcontext_{L} ( y ) \mid y \in \Sigma ^* \} конечно.

Доказательство. Необходимость доказана в лемме 6.1.4, достаточность - в лемме 6.1.6.

Замечание 6.1.9. В силу леммы 6.1.4 полный детерминированный конечный автомат, построенный в доказательстве леммы 6.1.6, является минимальным (по количеству состояний) среди всех полных детерминированных конечных автоматов, распознающих заданный язык. Можно доказать, что любой минимальный полный детерминированный конечный автомат, распознающий заданный язык, изоморфен этому автомату.

Упражнение 6.1.10. Пусть \Sigma = \{a,b\} и

L = \{ w \in \Sigma ^* \mid | w |_a = 1 \commaand | w |_b = 2 \} .
Сколько элементов содержит множество \{ \rightcontext_{L} ( y ) \mid y \in \Sigma ^* \}?

Упражнение 6.1.11. Найти минимальный полный детерминированный конечный автомат для языка {ab,abb}*.

Упражнение 6.1.12. Найти минимальный полный детерминированный конечный автомат для языка

\{ a b^{2n} \mid n \geq 0 \} \cup \{ c
b^{2n+1} \mid n \geq 0 \} .

Упражнение 6.1.13. Найти минимальный полный детерминированный конечный автомат для языка

\{ a b^{2n} \mid n \geq 0 \} \cup \{
b^{4n} \mid n \geq 0 \} .

Упражнение 6.1.14. Найти минимальный полный детерминированный конечный автомат для языка

\{ a^m u b^n \mid
 m \geq 0 ,\ n \geq 0 ,\ | u | \vdots 3 \} .

< Лекция 6 || Лекция 7: 1234 || Лекция 8 >
Юлия Маковецкая
Юлия Маковецкая

Упражнение 2.1.25

Евгения Гунченко
Евгения Гунченко

Сдавала тест экстерном, результат получен 74 после принятия данного результата и соответственно оплаты курса, будет ли выдано удостоверение о повышении квалификации?

Олег Гуреев
Олег Гуреев
Россия
Илья Константинов
Илья Константинов
Россия, Краснодар