Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Теория автоматов и формальных языков. Учебник.pdf
Скачиваний:
1
Добавлен:
08.09.2026
Размер:
2 Мб
Скачать
☆
§ 6.2. Бесполезные нетерминалы 281
были введены для единообразных обозначений новых нетерминалов. Грам­матику можно было бы записать и в таком виде:
S → AD | a D → BE A → SF | bS E → AB B → ε | C | BG F → ab C → bE | SS G → SA
Заметим также, что конструкция из теоремы дала грамматику не наи­меньшего размера. Правило правила
S →[AB][AB
] и [AB]
S → ABAB
→ AB
, тогда нетерминал [
можно было заменить на два
BAB
] оказался
бы не нужен.
Задачи
224. Зачем в доказательстве теоремы 145 нужна грамматика G2?
225.
По следующей грамматике постройте эквивалентную бинарную грамматику:
S → SaSbA | BAA | aaa
A → AB | BA | a | bb
B → aaabb | SbAB | A | ε
226.
Докажите, что любой КС-язык порождается КС-грамматикой такой, что в
любом её правиле A → X1. . . Xkвсе символы X1, . . . , Xkпопарно различны.
227.
ПустьG— произвольная КС-грамматика, а грамматика, построенная с помощью алгоритма из теоремы 146. Докажите, что если G однозначна, то G0также однозначна.
228.
КС-грамматика называется о б р а т и м о й , если в ней нет двух правил с оди­наковой правой частью. Докажите, что любой КС-язык порождается обратимой грамматикой.
G0— эквивалентная ей бинарная
§ 6.2. Бесполезные нетерминалы
КС-грамматика может содержать нетерминалы, которые не могут встречаться в выводах терминальных слов. Например, если грамма­тика содержит правила
S → a | A, A → AA, B → aa,
282 Глава 6. Нормальные формы КС-грамматик
то нетерминалAне может быть устранён из слова, а до нетерминала
B
вывод вообще не может дойти. Мы опишем процедуру, которая
позволяет найти все такие нетерминалы и упростить грамматику.
Оп ределен ие 98.
называется п у с т ы м , еслиL(
НетерминалAКС-грамматикиG= (N,Σ
GA) =∅. В противном случае нетер-
, P, S
минал называется н е п у с т ы м.
НетерминалAпуст, если из него не выводимо никакое терминаль­ное слово. Пустые нетерминалы не влияют на язык, порождаемый грамматикой. Поэтому грамматику можно упростить, удалив их. Для поиска всех непустых нетерминалов построим последовательность множеств Niследующим образом:
N0= {A ∈ N : существует правило A → α ∈ P такое, что α ∈ Σ∗},
N
= Ni∪ {A ∈ N : существует правило
i+1
A → α ∈ P такое, что α ∈ (Σ ∪ Ni)∗}.
Докажем, что начиная с некоторого места множества
Niначинают
повторяться.
Ле мма 147. Если Ni= N
, то Ni= N
i+1
для всех j > 0.
i+j
Доказательство. Индукция по j.
Б а з и с и н д у к ц и и . Приj= 0 равенство
При j = 1 равенство Ni= N
Ш а г и н д у к ц и и . Пусть
выполняется по условию.
i+1
Ni=
N
i+j
, где
Ni=
Niвыполняется.
j >
1. По определению
)
N
i+j+1
= N
∪ {A ∈ N : существует правило
i+j
A → α ∈ P такое, что α ∈ (Σ ∪ N
Заменяя в этом равенстве N
N
= Ni∪ {A ∈ N : существует правило
i+j+1
)∗}.
i+j
на Ni, получаем
i+j
A → α ∈ P такое, что α ∈ (Σ ∪ Ni)∗}.
§ 6.2. Бесполезные нетерминалы 283
Но последнее выражение по определению равно что N
i+j+1
= N
i+1
= Ni.
Ле мма 148. Существует такое i, что Ni= N
N
. Отсюда следует,
i+1
.
i+1
Доказательство. Действительно, если такогоiнет, то для всех
i
выполняется строгое включение
Ni⊂ N
. Поэтому каждое следу-
i+1
ющее множество содержит по крайней мере на один элемент больше, чем предыдущее. Значит,
|Ni| > i,|N
|N|+1
| > |N |
, что невозможно.
Из этих двух лемм следует, что начиная с некоторого места по­следовательность что
Ni=
N
i+j
следующей лемме сформулировано главное свойство множества
Ле мма 149.
A ∈ N
кон
.
Доказательство. Предположим, чтоAнепуст. Тогда
Niперестаёт меняться, то есть существует такоеi,
при
j >
0. Обозначим это множество через
Нетерминал
A
непуст тогда и только тогда, когда
N
A ⇒iw
кон
N
. В
кон
для некоторого терминального словаwи некоторого числаi. Проведём индукцию по i.
Б а з и с и н д у к ц и и . Если
A ⇒1w
, то в грамматике есть пра-
вило A → w, поэтому A ∈ N0.
Ш а г и н д у к ц и и . Пусть A ⇒
i+1
w. Вывод имеет вид
.
A ⇒ u1B1u2B2. . . ukBku
где
Bj— нетерминалы,
uj— терминальные слова. По лемме о выво-
димости конкатенации словоwимеет видw=
i
при этом все нетерминалы дующем шаге и A попадает в N
Предположим теперь, что
Bj⇒
j
vjдля
ij6 i
. По индукционному предположению
Bjпринадлежат множеству
.
кон
A ∈ N
. Это значит, что
кон
k+1
⇒iw,
u1v1u2v2. . . ukvku
N
. Но тогда на сле-
кон
A ∈ Niдля
k+1
некоторогоi. Выберем наименьшее из такихiи проведём индукцию по i.
Б а з и с и н д у к ц и и . Если
A ∈ N0, то в грамматике есть правило
вида A → α, где α ∈ Σ∗. Но тогда A ⇒ α, поэтому A непуст.
,
284 Глава 6. Нормальные формы КС-грамматик
Ш а г и н д у к ц и и . Пусть
существует правило
A → u1B1u2B2. . . ukBku
A ∈ N
. Поскольку
i+1
k+1
, где
A /∈ Ni, то
Bj∈ Ni,
uj—
терминальные слова для всехj. По индукционному предположению нетерминалы
Bjнепусты, то есть
Bj⇒∗vjдля некоторых терми-
нальных слов vj. Объединяя выводы, получаем
A ⇒ u1B1u2B2. . . ukBku
⇒∗u1v1u2B2. . . ukBku
k+1
⇒∗. . . ⇒∗u1v1u2v2. . . ukvku
k+1
⇒
∗
.
k+1
Следовательно, A непуст.
Если начальный нетерминал грамматикиGпуст, то грамматика порождает пустой язык. Такая грамматика не эквивалентна никакой грамматике без пустых нетерминалов, так как по определению хотя бы один нетерминал должен быть (начальный). Всюду далее мы будем предполагать, что начальный нетерминал непуст.
Теорема 150.
По любой КС-грамматике можно построить эквива-
лентную КС-грамматику без пустых нетерминалов.
Доказательство. ПустьG= (N,Σ грамматика. Сначала вычислим множество
P
все правила, содержащие хотя бы один пустой нетерминал. Более
формально, положим G1= (N
, Σ, P1, S), где
кон
, P, S
) — произвольная КС-
N
, а затем удалим из
кон
P1= P ∩ (N
кон
× (N
кон
∪ Σ)∗).
Докажем, что L(G) = L(G1).
ВключениеL( ложим, что
S ⇒
∗
G
воде:
w=w1w2w3, так что
G1)
∗
S ⇒
G
αAβ ⇒
⊆ L(G
w
. Пусть нетерминалAвстретился в этом вы-
∗
G
) очевидно, так как
w
. По лемме о выводимости конкатенации
α ⇒
∗
w1,
G
A ⇒
∗
w2,
G
β ⇒
P1⊆ P
∗
w3. Значит,
G
. Предпо-
A
непуст. Итак, все нетерминалы, встретившиеся в выводе непусты, зна­чит, этот вывод является также выводом в грамматике
G1. Поэтому
L(G) = L(G1).
§ 6.2. Бесполезные нетерминалы 285
Пр име р 89.
Вычислим последовательность множеств Ni.
N0= {A }, так как в грамматике есть правило A → a
N1= {A, C }, так как в грамматике есть правило C → AbA
N2= {A, C, S }, так как в грамматике есть правило S → CbA
N3= N2, так как новые нетерминалы не добавляются
Итак, содержащие их правила, получаем следующую грамматику:
Удалим пустые нетерминалы из КС-грамматики с правилами
S → aAB | CbA | bD | SC C → Sb | CDC | AbA A → a | bC | SaA D → DS | aBb | BB B → BBB | AbD | SaD
N
=
кон
{A, C, S }
, поэтому нетерминалыBиDпусты. Удаляя
S → CbA | SC
A → a | bC | SaA
C → Sb | AbA
Теперь изучим другой тип бесполезных нетерминалов.
Оп ределен ие 99.
НетерминалAКС-грамматикиG= (N,Σ
называется д о с т и ж и м ы м , если существует вывод вида
αAβ
. В противном случае нетерминал называется н е д о с т и ж и -
м ы м.
Чтобы найти недостижимые нетерминалы, построим последова­тельность множеств Riследующим образом:
, P, S
S ⇒
)
∗
G
R0= {S }
R
= Ri∪ {A ∈ N : существует правило ,
i+1
Так же как и для множеств такое, что
R
.
кон
R
i+j
=
Riдля всех
B → αAβ ∈ P такое, что B ∈ Ri}.
Niдоказывается, что существует
j >
0. Обозначим это множество через
i
286 Глава 6. Нормальные формы КС-грамматик
Ле мма 151.
A ∈ R
кон
НетерминалAдостижим тогда и только тогда, когда
.
Доказательство. Предположим, чтоAдостижим. Тогда су- ществует вывод
S ⇒iαAβ
для некоторогоi. Проведём индукцию
по i.
Б а з и с и н д у к ц и и . Приi= 0 вывод имеет вид
S ⇒0S
. Значит,
A = S и A ∈ R0.
Ш а г и н д у к ц и и . Пусть
S ⇒iγ ⇒ αAβ
. ЕслиγсодержитA, то
S ⇒
i+1
αAβ
. Тогда вывод имеет вид
A ∈ R
по индукционному
кон
предположению. Если же γ не содержит A, то вывод имеет вид
S ⇒iγ1Bγ2⇒ γ1δ1Aδ2γ2.
На последнем шаге применялось правило онному предположению
B ∈ R
. Следовательно,Aпопадает в
кон
B → δ1Aδ2, а по индукци-
R
кон
на следующем шаге.
Предположим теперь, что
A ∈ R
. Это значит, что
кон
A ∈ Riдля
некоторогоi. Выберем наименьшее из такихiи проведём индукцию по i.
Б а з и с и н д у к ц и и . Если
A ∈ R0, тоA=S. Так как
S ⇒0S
то S достижим.
Ш а г и н д у к ц и и . Пусть
ет правило
B
достижим, то есть существует вывод
B → αAβ
, где
следнему слову правило
A ∈ R
. Так как
i+1
A /∈ Ri, то существу-
B ∈ Ri. По индукционному предположению
B → αAβ
S ⇒∗γBδ
, получаем вывод
. Применяя к по-
S ⇒∗αγAδβ
Следовательно, A достижим.
Теперь покажем, как удалить из КС-грамматики недостижимые нетерминалы.
,
.
Теорема 152.
По любой КС-грамматике можно построить эквива-
лентную КС-грамматику без недостижимых нетерминалов.
Доказательство. ПустьG= (N,Σ
, P, S
) — произвольная КС-
грамматика. Как и в случае пустых нетерминалов, сначала вычислим
§ 6.2. Бесполезные нетерминалы 287
множество
R
, а затем удалим изPвсе правила, содержащие хотя
кон
бы один недостижимый нетерминал. Более формально, положим
G1= (R
, Σ, P1, S), где
кон
P1= P ∩ (R
кон
× (R
кон
∪ Σ)∗).
Докажем, что L(G) = L(G1).
Поскольку
P1⊆ P
, тоL(
G1)
⊆ L(G
). Наоборот, пусть
S ⇒
∗
w
G
Тогда все нетерминалы, встретившиеся в этом выводе, достижимы, поэтому вывод является выводом и в грамматике
G1. Значит,L(G) =
L(G1).
Пр име р 90.
вилами
Вычислим последовательность множеств Ri.
R0= {S }, по определению
R1= {S, A, D }, так как в грамматике есть правила S → AaS и S → DD
R2= {S, A, D, E }, так как в грамматике есть правило D → DE
R3= R2, так как новые нетерминалы не добавляются
Удалим недостижимые нетерминалы из грамматики с пра-
S → AaS | DD | D C → SA | aCa | bD A → DAD | b | AA D → DE | EA | ε B → aC | DSb | a E → ESa | bb
.
Итак,
R
=
{S, A, D, E }
кон
Удаляя содержащие их правила, получаем следующую грамматику:
S → AaS | DD | D D → DE | EA | ε A → DAD | b | AA E → ESa | bb
Оп ределен ие 100.
, поэтому нетерминалыBиCнедостижимы.
Нетерминал называется б е с п о л е з н ы м ,
если он пуст или недостижим.
Применяя теоремы 150 и 152, мы получаем основной результат о бесполезных нетерминалах.
Теорема 153.
По любой КС-грамматике можно построить эквива-
лентную КС-грамматику без бесполезных нетерминалов.
288 Глава 6. Нормальные формы КС-грамматик
Доказательство. ПустьG= (N,Σ
, P, S
) — произвольная КС­грамматика. Сначала удалим из неё пустые нетерминалы. Получится КС-грамматика мые нетерминалы. Получится КС-грамматика
G1= (
N1,Σ, P1, S
). Затем удалим из
G2= (
G1недостижи-
N2,Σ, P2, S
Докажем, что G2— искомая грамматика.
Грамматика
также
G1и
G2эквивалентаG, так какGи
G2эквивалентны.
G2не содержит недостижимых нетер-
G1эквивалентны, а
миналов (они были удалены на втором шаге). Осталось доказать, что после удаления недостижимых нетерминалов не появились пустые нетерминалы. Пусть тики
G2. Он достижим в
существует вывод
A ∈ N2— произвольный нетерминал грамма-
S ⇒
G1, иначе он бы не попал в
∗
αAβ
G
. Так как все нетерминалы грамматики
1
G2. Поэтому
G1непусты, то существуют терминальные словаx,y,zтакие, что α ⇒
∗
G
1
x,A ⇒
∗
G
1
y,β ⇒
∗
z
. Поэтому
G
1
S ⇒
∗
xyz
G
. Все нетерминалы,
1
встретившиеся в этом выводе достижимы, поэтому вывод является выводом и в грамматике ся нетерминала (включаяA) в
G2. Но тогда из каждого встретившего-
G2выводимо терминальное слово.
Следовательно, A непуст.
Заметим, что нельзя сначала удалить недостижимые нетерминалы,
а затем пустые.
Пр име р 91. Рассмотрим грамматику с правилами
).
S → b | A, A → AB, B → a
Если мы удалим пустые нетерминалы, то останутся правила После удаления недостижимых нетерминалов получится грамматика с единственным правилом нетерминалы, а затем пустые, то на первом шаге грамматика не изменится, а на втором шаге получатся правила недостижимый нетерминал B.
S → b
. Если же мы сначала удалим недостижимые
S → b,B → a
. Как видим, остался
S → b,B → a
Задачи
229. Удалите бесполезные нетерминалы из следующих КС-грамматик:
.
§ 6.3. Пустые правила 289
(а) S → AbA | BC | AS
A → AB | AA | b B → DC | bD | C B C → CC | aS b | DD D → BD | BaB
230.
Докажите, что
вывода высоты не более i + 1 в грамматике GA.
231.
Докажите, что
S ⇒jαAβ для некоторого j 6 i.
232.
Предложите эффективные реализации алгоритмов для удаления пустых и
недостижимых нетерминалов и оцените их временную сложность.
A ∈ Niтогда и только тогда, когда существует полное дерево
A ∈ Riтогда и только тогда, когда существует вывод вида
(б) S → SS | b | AaB | C C
A → BA | ε | CaD B → S Ba | BB | aa C → CC | aC | C b D → a | bD
§ 6.3. Пустые правила
В параграфе 1.4 мы упоминали, что в КС-грамматиках, в отличие от КЗ-грамматик, допустимы правила с пустой правой частью. Теперь мы докажем, что КС-грамматику можно перестроить так, чтобы в ней не было таких правил, за исключением, быть может, правила S → ε.
Оп ределен ие 101.
это правило вида A → ε.
П у с т о е п р а в и л о (илиε- п р а в и л о ) —
Чтобы найти все нетерминалы, из которых выводимо пустое слово, построим последовательность множеств Ei:
E0= {A ∈ N : A → ε ∈ P },
E
= Ei∪ {A ∈ N : существует правило
i+1
A → α ∈ P такое, что α ∈ E
Как и для пустых нетерминалов, доказывается существование множества
Ле мма 154. A ⇒∗ε тогда и только тогда, когда A ∈ E
E
, начиная с которого последовательность не меняется.
кон
кон
.
Доказательство. Пусть A ⇒iε. Проведём индукцию по i.
∗
}.
i
290 Глава 6. Нормальные формы КС-грамматик
Б а з и с и н д у к ц и и . Если
A ⇒1ε
, то в грамматике есть правило
A → ε, поэтому A ∈ E0.
Ш а г и н д у к ц и и . Пусть A ⇒
i+1
ε. Вывод имеет вид
A ⇒ B1. . . Bk⇒iε,
причём все символы
i
Bj⇒ Bj∈ E
j
кон
Пусть
ε
, где
, поэтому A попадает в E
A ∈ E
Bjявляются нетерминалами. По следствию 116
ij6 i
кон
. Значит, по индукционному предположению
на следующем шаге.
кон
. Это значит, что
A ∈ Eiдля некоторогоi. Выберем
наименьшее из таких i и проведём индукцию.
Б а з и с и н д у к ц и и . Если
A ∈ E0, то в грамматике есть правило
A → ε, поэтому A ⇒ ε.
Ш а г и н д у к ц и и . Пусть
ствует правило
A → B1. . . Bkтакое, что
индукционному предположению
A ∈ E
i+1
Bj⇒∗ε
. Так как
Bj∈ E
A /∈ Ei, то суще-
для всехj. По
кон
. Следовательно, существует
вывод
A ⇒ B1. . . Bk⇒∗B2. . . Bk⇒∗. . . ⇒∗ε.
Если в КС-грамматикеGвыводимо пустое слово, то языкL(G) не порождается никакой КС-грамматикой безε-правил. С учётом этого замечания грамматики без пустых правил определяются следующим образом.
Оп ределен ие 102.
КС-грамматикаG= (N,Σ
, P, S
) называется грамматикой б е зε- п р а в и л, если выполняется одно из двух условий:
1) либо G вообще не содержит пустых правил;
2)
либоGсодержит единственное пустое правило
S → ε
, а нетер-
минал S не встречается в правых частях правил.
Таким образом, в грамматике безε-правил пустое правило мо­жет применяться только на первом шаге и не может применяться в середине вывода.
Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]