Лекция 4

Нормальная форма Хомского

Df $G \in \textrm{CFG}$ имеет нормальную форму Хомского (ХНФ)

$G \in G_\lambda$ и $\forall p \in G.P$ (кроме $S \rightarrow \lambda$) $p$ имеет вид $A \rightarrow BC$ или $A \rightarrow a$ для некоторых $A$, $B$ $\in G.\Gamma$ и $a \in \Sigma^*$

Th О форме Хомского

(1)

Df Цикл в грамматике $G$

Набор правил $A_1 \rightarrow A_2, A_2 \rightarrow A_3, …, A_{k-1} \rightarrow A_k ,A_k \rightarrow A_1 \subset G.P$ — цикл

Lm о циклах в грамматике (2)

$\forall G \in \textrm{CFG} \,\,\exists G’ \textrm{CFG} \, : \, G \textrm{ не имеет циклов и } G \overset{L}{=} G’$

Pf 2

Возьмем некоторую $G = (\Sigma, \Gamma, P, S) \in \textrm{CFG}$. По теореме о $\lambda$-свободных грамматиках мы можем считать, что $G$ уже является $\lambda$-свободной.
Рассмотрим граф: его вершины — нетерминалы, а ребра — правила: $J = (\Gamma, \left{uw \vert (u \rightarrow w) \in P \right})$.
В таком графе нет петель, а циклы в грамматике соответствуют циклам в графе. В каждом цикле $C = \left{A_1, A_2,…, A_n\right}$ заменим все нетерминалы $A_i$ на некоторый $A_k \in C$ и получим соответствующее правило, которое (вместе с другими правилами, не образующими циклы) и образует необходимую ациклическую грамматику.
Путем махания руками показали, что такое преобразование эквивалентно. Полное доказательство есть в ШурЗаме на 93 странице.

Pf 1

Приведем алгоритм приведения некоторой КСГ $G$ в ХНФ:

Все преобразования в этом алгоритме эквивалентны, значит мы доказали теорему путем построения и применения этого алгоритма.

Пример приведения к ХНФ

$G$: Еще один вариант генерации правильных скобочных последовательностей.
Для начала нужно привести к $\lambda$-свободной грамматике $G_0$:

$S’$ теперь аксиома.

Теперь можно приводить к ХНФ: Делаем первый шаг — убираем правила, в правой части которых есть терминалы вместе с нетерминалами и получаем $G_1$:

Делаем второй шаг — убираем правила, правая часть которых длиннее двух символов и получаем $G_2$:

Делаем третий шаг — убираем правила вида $A \rightarrow B$ (такое только одно) и получаем $G_4$ в ХНФ:

Теорема о накачке

Th о накачке

где выполняется TODO Доказательство большое и требует рисования треугольных деревьев, не совсем понятно, как это провернуть тут. К тому же Шур на лекции его не давал, так что черт его знает, нужно ли писать TODO
Доказательство можно посмотреть в ШурЗаме на странице 71.