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

UptoLike

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

18
Определение 2.8. Грамматика G = (V
N
, V
T
, P, S) является грамматикой типа 2
или
контекстно-свободной грамматикой, если каждое её правило имеет вид
A β∈ P, где AV
N
, β∈V
+
.
Вместо терминаконтекстно-свободная грамматика часто используют
аббревиатуру cfg (
context-free grammar) или сокращение КС-грамматика.
Замечание 2.2. Правило вида A →β позволяет заменить A на β независимо от
контекста, в котором появляется A.
Грамматика, приведенная в примере 2.1, является контекстно-свободной.
Пример 2.3. Рассмотрим интересную контекстно-свободную грамматику
G =(V
N
, V
T
, P, S), где V
N
={S, A, B}, V
T
={a, b},
P = {S aB, S bA, A a, A aS, A bAA, B b, B bS, B aBB}.
Покажем, что
L(G) = {x {a, b}
+
| #
a
x =#
b
x}, где #
a
x обозначает число букв
а в цепочке x, а #
b
x число букв b в той же цепочке.
Другими словами, язык, порождаемый этой грамматикой, состоит из
непустых цепочек, в которых число букв
а и b одинаково.
Докажем для
+
T
,
x
V
что
1)
S x тогда и только тогда, когда x состоит из равного числа букв a и b;
2)
A x тогда и только тогда, когда x имеет на одно a больше, чем b;
3)
B x тогда и только тогда, когда x имеет на одно b больше, чем a.
I. Необходимость (индукция по длине вывода
l 1).
База (l = 1) . Очевидно, утверждение 1) доказывать нет необходимости, т. к.
выводов такого вида длины 1 не существует.
Два других утверждения выполняются, поскольку выводы вида 2) и 3)
длины 1 существуют:
A a, B b, и число букв их результатов удовлетворяют
условиям #
a
a =#
b
a + 1 и #
a
b =#
b
b 1 соответственно.
Индукционная гипотеза. Предположим, что утверждения 1) – 3), выполня-
ются для всех
x, длина выводов которых меньше k (k 1).
Индукционный переход. Покажем, что они истинны для l = k + 1.
Если
S
x, то вывод должен начинаться либо с правила S aB, либо с
правила
S bA. В первом случае имеем S aB ax
1
= x, B
x
1
, так что по
индукционной гипотезе #
b
x
1
#
a
x
1
=1 и, следовательно, #
a
x =#
b
x.
Аналогичное рассуждение достигает цели, если вывод начинается с
правила
S bA.
Если A
x, то этот вывод может начаться либо с правила A aS, либо с
правила A bAA. В первом случае имеем A aS ax
1
= x, S
x
1
, так что по
индукционной гипотезе #
a
x
1
=#
b
x
1
и, следовательно, #
a
x #
b
x = 1.
Во втором случае имеем
A
bAA
bx
1
A bx
1
x
2
, A x
1
, A x
2
, k
1
+ k
2
= k,
так что по индукционной гипотезе, поскольку
k
1
< k и k
2
< k, выполняются
соотношения #
a
x
1
#
b
x
1
= 1, #
a
x
2
#
b
x
2
=1 и, следовательно, #
a
x #
b
x = 1.
Утверждение 3) доказывается аналогично 2).
*
*
*
1
k
k
⇒⇒
k
1
k
2
k
2
k
1
k
1
k+
k
k