Языки и трансляции. Мартыненко Б.К. - 61 стр.

UptoLike

Составители: 

60
Короче говоря, правила P
2
получаются из правил P
1
посредством
отбрасывания всех правил с нетерминалами B
j
в левых частях, а в оставшихся
правилах для нетерминалов A
i
все вхождения нетерминалов B
j
в правых частях
надо заменить какими-нибудь их терминальными порождениями. Поскольку
число таких терминальных порождений конечно, то и число получающихся
правил в P
2
тоже конечно.
Покажем теперь, что L(G
1
)=L(G
2
).
I. L(G
1
) L(G
2
). Индукцией по длине вывода l докажем, что если A
i
w, то
A
i
w, wV
T
*
(i = 1, 2, ..., k).
База. Пусть l = 1 и пусть A
i
w. При этом применялось правило A
i
wP
1
,
где wV
T
*
. Но это же правило есть в P
2
по построению. Поэтому A
i
w.
Индукционная гипотеза. Предположим, что утверждение выполняется
для всех выводов длиной l n (n 1).
Индукционный переход. Рассмотрим вывод длиной l = n +1, причём
A
i
C
1
C
2
... C
r
w
1
w
2
... w
r
, где C
p
w
p
, w
p
V
T
*
, l
p
n. На первом шаге приме-
няется правило A
i
C
1
C
2
... C
r
P
1
. Возьмем во множестве правил P
2
соответ-
ствующее правило, которое получается из данного заменой в нём всех
нетерминалов типа B на соответствующие w
p
, т.е. правило A
i
u
1
u
2
... u
r
P
2
, в
котором u
p
= w
p
, если C
p
V
T
{B
1
, B
2
, ..., B
k
}, u
p
= C
p
, если C
p
{A
1
, A
2
, ..., A
k
},
p = 1,2,...,r.
Таким образом, имеем A
i
u
1
u
2
... u
r
, причём здесь все u
p
= w
p
, кроме тех u
p
,
которые равны C
p
{A
1
, A
2
, ... , A
k
}. Но для них u
p
= C
p
w
p
, l
p
n, и по
индукционному предположению C
p
w
p
. Поэтому A
i
u
1
u
2
... u
r
w
1
w
2
... w
r
.
Итак, из A
i
w следует вывод A
i
w. Поскольку S{A
1
, A
2
, ... , A
k
}, то
L(G
1
) L(G
2
).
II. L(G
2
) L(G
1
). Пусть α β. Покажем, что α
β. Шаг вывода α
β
предполагает применение правила вида A
i
u
1
u
2
... u
r
P
2
. Его существование
обусловлено
существованием правила A
i
C
1
C
2
... C
r
P
1
, такого что либо C
i
= u
i
,
если u
i
V
T
, либо C
i
нетерминал типа B и C
i
u
i
(i = 1, 2, ... , r).
Следовательно, A
i
C
1
C
2
... C
r
u
1
u
2
... u
r
.
Таким образом, применение одного правила A
i
u
1
u
2
...u
r
P
2
в выводе
α β равносильно применению нескольких правил из множества P
1
, позво-
ляющих в цепочке α заменить A
i
на u
1
u
2
... u
r
, что даёт β.
Итак, каждый шаг вывода терминальной цепочки в грамматике G
2
может
быть заменен несколькими шагами вывода в грамматике G
1
, т.е. L(G
2
) L(G
1
).
Из рассуждений I и II следует, что L(G
1
)=L(G
2
).
Пример 4.3. Рассмотрим грамматику G
1
= ({S, A, B}, {a, b, c, d}, P
1
, S), где
P
1
= {S ASB, S AB, A a, A b, B c, B d}.
Легко видеть, что A порождает только цепочки a и b, а B порождает только
цепочки c и d. Однако, S порождает бесконечно много цепочек.
Правило
S ASB заменяется правилами S aSc, S aSd, S bSc,
S bSd. Аналогично, правило S AB заменяется правилами S ac, S ad,
S bc, S bd. Новая грамматика есть G
2
= ({S}, {a, b, c, d}, P
2
, S), где
P
2
= {S aSc, S aSd, S bSc, S bSd, S ac, S ad, S bc, S bd}.
1
G
l
2
*
G
1
G
2
G
2
G
2
G
1
G
n
1
p
G
l
1
p
G
l
2
*
G
2
*
G
2
*
G
1
*
G
1
*
G
2
G
2
G
1
G
2
G
1
G
1
*
G
1
*
G