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

Автоматы с магазинной памятью

< Лекция 10 || Лекция 11: 123 || Лекция 12 >

10.2. Характеризация контекстно-свободных языков

Теорема 10.2.1. Если язык L является контекстно-свободным, то существует МП-автомат, распознающий этот язык.

Доказательство. Пусть язык L порождается контекстно-свободной грамматикой \lalg N , \Sigma , P , S \ralg, в которой каждое правило имеет вид A \tto w \beta, где A \in N, w \in \Sigma ^* и \beta \in N ^* (в силу теоремы 8.8.3 такая грамматика существует). Положим \Gamma = N, Q = {1,2}, I = {1}, F = {2} и

\Delta =
\{ \lp \lp 1 , \varepsilon , \varepsilon \rp ,
\lp 2 , S \rp \rp \} \cup
\{ \lp \lp 2 , w , A \rp ,
\lp 2 , \beta \rp \rp \mid ( A \tto w \beta ) \in P \} .
Можно доказать, что \lp 2 , u , S \rp \overstar{\vdash}
\lp 2 , \varepsilon , \alpha \rp тогда и только тогда, когда существует левосторонний вывод \smash[b]{ S \overstar{\lmarrow} u \alpha } (здесь u \in \Sigma^* и \alpha \in N^* ).

Пример 10.2.2. Пусть \Sigma = \{ a , b , c , d \}. Контекстно-свободная грамматика

