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

Основные свойства контекстно-свободных языков

< Лекция 9 || Лекция 10: 123456 || Лекция 11 >

9.6. Пересечение контекстно-свободного языка с автоматным языком

Теорема 9.6.1. Если L1 - контекстно-свободный язык и L2 - автоматный язык, то язык L_1 \cap L_2 является контекстно-свободным.

Доказательство. Пусть \lalg N , \Sigma , P , S \ralg - контекстно-свободная грамматика, порождающая язык L1. Без ограничения общности можно считать, что множество P содержит только правила вида A \tto a и A \tto \alpha, где A \in N, a \in \Sigma и \alpha \in N ^* (см. теорему 8.3.3). Пусть \lalg Q , \Sigma , \Delta , I , F \ralg - конечный автомат, распознающий язык L_2. Без ограничения общности можно считать, что для каждого перехода \lp p , x , q \rp \in \Delta выполняется равенство |x| = 1 (см. лемму 2.3.3).

Построим контекстно-свободную грамматику \lp \overline N , \Sigma , \overline P ,
\overline S \rp, порождающую язык L_1 \cap L_2. Положим

\begin{align*}
\overline N &= \{ \overline S \} \cup ( Q \times N \times Q ) , \\
\overline P &=
\{ \overline S \tto \lp p , S , q \rp \mid
p \in I \commaand q \in F \} \cup {} \\
&\myqquad \cup
\{ \lp p , A , q \rp \tto a \mid
\lp p , a , q \rp \in \Delta \commaand ( A \tto a ) \in P \} \cup {} \\
&\myqquad \cup
\{ \lp p_0 , A , p_n \rp \tto \lp p_0 , B_1 , p_1 \rp
\ldots \lp p_{n-1} , B_n , p_n \rp \mid {} \\
&\myqquad \hphantom{ {} \cup {} \{ } %\}
( A \tto B_1 \ldots B_n ) \in P ,\ p_0 \in Q , \ldots ,\ p_n \in Q \} ,
\end{align*}
где \overline S - новый символ (не принадлежащий множеству Q \times N \times Q ).

Пример 9.6.2. Пусть \Sigma = \{ a , b , c \}. Рассмотрим контекстно-свободный язык L1, порождаемый грамматикой

