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

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

< Лекция 6 || Лекция 7: 1234 || Лекция 8 >

6.3. Множества двусторонних контекстов

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

\bothcontext_{L} ( y ) \mymathrel{\bydef}
\{ \lp x , z \rp \in \Sigma ^* \times \Sigma ^*
\mid x y z \in L \} .

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

\begin{align*}
\bothcontext_{L} ( a^i ) &=
\{ \lp a^m , a^k b a^{k+i+m} \rp \mid
m \geq 0 \commaand k \geq 0 \} \cup {} \\
&\myqquad \cup
\{ \lp a^{k+i+m} b a^k , a^m \rp \mid
k \geq 0 \commaand m \geq 0 \} ,\\
\bothcontext_{L} ( a^i b a^j ) &= \{ \lp a^k , a^m \rp \mid
k \geq 0 ,\ m \geq 0 \commaand k + i = m + j \} ,\\
\rightcontext_{L} ( y ) &= \varnothing
 ,\mathspace\text{если}\mathspace | y |_b > 1 .
\end{align*}

Лемма 6.3.3. Если \bothcontext_{L} ( u_1 ) = \bothcontext_{L} ( u_2 ), то \rightcontext_{L} ( u_1 ) = \rightcontext_{L} ( u_2 ).

Доказательство. Из определений следует, что

\rightcontext_{L} ( y ) \peq
\{ z \in \Sigma ^* \mid \lp \varepsilon , z \rp \in \bothcontext_{L} ( y ) \} .

Лемма 6.3.4. Если \bothcontext_{L} ( u_1 ) = \bothcontext_{L} ( u_2 ), то \bothcontext_{L} ( u_1 v ) = \bothcontext_{L} ( u_2 v ) и \bothcontext_{L} ( v u_1 ) = \bothcontext_{L} ( v u_2 ).

Доказательство. Пусть \bothcontext_{L} ( u_1 ) = \bothcontext_{L} ( u_2 ) и \lp x , z \rp \in \bothcontext_{L} ( u_1 v ). Тогда x u_1 v z \in L. Следовательно, \lp x , v z \rp \in \bothcontext_{L} ( u_1 ). Далее, получаем, что \lp x , v z \rp \in \bothcontext_{L} ( u_2 ), x u_2 v z \in L и \lp x , z \rp \in \bothcontext_{L} ( u_2 v ). Второе равенство доказывается аналогично.

Лемма 6.3.5. Если \bothcontext_{L} ( u_1 ) = \bothcontext_{L} ( u_2 ) и \bothcontext_{L} ( v_1 ) = \bothcontext_{L} ( v_2 ), то \bothcontext_{L} ( u_1 v_1 ) = \bothcontext_{L} ( u_2 v_2 ).

Определение 6.3.6. Пусть L \subseteq \Sigma ^*. Тогда множество

\SM ( L ) \bydef
 \{ \bothcontext_{L} ( y ) \mid y \in \Sigma ^* \}
называется синтаксическим моноидом (syntactic monoid) языка L.

Определение 6.3.7*. Полугруппой (semigroup) \lp M , \star \rp называется непустое множество M с ассоциативной бинарной операцией \star.

Определение 6.3.8*. Пусть \lp M , \star \rp - полугруппа. Элемент e \in M называется единицей (unit), если e \star x = x = x \star e для каждого x \in M.

Определение 6.3.9*. Моноид \lp M , \star , e \rp - это полугруппа \lp M , \star \rp с единицей e \in M.

Теорема 6.3.10*. Определим бинарную операцию на Synt(L) следующим образом:

\bothcontext_{L} ( u ) \star \bothcontext_{L} ( v ) \bydef
 \bothcontext_{L} ( u v ) .
Тогда \lp \SM ( L ) , \star ,
\bothcontext_{L} ( \varepsilon ) \rp является моноидом.