\begin{align*}
S \; & {\to} \; SS , \\
S \; & {\to} \; a , \\
S \; & {\to} \; bcTS , \\
T \; & {\to} \; cSS , \\
T \; & {\to} \; dTT 
\end{align*}
и МП-автомат \lalg \{ 1 , 2 \} , \Sigma , \{ S , T \} , \Delta ,
\{ 1 \} , \{ 2 \} \ralg, где
\begin{multiline*}
\Delta = \{
\lp \lp 1 , \varepsilon , \varepsilon \rp ,
\lp 2 , S \rp \rp ,\
\lp \lp 2 , \varepsilon , S \rp ,
\lp 2 , SS \rp \rp ,\
\lp \lp 2 , a , S \rp ,
\lp 2 , \varepsilon \rp \rp ,\
\\
\lp \lp 2 , bc , S \rp ,
\lp 2 , TS \rp \rp ,\
\lp \lp 2 , c , T \rp ,
\lp 2 , SS \rp \rp ,\
\lp \lp 2 , d , T \rp ,
\lp 2 , TT \rp \rp
\} ,
\end{multiline*}
\objectwidth={5mm} \objectheight={5mm} \let\objectstyle=\scriptstyle
\xymatrix {
  *=[o][F-]{1}
 \ar @`{+/l16mm/} [] ^{}
 \ar  "1,3"  ^{\varepsilon,\varepsilon:S}
& 
& *=[o][F=]{2}
 \rloop{-1,1} ^*!/r4mm/{\varepsilon,S:SS}
 \rloop{3,7} ^{a,S:\varepsilon}
 \rloop{1,0} ^{bc,S:TS}
 \rloop{3,-7} ^{c,T:SS}
 \rloop{-1,-1} ^*!/r4mm/{d,T:TT}
}
задают один и тот же язык.

Лемма 10.2.3. Каждый МП-автомат эквивалентен некоторому МП-автомату \lalg Q , \Sigma , \Gamma , \Delta , I , F \ralg, где |I| = 1, |F| = 1 и каждый переход \lp \lp p , x , \beta \rp ,
\lp q , \gamma \rp \rp \in \Delta удовлетворяет требованиям | x | \leq 1 и | \beta | + | \gamma | = 1.

Пример 10.2.4. Рассмотрим МП-автомат M \peq \lalg Q , \Sigma , \Gamma , \Delta , I , F \ralg, где Q \peq I \peq F \peq \{ 1 \}, \Sigma \peq \{ a , b , c , d \}, \Gamma \peq \{ A , B \},

\begin{multiline*}
\Delta \peq \{
\lp \lp 1 , a , A \rp ,
\lp 1 , \varepsilon \rp \rp ,\
\lp \lp 1 , b , B \rp ,
\lp 1 , \varepsilon \rp \rp ,\
\\
\lp \lp 1 , c , \varepsilon \rp ,
\lp 1 , A \rp \rp ,\
\lp \lp 1 , d , A \rp ,
\lp 1 , AB \rp \rp
\} .
\end{multiline*}
\objectwidth={5mm} \objectheight={5mm} \let\objectstyle=\scriptstyle
\xymatrix {
  *=[o][F=]{1}
 \ar @`{+/l16mm/} [] ^{}
 \rloop{-1,-1} ^*!/r3mm/{a,A:\varepsilon}
 \rloop{-1,1} ^*!/r3mm/{b,B:\varepsilon}
 \rloop{1,1} ^*!/l3mm/{c,\varepsilon:A}
 \rloop{1,-1} ^*!/l3mm/{d,A:AB}
}
Он эквивалентен МП-автомату M' \peq \lalg Q' , \Sigma , \Gamma , \Delta' , I , F \ralg, где Q' \peq \{ 1 , 2 , 3 \} и
\begin{multiline*}
\Delta' = \{
\lp \lp 1 , a , A \rp ,
\lp 1 , \varepsilon \rp \rp ,\
\lp \lp 1 , b , B \rp ,
\lp 1 , \varepsilon \rp \rp ,\
\lp \lp 1 , c , \varepsilon \rp ,
\lp 1 , A \rp \rp ,\
\\
\lp \lp 1 , d , A \rp ,
\lp 2 , \varepsilon \rp \rp ,\
\lp \lp 2 , \varepsilon , \varepsilon \rp ,
\lp 3 , B \rp \rp ,\
\lp \lp 3 , \varepsilon , \varepsilon \rp ,
\lp 1 , A \rp \rp
\} .
\end{multiline*}
\objectwidth={5mm} \objectheight={5mm} \let\objectstyle=\scriptstyle
\xymatrix {
  *=[o][F=]{1}
 \ar @`{+/l16mm/} [] ^{}
 \rloop{-1,-1} ^*!/r3mm/{a,A:\varepsilon}
 \rloop{-1,1} ^*!/r3mm/{b,B:\varepsilon}
 \rloop{1,1} ^*!/l3mm/{c,\varepsilon:A}
 \ar  "1,3"  ^{d,A:\varepsilon}
& 
& *=[o][F-]{2}
 \ar  "2,2"  ^{\varepsilon,\varepsilon:B}
\\
  %
& *=[o][F-]{3}
 \ar  "1,1"  ^{\varepsilon,\varepsilon:A}
& 
}

Пример 10.2.5. Рассмотрим МП-автомат M \peq \lalg Q , \Sigma , \Gamma , \Delta , I , F \ralg, где Q \peq I \peq F \peq \{ 1 \}, \Sigma \peq \{ a , b , c \}, \Gamma \peq \{ A \},

\Delta \peq \{
\lp \lp 1 , a , \varepsilon \rp ,
\lp 1 , A \rp \rp ,\
\lp \lp 1 , b , A \rp ,
\lp 1 , \varepsilon \rp \rp ,\
\lp \lp 1 , c , \varepsilon \rp ,
\lp 1 , \varepsilon \rp \rp
\} .
\objectwidth={5mm} \objectheight={5mm} \let\objectstyle=\scriptstyle
\xymatrix {
  *=[o][F=]{1}
 \ar @`{+/l16mm/} [] ^{}
 \rloop{0,1} ^{a,\varepsilon:A}
 \rloop{1,0} ^{b,A:\varepsilon}
 \rloop{0,-1} ^{c,\varepsilon:\varepsilon}
}
Он эквивалентен МП-автомату M' \peq \lalg Q' , \Sigma , \Gamma' , \Delta' , I , F \ralg, где Q' \peq \{ 1 , 2 \}, \Gamma' \peq \{ A , T \} и
\begin{multiline*}
\Delta' \peq \{
\lp \lp 1 , a , \varepsilon \rp ,
\lp 1 , A \rp \rp ,\
\lp \lp 1 , b , A \rp ,
\lp 1 , \varepsilon \rp \rp ,\
\\
\lp \lp 1 , c , \varepsilon \rp ,
\lp 2 , T \rp \rp ,\
\lp \lp 2 , \varepsilon , T \rp ,
\lp 1 , \varepsilon \rp \rp
\} .
\end{multiline*}
\objectwidth={5mm} \objectheight={5mm} \let\objectstyle=\scriptstyle
\xymatrix {
  *=[o][F=]{1}
 \ar @`{+/l16mm/} [] ^{}
 \rloop{0,1} ^{a,\varepsilon:A}
 \rloop{1,0} ^{b,A:\varepsilon}
 \ar  "2,1" <0.6mm> ^{c,\varepsilon:T}
\\
  *=[o][F-]{2}
 \ar  "1,1" <0.6mm> ^{\varepsilon,T:\varepsilon}
}

Пример 10.2.6. Рассмотрим МП-автомат M \peq \lalg Q , \Sigma , \Gamma , \Delta , I , F \ralg, где Q \peq I \peq F \peq \{ 1 , 2 \}, \Sigma \peq \{ a , b \}, \Gamma \peq \{ C \},

\begin{multiline*}
\Delta \peq \{
\lp \lp 1 , a , \varepsilon \rp ,
\lp 1 , C \rp \rp ,\
\lp \lp 1 , b , C \rp ,
\lp 1 , \varepsilon \rp \rp ,\
\\
\lp \lp 2 , b , \varepsilon \rp ,
\lp 2 , C \rp \rp ,\
\lp \lp 2 , a , C \rp ,
\lp 2 , \varepsilon \rp \rp
\} .
\end{multiline*}
\objectwidth={5mm} \objectheight={5mm} \let\objectstyle=\scriptstyle
\xymatrix {
  *=[o][F=]{1}
 \ar @`{+/l16mm/} [] ^{}
 \rloop{0,1} ^{a,\varepsilon:C}
 \rloop{0,-1} ^{b,C:\varepsilon}
& 
\\
  %
& *=[o][F=]{2}
 \ar @`{+/l16mm/} [] ^{}
 \rloop{0,1} ^{a,\varepsilon:C}
 \rloop{0,-1} ^{a,C:\varepsilon}
}
Он эквивалентен МП-автомату M' \peq \lalg Q' , \Sigma , \Gamma' , \Delta' , I' , F' \ralg, где Q' \peq \{ 0 , 1 , 2 , 3 \}, \Gamma' \peq \{ A , T \}, I' \peq \{ 0 \}, F' \peq \{ 3 \},
\begin{multiline*}
\Delta' \peq \Delta \cup \{
\lp \lp 0 , \varepsilon , \varepsilon \rp ,
\lp 1 , T \rp \rp ,\
\lp \lp 0 , \varepsilon , \varepsilon \rp ,
\lp 2 , T \rp \rp ,\
\\
\lp \lp 1 , \varepsilon , T \rp ,
\lp 3 , \varepsilon \rp \rp ,\
\lp \lp 2 , \varepsilon , T \rp ,
\lp 3 , \varepsilon \rp \rp
\} .
\end{multiline*}
\objectwidth={5mm} \objectheight={5mm} \let\objectstyle=\scriptstyle
\xymatrix {
  %
& *=[o][F-]{1}
 \rloop{0,1} ^{a,\varepsilon:C}
 \rloop{0,-1} ^{b,C:\varepsilon}
 \ar  "1,4"  ^{\varepsilon,T:\varepsilon}
& 
& *=[o][F=]{3}
\\
  *=[o][F-]{0}
 \ar @`{+/l16mm/} [] ^{}
 \ar  "1,2"  ^{\varepsilon,\varepsilon:T}
 \ar  "2,3"  _{\varepsilon,\varepsilon:T}
& 
& *=[o][F-]{2}
 \rloop{0,1} ^{a,\varepsilon:C}
 \rloop{0,-1} ^{a,C:\varepsilon}
 \ar  "1,4"  _{\varepsilon,T:\varepsilon}
& 
}

