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

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

< Лекция 9 || Лекция 10: 123456 || Лекция 11 >
Аннотация: В данной лекции рассматриваются основные свойства контекстно-свободных языков, приведены некоторые теоремы для класса линейных языков, а также доказательство того, что пересечение контекстно-свободного языка с автоматным языком является контекстно-свободным. Также приводятся практические примеры и упражнения для самостоятельной проработки

В "лекции 2" были доказаны лемма о разрастании и свойства замкнутости класса автоматных языков. Некоторые из этих теорем имеют аналоги для класса контекстно-свободных языков (разделы 9.1 и 9.4), но этот класс не замкнут относительно дополнения и пересечения (раздел 9.5).

Лемма о разрастании для контекстно-свободных языков формализует явление "периодичности" в этих языках. Для полноты картины в разделах 9.2* и 9.3 приведены некоторые аналогичные теоремы для класса линейных языков, хотя ни в теории, ни в практических приложениях класс линейных языков значительной роли не играет.

В разделе 9.6 доказывается, что пересечение контекстно-свободного языка с автоматным языком является контекстно-свободным. В сочетании с леммой о разрастании этот факт дает удобное средство, позволяющее во многих задачах доказать, что заданный язык не является контекстно-свободным. Еще одно необходимое условие контекстной свободности сформулировано в разделе 9.7*.

9.1. Лемма о разрастании для контекстно-свободных языков

Лемма 9.1.1 (pumping lemma, лемма о разрастании, лемма о накачке, лемма-насос) Пусть L - контекстно-свободный язык над алфавитом \Sigma. Тогда найдется такое положительное целое число p, что для любого слова w \in L длины не меньше p можно подобрать слова u , v , x , y , z \in \Sigma ^*, для которых верно uvxyz = w, v y \neq \varepsilon ( то есть v \neq \varepsilon или y \neq
\varepsilon ), | v x y | \leq p и u v ^i x y ^i z \in L для всех i \in \mathbb{N}.

Доказательство. Пусть язык L порождается грамматикой в нормальной форме Хомского G = \lalg N , \Sigma , P , S \ralg. Индукцией по k легко доказать, что для любого дерева вывода в грамматике G длина кроны дерева не превышает 2k-2, где k - количество вершин в самом длинном пути, начинающемся в корне дерева и заканчивающемся в некоторой вершине, помеченной символом из \Sigma.

Положим p = 2|N|. Пусть w \in L и | w | \geq p. Зафиксируем некоторое дерево вывода с кроной w в грамматике G. Рассмотрим самый длинный путь в этом дереве. Этот путь содержит не менее |N| + 2 вершин. Среди них найдутся две вершины с одинаковыми метками, причем их можно выбрать среди последних |N| + 2 вершин рассматриваемого пути. Выберем слова u, v, x, y и z так, что uvxyz = w, поддерево с корнем в одной из найденных вершин имеет крону x и поддерево с корнем в другой найденной вершине имеет крону vxy.

Из того что G - грамматика в нормальной форме Хомского, заключаем, что v x y \neq x. Неравенство | v x y | \leq 2^{ | N | } следует из того, что самый длинный путь в соответствующем слову vxy поддереве содержит не более |N| + 2 вершин. Для каждого i \in \mathbb{N} можно построить дерево вывода с кроной uvixyiz, комбинируя части исходного дерева вывода.

Пример 9.1.2. Рассмотрим язык L = \{ a^n b^n c^n \mid n \geq 0 \} над алфавитом {a,b,c}. Утверждение леммы 9.1.1 не выполняется ни для какого натурального числа p. Действительно, если uvxyz = apbpcp, |vy| > 0 и | v x y | \leq p, то |vy|a = 0 или |vy|c = 0. Следовательно, |uvvxyyz|a = p или |uvvxyyz|c = p. Так как |uvvxyyz| > 3p, то u v v x y y z \notin L. Из этого можно заключить, что язык L не является контекстно-свободным.

Теорема 9.1.3. Каждый контекстно-свободный язык над однобуквенным алфавитом является автоматным.

Доказательство. Пусть дан контекстно-свободный язык L над алфавитом {a}. Согласно лемме 9.1.1 найдется такое натуральное число p, что множество \{ k \in \mathbb{N} \mid a^k \in L \} является объединением некоторого семейства арифметических прогрессий, причем у каждой прогрессии первый член и шаг не больше числа p. Так как существует лишь конечное число прогрессий натуральных чисел с таким ограничением, рассматриваемое семейство конечно. Следовательно, язык L является автоматным (используем пример 2.1.18).

Упражнение 9.1.4. Является ли контекстно-свободным язык \{ w w \mid w \in \{a,b\}^* \}?

Упражнение 9.1.5. Является ли контекстно-свободным язык \{ a^i b^j c^k \mid 0 \leq i \leq j \leq k \}?

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

Упражнение 9.1.7. Является ли контекстно-свободным язык {am | m простое}?

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

Упражнение 9.1.9. Является ли контекстно-свободным язык \{ w \in \{a,b,c\}^* \mid | w |_a = | w |_b = | w |_c \}?

Упражнение 9.1.10. Является ли контекстно-свободным язык \{ a^n b w b a^m \mid w \in \{a,b\}^* ,\ | w |_a = n + m \}?

Упражнение 9.1.11. Является ли контекстно-свободным язык \{ u v w \mid u \in \{a,b\}^* ,\ v \in \{c,d\}^* ,\ w \in \{a,b\}^* ,\ | u |_a = | w |_b ,\ | v |_c = | v |_d \}?

Упражнение 9.1.12. Является ли контекстно-свободным язык \{ u v w \mid u \in \{a,b\}^* ,\ v \in \{c,d\}^* ,\ w \in \{a,b\}^* ,\ | u |_a = | v |_c ,\ | v |_d = | w |_b \}?

Упражнение 9.1.13. Является ли контекстно-свободным язык {akbmcn | k < max(m,n)}?

Упражнение 9.1.14. Является ли контекстно-свободным язык {akbmcn | k > max(m,n)}?

Упражнение 9.1.15. Является ли контекстно-свободным язык

\begin{multiline*}
 \{ a^n b^n a^n b^n \mid n \geq 0 \} \cup
 \{ a^{2k} b^{2k} a^m b^m \mid k \geq 0 ,\ m \geq 0 \} \cup
{}\\ \cup
 \{ a^k b^{2l} ba a^{2l} b^k \mid k \geq 0 ,\ m \geq 0 \} ?
\end{multiline*}

Упражнение 9.1.16. Какому классу принадлежит язык, порождаемый грамматикой

\begin{align*}
S \; & {\to} \; T c V , \\
T \; & {\to} \; b V , \\
V \; & {\to} \; a V a , \\
V \; & {\to} \; \varepsilon , \\
ac \; & {\to} \; a ?
\end{align*}

Упражнение 9.1.17. Существуют ли такие контекстно-свободные языки L_1 \subseteq \{a,b\}^* и L_2 \subseteq \{b,c\}^*, что язык L_1 \sminus L_2 не является контекстно-свободным?

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

Упражнение 2.1.25

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

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

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