formal_language_theory / lectures / unit_4
.pdfТеорема 4.10. Пусть G — несамовставленная КС-грамматика. Тогда L(G) — регулярное множество.
Доказательство. Нетрудно убедиться в том, что если исходная грамматика не является самовставленной, то и эквивалентные ей грамматики в нормальной форме Хомского и Грейбах — тоже несамовставленные.
121
Регулярность языка, порождаемого несамовставленной cfg
Поэтому, если G — несамовставленная грамматика, то мы можем найти грамматику
G1 = ( |
V |
N |
, VT, P1, S1) в нормальной форме |
|
|
1 |
|
Грейбах, эквивалентную грамматике G, которая тоже будет несамовставленной.
122
Регулярность языка, порождаемого несамовставленной cfg
Действительно, при получение НФХ исключение цепных правил, замена вхождений терминалов в правых частях правил на новые нетерминалы вида C, а затем ввод новых нетерминалов вида D, не вносит самовложенности относительно этих нетерминалов.
123
Регулярность языка, порождаемого несамовставленной cfg
Что касается получения нормальной формы Грейбах из НФХ, то подстановки на место крайнего слева нетерминала Aj в правилах вида Ai Aj (i j) только повышает индекс j, но не вносит самовставенности.
Исключение левой рекурсии из правил вида A A вводит новый нетерминал Z, который может быть самовставленым, если только нетерминал A
— самовставлен, чего нет.
Учитывая теорему 4.3 о приводимости любой cfg, “ложные” признаки самовставенности могут быть исключены из рассуждений.
124
Регулярность языка, порождаемого несамовставленной cfg
Рассмотрим левосторонний вывод в
грамматике G1 некоторой сентенциальной
формы x , где x VT , а VN . Докажем сначала, что
+ |
1 |
* |
|
если G1 имеет m нетерминалов и l — длина самой длинной правой части правил, то никакая сентенциальная форма не может иметь больше, чем ml нетерминалов.
125
Регулярность языка, порождаемого несамовставленной cfg
Чтобы убедиться в этом, предположим противное, что в некоторой сентенциальной форме x левостороннего вывода появляется больше, чем ml нетерминалов.
В дереве вывода цепочки x рассмотрим путь от корня к крайнему левому листу, помеченному нетерминалом (рис. 4.5).
126
Регулярность языка, порождаемого несамовставленной cfg
Ур. 1
Ур. 2
…
Ур. k
x = x1 x2 … xk
Терминалы
S
A
A
X1
X1
… Xp
… Xp-1
…
X2 …
X2 … Xp 1 Xp =
Нетерминалы
Рис. 4.5
127
Регулярность языка, порождаемого несамовставленной cfg
Узлы одного уровня представляют правую часть одного правила грамматики, породившего эти узлы.
Все узлы, расположенные справа от этого пути, также как и упомянутый лист, ещё не раскрывались с помощью правил. Именно они и образуют цепочку , состоящую из нетерминалов.
На каждом уровне, кроме самого нижнего, таких узлов не больше, чем l – 2. На нижнем же уровне их не больше, чем l – 1.
128
Регулярность языка, порождаемого несамовставленной cfg
Предположим, что в нашем дереве вывода k уровней. Тогда на всех уровнях узлов, порождающих , не больше, чем (l – 2)(k – 1) + l – 1. Всего таких узлов на всех k уровнях по предположению больше ml.
Следовательно,
(l – 2)(k – 1) + l – 1 ml + 1, откуда
k (ml–l+2) / (l–2) +1 = ml / (l–2) > ml / l = m.
Это, естественно, предполагает, что l > 2.
129
Регулярность языка, порождаемого несамовставленной cfg
Итак, уровней k в дереве вывода (длина пути, о котором шла речь) больше m, т. е. по крайней мере их m + 1.
Следовательно, на этом пути найдутся, по крайней мере, два узла, помеченных одним и тем же нетерминалом A.
В этом случае существует левосторонний
* |
+ |
1 |
|
|
|
|
|||
VT , VN |
, |
|||
вывод вида A zA , где z |
||||
G1 |
|
|
|
|
т. е. z , (l > 2). |
|
|
|
|
А это значит, что A — самовставленный |
нетерминал, что противоречит условию
теоремы. |
130 |
|