Теорема 10.2.7. Если язык L распознается некоторым МП-автоматом, то L является контекстно-свободным.

Доказательство. Пусть язык L распознается МП-автоматом \lalg Q , \Sigma , \Gamma , \Delta , I , F \ralg. Без ограничения общности можно считать, что I = \{ \qinitial \}, F = \{ \qaccept \} и каждый переход \lp \lp p , x , \beta \rp ,
\lp q , \gamma \rp \rp \in \Delta удовлетворяет требованию | \beta | + | \gamma | = 1. Построим искомую контекстно-свободную грамматику \lalg N , \Sigma , P , S \ralg, положив N = \{ A_{p,q} \mid p \in Q \commaand q \in Q \}, S = A_{ \qinitial , \qaccept } и

\begin{align*}
P &= \{ A_{p,p} \tto \varepsilon \mid p \in Q \} \cup {} \\
&\myqquad \cup
\{ A_{p,t} \tto x A_{q,r} y A_{s,t} \mid
\lp \lp p , x , \varepsilon \rp ,
\lp q , C \rp \rp \in \Delta ,\ \\
&\myqquad \hphantom{ {} \cup {} \{ } %\}
\lp \lp r , y , C \rp ,
\lp s , \varepsilon \rp \rp \in \Delta ,\
C \in \Gamma \commaand t \in Q
\} .
\end{align*}
Можно доказать, что \lp p , x , \varepsilon \rp \overstar{\vdash}
\lp q , \varepsilon , \varepsilon \rp тогда и только тогда, когда A_{p,q} \overstar{\Rightarrow} x (здесь x \in \Sigma ^* ).

