Московский государственный университет имени М.В.Ломоносова
Опубликован: 09.07.2007 | Доступ: свободный | Студентов: 2131 / 680 | Оценка: 4.56 / 4.26 | Длительность: 20:40:00
ISBN: 978-5-9556-0062-8
Специальности: Математик
Лекция 12:

Дополнительные свойства контекстно-свободных языков

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

11.3. Представления контекстно-свободных языков посредством гомоморфизмов

Теорема 11.3.1. Рассмотрим алфавит \Sigma_0 = \{ a_1 , a_2 , b_1 , b_2 , c \} и язык L_0 \subseteq \Sigma_0^*, порождаемый контекстно-свободной грамматикой G0:

\begin{align*}
S \; & {\to} \; C b_1 b_2 b_1 R C , & A \; & {\to} \; a_1 , & R \; & {\to} \; \varepsilon , \\
C \; & {\to} \; c ,                 & A \; & {\to} \; a_2 , & R \; & {\to} \; T a_1 T b_1 , \\
C \; & {\to} \; c D C ,             & A \; & {\to} \; b_1 , & R \; & {\to} \; T a_2 T b_2 , \\
D \; & {\to} \; A ,                 & A \; & {\to} \; b_2 , & T \; & {\to} \; R , \\
D \; & {\to} \; A D ,               &      &                & T \; & {\to} \; R C C .
\end{align*}
Произвольный язык L \subseteq \Sigma^* является контекстно-свободным тогда и только тогда, когда существует такой гомоморфизм h \colon \Sigma^* \farrow \Sigma_0^*, что L = h-1(L0) или L = h^{-1} ( L_0 \cup \{ \varepsilon \} ).

Доказательство. Достаточность следует из теоремы 11.2.4. Приведем теперь идею доказательства необходимости (полное доказательство можно найти в [Сал, с. 103-109]).

Пусть дан произвольный контекстно-свободный язык L. Согласно теореме 8.4.6 язык L \sminus \{ \varepsilon \} порождается некоторой контекстно-свободной грамматикой \lalg \{ A_1 , \ldots , A_n \} , \Sigma , P , A_1 \ralg, в которой каждое правило имеет один из следующих трех видов: A_i \tto a, A_i \tto a A_j, A_i \tto a A_j A_k, где a \in \Sigma.

Определим вспомогательную функцию \bar{h}, ставящую в соответствие каждому символу из \Sigma конечный язык над алфавитом \Sigma_0 следующим образом:

\begin{align*}
\bar{h} ( a ) &=
 \{ b_1 b_2^i b_1 \mid ( A_i \tto a ) \in P \} \cup {} \\
&\qquad \cup
 \{ b_1 b_2^i b_1 a_1 a_2^j a_1 \mid ( A_i \tto a A_j ) \in P \} \cup {} \\
&\qquad \cup
 \{ b_1 b_2^i b_1 a_1 a_2^k a_1 a_1 a_2^j a_1 \mid
 ( A_i \tto a A_j A_k ) \in P \} .
\end{align*}
Искомый гомоморфизм h определяется следующим образом: если
\bar{h} ( a ) = \{ w_1 , w_2 , \ldots , w_k \} ,
положим
h ( a ) = c w_1 c w_2 c \ldots c w_k c .

Пример 11.3.2. Пусть \Sigma = \{ d , f , g \}. Рассмотрим язык L, порождаемый грамматикой

\begin{align*}
A_1 \; & {\to} \; f , \\
A_1 \; & {\to} \; d A_1 A_2 , \\
A_2 \; & {\to} \; f A_3 , \\
A_2 \; & {\to} \; f A_2 A_3 , \\
A_3 \; & {\to} \; g .
\end{align*}
Тогда L = h-1(L0), где гомоморфизм h задан равенствами

h(d) = cb1b2b1a1a2a2a1a1a2a1c,
h(f) = cb1b2b1cb1b2b2b1a1a2a2a2a1cb1b2b2b1a1a2a2a2a1a1a2a2a1c,
h(g) = cb1b2b2b2b1c.

Рассмотрим, например, слово d {} f f g \in L. Проверим, что слово h(dffg) выводится в грамматике G0 из теоремы 11.3.1. Очевидно, что S \overstar{\Rightarrow}
 c b_1 b_2 b_1 R c. С помощью последних пяти правил грамматики G0 можно вывести, что

R \mymathrel{\overstar{\Rightarrow}}
 a_1 a_2 a_2 a_1 a_1 a_2 a_1 C C b_1 b_2 b_1 C C
 b_1 b_2 b_2 b_1 a_1 a_2 a_2 a_2 a_1 C C
 b_1 b_2 b_2 b_2 b_1 .
Осталось найти такие шесть выводимых из C слов w_1 , \ldots , w_6, что
\begin{multiline*}
 h ( d {} f f g ) =
\\=
 c b_1 b_2 b_1
% a_1 a_2^2 a_1^2 a_2 a_1 w_1 w_2 b_1 b_2 b_1 w_3 w_4
 a_1 a_2^2 a_1 a_1 a_2 a_1 w_1 w_2 b_1 b_2 b_1 w_3 w_4
 b_1 b_2^2 b_1 a_1 a_2^3 a_1 w_5 w_6
 b_1 b_2^3 b_1 c
.
\end{multiline*}
Подходят слова

w1 = c,
w2 = c,
w3 = cb1b2b2b1a1a2a2a2a1cb1b2b2b1a1a2a2a2a1a1a2a2a1c,
w4 = cb1b2b1c,
w5 = cb1b2b2b1a1a2a2a2a1a1a2a2a1c,
w6 = c.

Теорема 11.3.3 (Теорема Хомского-Шютценберже). Язык L \subseteq \Sigma^* является контекстно-свободным тогда и только тогда, когда существуют такие натуральное число n, автоматный язык L1 над алфавитом \Sigma_n^{(\textup{D})} =
 \{ a_1 , b_1 , a_2 , b_2 , \ldots , a_n , b_n \} и гомоморфизм h \colon \bigl(\Sigma_n^{(\textup{D})}\bigr)^* \farrow \Sigma ^*, что L = h ( L_n^{(\textup{D})} \cap L_1 ), где L_n^{(\textup{D})} - язык Дика над 2n буквами.

Доказательство можно найти в [Лал, с. 331-333].

Упражнение 11.3.4. Рассмотрим язык L1, порождаемый грамматикой

\begin{align*}
S \; & {\to} \; a S b S , \\
S \; & {\to} \; \varepsilon ,
\end{align*}
и язык L2, порождаемый грамматикой
\begin{align*}
S \; & {\to} \; bb S a , \\
S \; & {\to} \; \varepsilon .
\end{align*}
Найти такой гомоморфизм h \colon \{a,b\}^* \farrow \{a,b\}^*, что
h(L_1 \cap \{ a^m b^n \mid m \geq 0 ,\ n \geq 0 \}) = L_2 .

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

Упражнение 2.1.25

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

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