\begin{align*}
S \; & {\to} \; a , \\
S \; & {\to} \; b S , \\
S \; & {\to} \; c S S ,
\end{align*}
и автоматный язык L2, распознаваемый конечным автоматом M \peq \lalg Q , \Sigma , \Delta , I , F \ralg, где Q = {1,2}, I = {1}, F = {2},
\Delta = \{
\lp 1 , a , 2 \rp ,\
\lp 1 , c , 2 \rp ,\
\lp 2 , a , 1 \rp ,\
\lp 2 , b , 1 \rp
\} .
\objectwidth={5mm} \objectheight={5mm} \let\objectstyle=\scriptstyle
\xymatrix {
  *=[o][F-]{1}
 \ar @`{+/l16mm/} [] ^{}
 \ar `ur_r{+/u7mm/}`r_dr{[0,2]}^{c} "1,3"  
 \ar  "1,3" <0.6mm> ^{a}
& 
& *=[o][F=]{2}
 \ar  "1,1" <0.6mm> ^{a}
 \ar `dl_l{+/d7mm/}`l_ul{[0,-2]}^{b} "1,1"  
}
Тогда язык L_1 \cap L_2 порождается контекстно-свободной грамматикой
\begin{align*}
\overline S \; & {\to} \; S_{12} , & S_{11} \; & {\to} \; c S_{21} S_{11} , \\
S_{12} \; & {\to} \; a , & S_{11} \; & {\to} \; c S_{22} S_{21} , \\
S_{21} \; & {\to} \; a , & S_{12} \; & {\to} \; c S_{21} S_{12} , \\
S_{21} \; & {\to} \; b S_{11} , & S_{12} \; & {\to} \; c S_{22} S_{22} . \\
S_{22} \; & {\to} \; b S_{12} ,
\end{align*}
Здесь S11, S12, S21 и S22 соответствуют символам \lp 1 , S , 1 \rp, \lp 1 , S , 2 \rp, \lp 2 , S , 1 \rp и \lp 2 , S , 2 \rp из доказательства теоремы 9.6.1.

Теорема 9.6.3*. Если L1 - линейный язык и L2 - автоматный язык, то язык L_1 \cap L_2 является линейным.

Пример 9.6.4*. Пусть \Sigma = \{ a , b \}. Рассмотрим линейный язык L1, порождаемый грамматикой

\begin{align*}
S \; & {\to} \; aaSaa , \\
S \; & {\to} \; bSb , \\
S \; & {\to} \; \varepsilon ,
\end{align*}
и автоматный язык L2, распознаваемый конечным автоматом M \peq \lalg Q , \Sigma , \Delta , I , F \ralg, где Q = {1,2,3}, I = {1}, F = {3},
\Delta = \{
\lp 1 , a , 1 \rp ,\
\lp 1 , b , 1 \rp ,\
\lp 1 , a , 2 \rp ,\
\lp 2 , b , 3 \rp ,\
\lp 3 , a , 3 \rp ,\
\lp 3 , b , 3 \rp
\} .
\objectwidth={5mm} \objectheight={5mm} \let\objectstyle=\scriptstyle
\xymatrix {
  *=[o][F-]{1}
 \ar @`{+/l16mm/} [] ^{}
 \rloop{0,1} ^{a}
 \rloop{0,-1} ^{b}
 \ar  "1,2"  ^{a}
& *=[o][F-]{2}
 \ar  "1,3"  ^{b}
& *=[o][F=]{3}
 \rloop{0,1} ^{a}
 \rloop{0,-1} ^{b}
}
Тогда язык L_1 \cap L_2 порождается контекстно-свободной грамматикой
\begin{align*}
\overline S \; & {\to} \; S_{13} , & S_{11} \; & {\to} \; b S_{11} b , \\
S_{11} \; & {\to} \; aa S_{11} aa , & S_{13} \; & {\to} \; b S_{13} b , \\
S_{12} \; & {\to} \; aa S_{11} aa , & S_{13} \; & {\to} \; b S_{12} b , \\
S_{13} \; & {\to} \; aa S_{13} aa , & S_{23} \; & {\to} \; b S_{33} b , \\
S_{13} \; & {\to} \; aa S_{23} aa , & S_{33} \; & {\to} \; b S_{33} b , \\
S_{33} \; & {\to} \; aa S_{33} aa , & S_{11} \; & {\to} \; \varepsilon , \\
& & S_{33} \; & {\to} \; \varepsilon .
\end{align*}
Эту грамматику можно упростить, заменив S11 и S33 на один символ.

Упражнение 9.6.5. Найти контекстно-свободную грамматику для языка L_1 \cap L_2, где L1 порождается грамматикой

\begin{align*}
F \; & {\to} \; a F a , \\
F \; & {\to} \; b F b , \\
F \; & {\to} \; \varepsilon ,
\end{align*}
а язык L2 порождается грамматикой
\begin{align*}
K \; & {\to} \; a M , & M \; & {\to} \; a K , \\
K \; & {\to} \; b K , & M \; & {\to} \; b K , \\
& & M \; & {\to} \; \varepsilon .
\end{align*}

Упражнение 9.6.6. Найти контекстно-свободную грамматику для языка L_1 \cap L_2, где L1 порождается грамматикой

\begin{align*}
F \; & {\to} \; a F a , \\
F \; & {\to} \; b F b , \\
F \; & {\to} \; \varepsilon ,
\end{align*}
а язык L2 порождается грамматикой
\begin{align*}
K \; & {\to} \; a M , & M \; & {\to} \; a K , \\
K \; & {\to} \; b M , & K \; & {\to} \; \varepsilon . \\
K \; & {\to} \; b K ,
\end{align*}

Упражнение 9.6.7. Является ли контекстно-свободным язык \{ a^n b^n a^k b^n \mid n \geq 0 ,\ k \geq 0 \}

Упражнение 9.6.8. Является ли контекстно-свободным язык \{ (ab)^{n^2} \mid n \geq 0 \} \cup
 \{ aaw \mid w \in \{a,b\}^* \}

Упражнение 9.6.9. Существует ли над алфавитом {a,b} такой линейный язык L, что язык \{ ubv \mid u \in L ,\ uv \in L \} не является контекстно-свободным?

< Лекция 9 || Лекция 10: 123456 || Лекция 11 >
Юлия Маковецкая
Юлия Маковецкая

Упражнение 2.1.25

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

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

Юрий Фролов
Юрий Фролов
Украина
Руслан Мухамедьяров
Руслан Мухамедьяров
Россия, Казань, КФУ