Теорема 6.3.11. Синтаксический моноид Synt(L) конечен тогда и только тогда, когда язык L является автоматным.

Доказательство Пусть множество Synt(L) конечно. Согласно лемме 6.3.3 множество \{ \rightcontext_{L} ( y ) \mid y \in \Sigma ^* \} тоже конечно. В силу леммы 6.1.6 язык L является автоматным.

Обратно, пусть язык L распознается некоторым конечным автоматом M = \lalg Q , \Sigma , \Delta , I , F \ralg, не содержащим переходов с метками длины больше единицы. Поставим в соответствие каждому слову y множество \mathrm{Tr}_M( y ) \subseteq Q \times Q, определенное следующим образом:

\mathrm{Tr}_M( y ) \peq
\{ \lp p , q \rp \in Q \times Q
\mid \text{существует путь из }p \text{ в } q \text{ с меткой } y \} .
Легко проверить, что если \mathrm{Tr}_M( y_1 ) = \mathrm{Tr}_M( y_2 ), то \bothcontext_{L} ( y_1 ) \peq \bothcontext_{L} ( y_2 ). Следовательно, | \SM ( L ) | \leq 2^{n^2}, где n = |Q|.

Пример 6.3.12. Рассмотрим конечный автомат M из примера 2.1.14. Тогда

  1. \mathrm{Tr}_M ( \varepsilon )
= \{ \lp 1 , 1 \rp ,\ \lp 2 , 2 \rp \} ;
  2. если n \geq 1, то \mathrm{Tr}_M ( (ab)^n )
= \{ \lp 1 , 1 \rp \} ;
  3. если n \geq 1, то \mathrm{Tr}_M ( (ba)^n )
= \{ \lp 2 , 2 \rp \} ;
  4. если n \geq 0, то \mathrm{Tr}_M ( (ab)^n a )
= \{ \lp 1 , 2 \rp \} ;
  5. если n \geq 0, то \mathrm{Tr}_M ( b (ab)^n )
= \{ \lp 2 , 1 \rp \} ;
  6. \mathrm{Tr}_M ( x aa y )
= \varnothing ;
  7. \mathrm{Tr}_M ( x bb y )
= \varnothing.

Лемма 6.3.13. Пусть L \subseteq \Sigma ^*, n \in \mathbb{N} и для каждого слова y \in \Sigma ^* длины n найдется такое слово x \in \Sigma ^*, что | x | < n и \bothcontext_{L} ( x ) = \bothcontext_{L} ( y ). Тогда

\SM ( L ) =
 \{ \bothcontext_{L} ( y ) \mid y \in \Sigma ^* \commaand | y | < n \} .

Доказательство. Индукцией по k \geq n можно доказать, что для каждого слова y \in \Sigma ^* длины k найдется такое слово x \in \Sigma ^*, что | x | < n и \bothcontext_{L} ( x ) = \bothcontext_{L} ( y ). В шаге индукции используется лемма 6.3.5.

Упражнение 6.3.14. Сколько элементов в синтаксическом моноиде языка a+b над алфавитом {a,b}?

Упражнение 6.3.15. Сколько элементов в синтаксическом моноиде языка b+a+ над алфавитом {a,b}?

Упражнение 6.3.16. Сколько элементов в синтаксическом моноиде языка (aa+b)* над алфавитом {a,b}?

Упражнение 6.3.17. Сколько элементов в синтаксическом моноиде языка (ab)*(ba)*+a* над алфавитом {a,b}?

Упражнение 6.3.18. Сколько элементов в синтаксическом моноиде языка a(b+c)*a(a+b+c)*+b(a+c)*b(a+b+c)*+c(a+b)*c(a+b+c)* над алфавитом {a,b,c}?

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

Упражнение 2.1.25

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

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

Виктор Мерзляков
Виктор Мерзляков
Россия, Краснодар, Кубгту
Дмитрий Заболотнов
Дмитрий Заболотнов
Россия, Краснодар