Пример 10.2.8. МП-автомат M =
 \lalg \{ 1 , 2 \} , \Sigma , \Gamma , \Delta ,
 \{ 1 \} , \{ 2 \} \ralg, где \Sigma = \{ a , b \}, \Gamma = \{ D , E \},

\begin{multiline*}
\Delta = \{
\lp \lp 1 , ab , \varepsilon \rp ,
\lp 1 , E \rp \rp ,\
\lp \lp 1 , aa , E \rp ,
\lp 1 , \varepsilon \rp \rp ,\
\lp \lp 1 , b , \varepsilon \rp ,
\lp 2 , D \rp \rp ,\
\\
\lp \lp 2 , a , \varepsilon \rp ,
\lp 1 , D \rp \rp ,\
\lp \lp 2 , \varepsilon , D \rp ,
\lp 2 , \varepsilon \rp \rp ,\
\lp \lp 2 , b , E \rp ,
\lp 2 , \varepsilon \rp \rp
\} ,
\end{multiline*}
\objectwidth={5mm} \objectheight={5mm} \let\objectstyle=\scriptstyle
\xymatrix @=11mm{
  *=[o][F-]{1}
 \ar @`{+/l16mm/} [] ^{}
 \rloop{0,1} ^{ab,\varepsilon:E}
 \rloop{0,-1} ^{aa,E:\varepsilon}
 \ar  "1,2" <0.6mm> ^{b,\varepsilon:D}
& *=[o][F=]{2}
 \ar  "1,1" <0.6mm> ^{a,\varepsilon:D}
 \rloop{0,1} ^{\varepsilon,D:\varepsilon}
 \rloop{0,-1} ^{b,E:\varepsilon}
}
и контекстно-свободная грамматика
\begin{align*}
S \; & {\to} \; abTaaS , & T \; & {\to} \; abTaaT , \\
S \; & {\to} \; abSbU , & T \; & {\to} \; \varepsilon , \\
S \; & {\to} \; bUU , & U \; & {\to} \; aSU , \\
& & U \; & {\to} \; \varepsilon 
\end{align*}
задают один и тот же язык. Здесь S, T и U соответствуют символам A1,2, A1,1 и A2,2 из доказательства теоремы 10.2.7.

Упражнение 10.2.9. Найти МП-автомат, распознающий язык, порождаемый грамматикой

\begin{align*}
F \; & {\to} \; a F b , \\
F \; & {\to} \; a F a , \\
F \; & {\to} \; a .
\end{align*}

Упражнение 10.2.10. Найти контекстно-свободную грамматику, порождающую язык \{ w \in \{a,b\}^* \mid | w |_a = | w |_b \}

Упражнение 10.2.10. Найти контекстно-свободную грамматику, порождающую язык \{ w \in \{a,b\}^* \mid | w |_a \geq | w |_b \}

Упражнение 10.2.10. Найти контекстно-свободную грамматику, порождающую язык \{ w \in \{a,b\}^* \mid | w |_a = 2 | w |_b \}

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

Упражнение 2.1.25

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

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

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