Упражнение 2.1.25 |
Синтаксические моноиды
6.3. Множества двусторонних контекстов
Определение 6.3.1.
Пусть
и
.
Тогда множество контекстов
( множество двусторонних контекстов )
слова y относительно языка L
определяется следующим образом:
![\bothcontext_{L} ( y ) \mymathrel{\bydef}
\{ \lp x , z \rp \in \Sigma ^* \times \Sigma ^*
\mid x y z \in L \} .](/sites/default/files/tex_cache/50f160641060b4c4de759bfe65f90be3.png)
Пример 6.3.2.
Пусть
и
.
Тогда
![\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*}](/sites/default/files/tex_cache/32b112bcf593b62061a82493935ea1df.png)
Лемма 6.3.3. Если , то
.
Доказательство. Из определений следует, что
![\rightcontext_{L} ( y ) \peq
\{ z \in \Sigma ^* \mid \lp \varepsilon , z \rp \in \bothcontext_{L} ( y ) \} .](/sites/default/files/tex_cache/24d1cb580b520674edcc3e7cf54bccbb.png)
Лемма 6.3.4. Если , то
и
.
Доказательство.
Пусть
и
.
Тогда
.
Следовательно,
.
Далее,
получаем, что
,
и
.
Второе равенство доказывается аналогично.
Лемма 6.3.5. Если и
, то
.
Определение 6.3.6.
Пусть .
Тогда множество
![\SM ( L ) \bydef
\{ \bothcontext_{L} ( y ) \mid y \in \Sigma ^* \}](/sites/default/files/tex_cache/060c50628f5aa63e0d61436214b731d7.png)
Определение 6.3.7*. Полугруппой
(semigroup)
называется непустое множество M
с ассоциативной бинарной операцией
.
Определение 6.3.8*.
Пусть - полугруппа.
Элемент
называется единицей
(unit),
если
для каждого
.
Определение 6.3.9*. Моноид - это
полугруппа
с единицей
.
Теорема 6.3.10*. Определим бинарную операцию на Synt(L) следующим образом:
![\bothcontext_{L} ( u ) \star \bothcontext_{L} ( v ) \bydef
\bothcontext_{L} ( u v ) .](/sites/default/files/tex_cache/d91f8b72d97cccd0320fcfb461b17965.png)
![\lp \SM ( L ) , \star ,
\bothcontext_{L} ( \varepsilon ) \rp](/sites/default/files/tex_cache/52efa692b4070aba240b5ccc287ba288.png)
Теорема 6.3.11. Синтаксический моноид Synt(L) конечен тогда и только тогда, когда язык L является автоматным.
Доказательство
Пусть множество Synt(L)
конечно.
Согласно лемме 6.3.3
множество
тоже конечно.
В силу леммы 6.1.6
язык L является автоматным.
Обратно, пусть язык L
распознается некоторым конечным автоматом ,
не содержащим переходов с метками длины больше единицы.
Поставим в соответствие
каждому слову y
множество
,
определенное следующим образом:
![\mathrm{Tr}_M( y ) \peq
\{ \lp p , q \rp \in Q \times Q
\mid \text{существует путь из }p \text{ в } q \text{ с меткой } y \} .](/sites/default/files/tex_cache/5b31056a61c34945c08dc12562c3f721.png)
![\mathrm{Tr}_M( y_1 ) = \mathrm{Tr}_M( y_2 )](/sites/default/files/tex_cache/cb697fce4c25e2f669243a902527e988.png)
![\bothcontext_{L} ( y_1 ) \peq \bothcontext_{L} ( y_2 )](/sites/default/files/tex_cache/c71fc343717ab7192656b0b3845b05ed.png)
![| \SM ( L ) | \leq 2^{n^2}](/sites/default/files/tex_cache/9fe905763bb8805f53d7958633f6d8da.png)
Пример 6.3.12. Рассмотрим конечный автомат M из примера 2.1.14. Тогда
-
;
- если
, то
;
- если
, то
;
- если
, то
;
- если
, то
;
-
;
-
.
Лемма 6.3.13. Пусть ,
и для каждого слова
длины n найдется такое слово
, что
и
. Тогда
![\SM ( L ) =
\{ \bothcontext_{L} ( y ) \mid y \in \Sigma ^* \commaand | y | < n \} .](/sites/default/files/tex_cache/12de3ddc2437af4ec146093f5deeef62.png)
Доказательство.
Индукцией по
можно доказать, что
для каждого слова
длины k
найдется такое слово
,
что
и
.
В шаге индукции используется лемма 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}?