Добавил:
ivanov666
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз:
Предмет:
Файл:Теория автоматов и формальных языков. Учебник.pdf

§ 2.3. Праволинейные грамматики 81
§ 2.3. Праволинейные грамматики
Напомним, что грамматикаG= (N,Σ
линейной, если все её правила имеют вид
, P, S
) называется право-
A → xB
или
A → x
, где
A, B ∈ N, x ∈ Σ∗. Можно ещё сильнее ограничить вид правил.
Оп ределен ие 54.
Порождающая грамматикаG= (N,Σ
, P, S
называется а в т о м а т н о й, если выполняются следующие два условия:
1)
все правила имеют вид либо
S → ε
, либо
A → a
, либо
A → aB
где a — терминал, A и B — нетерминалы;
2)
если есть правило
S → ε
, тоSне встречается в правых частях
других правил.
В отличие от праволинейных грамматик, автоматные грамматики порождают на каждом шаге ровно один терминальный символ.
Исключением может быть вывод
S ⇒ ε
, который необходим для
порождения пустого слова. Второе условие определения говорит, что
правило
S → ε
не может применяться в других выводах, так что это
исключение единственное.
Пр име р 29.
щей автоматной грамматикой G1:
Язык
L1=
{w ∈ {a, b }∗:
|w|aчётно }
порождается следую-
)
,
S → aT | bR | b | ε
T → aR | bT | a
R → aT | bR | b
НетерминалTозначает, что порождённая часть слова содержит нечёт-
ное число символовa, а нетерминалR— что, наоборот, чётное число.
СимволSнужен для того, чтобы порождать пустое слово. Для доказатель-
ства корректности грамматики нужно установить следующее свойство: если
w 6= ε, то
1) S ⇒∗wT тогда и только тогда, когда |w|aнечётно;
2) S ⇒∗wR тогда и только тогда, когда |w|aчётно.

82 Глава 2. Конечные автоматы и регулярные выражения
Утверждение доказывается индукцией по длине w.
Б а з и с и н д у к ц и и . Если
S ⇒ aT и S ⇒ bR. Утверждение выполняется, так как |a|a= 1, |b|a= 0.
Ш а г и н д у к ц и и . Пусть
реть четыре случая.
1)
Вывод имеет вид
нию |w|aнечётно, значит, |wa|a= |w|a+ 1 чётно.
2)
Вывод имеет вид
нию |w|aнечётно, значит, |wb|a= |w|aтакже нечётно.
3)
Вывод имеет вид
нию |w|aчётно, значит, |wa|a= |w|a+ 1 нечётно.
4)
Вывод имеет вид
нию |w|aчётно, значит, |wb|a= |w|aтакже чётно.
Наоборот, пусть имеется словоwдлины два или более. Снова рассмотрим
четыре случая.
1)
Если
|w|aчётно иw=va, то
положению
S ⇒∗wR.
2)
Если
|w|aчётно иw=vb, то
положению
S ⇒∗wR.
3)
Если
|w|aнечётно иw=va, то
положению
S ⇒∗wT .
4)
Если
|w|aнечётно иw=vb, то
предположению
S ⇒∗wT .
S ⇒∗wT ⇒ waR
S ⇒∗wT ⇒ wbT
S ⇒∗wR ⇒ waT
S ⇒∗wR ⇒ wbR
S ⇒∗vT
S ⇒∗vR
S ⇒∗vR
S ⇒∗vT
|w|
= 1, то возможны только два случая:
S ⇒∗wA
. Применяя далее правило
. Применяя далее правило
. Применяя далее правило
. Применяя далее правило
, где
A ∈ { T , R }
. По индукционному предположе-
. По индукционному предположе-
. По индукционному предположе-
. По индукционному предположе-
|v|aнечётно. По индукционному пред-
|v|aчётно. По индукционному пред-
|v|aчётно. По индукционному пред-
|v|aнечётно. По индукционному
. Нужно рассмот-
T → aR
R → bR
R → aT
T → bT
, получаем
, получаем
, получаем
, получаем
Теперь докажем, что L(G1) = L1.
Пусть
выводимы изS. Еслиw=va, то
S ⇒∗vT ⇒ va
S ⇒∗vR ⇒ vb.
w ∈ L1. Если
. Еслиw=vb, то
|w| 6
1, то либоw=ε, либоw=b. Оба эти слова
|v|aнечётно, поэтому существует вывод
|v|aчётно, поэтому существует вывод

§ 2.3. Праволинейные грамматики 83
Наоборот, пусть
либоw=ε, либоw=b, поэтому
S ⇒∗vT ⇒ va
имеет вид S ⇒∗vR ⇒ vb. Так как |v|aчётно, то |w|aтоже чётно.
Пр име р 30.
дается следующей автоматной грамматикой:
Вывод слова в этой грамматике напоминает его распознавание конечным автоматом. НетерминалыTиRозначают, что уже порождённое слово
не содержит
соответствует префиксу из символовb, аPпорождает произвольную последовательность символов после того, как подслово abb уже сформировано.
. Так как
abb
w ∈ L(G1), то есть
w ∈ L1. Еслиw=va, то вывод имеет вид
|v|aнечётно, то
Язык
L2=
{w ∈ {a, b }∗:
S → bS | aT
T → aT | bR
R → aT | bP | b
P → aP | bP | a | b
и заканчивается соответственно наaиab. Нетерминал
S ⇒∗w
|w|aчётно. Еслиw=vb, то вывод
w содержит подслово abb }
. Если
|w| 6
1, то снова
порож-
S
Рассмотренные примеры показывают, что автоматные грамматики очень похожи на конечные автоматы, только вместо состояний
используются нетерминалы. Мы докажем, что эти способы задания
языков, действительно, эквивалентны друг другу, а также праволинейным грамматикам. Сначала отметим простое свойство праволинейных грамматик: поскольку в каждом правиле такой грамматики
нетерминал стоит только на конце, то и в каждом выводимом слове
нетерминал тоже может стоять только на конце.
Ле мма 33.
Если
S ⇒∗α
ПустьG= (N,Σ
, то либо
α ∈
Σ∗, либоαимеет вид
, P, S
) — праволинейная грамматика.
wA
, где
A ∈ N .
Доказательство. Индукция по длине вывода.
Сначала докажем, что НКА можно преобразовать в автоматную
грамматику.
Теорема 34.
По любому конечному автомату можно построить
эквивалентную автоматную грамматику.
w ∈
Σ∗,

84 Глава 2. Конечные автоматы и регулярные выражения
Доказательство. Пусть
M
= (Q,Σ
, δ, q0, F
) — произвольный
НКА. По теореме 30 можно считать, чтоMне содержитε-команд.
Построим эквивалентную автоматную грамматикуG= (N,Σ
, P, S
В качестве нетерминалов возьмём состояния автомата и новый начальный нетерминал S:
N = Q ∪{ S }.
Добавим в P следующие правила:
1) если q, a → p ∈ δ, то q → ap ∈ P ;
2) если q, a → p ∈ δ и q ∈ F , то q → a ∈ P ;
3) если q0, a → p ∈ δ, то S → ap ∈ P ;
4) если q0, a → p ∈ δ и p ∈ F , то S → a ∈ P ;
5) если q0∈ F , то S → ε ∈ P .
Для любых
тогда и только тогда, когда (
p, q ∈ Q,w ∈
Σ∗выполняется следующее:
q, w)`n(
p, ε
). Докажем это утверждение
q ⇒nwp
индукцией по n.
Б а з и с и н д у к ц и и . Как
q ⇒0pw
, так и (
q, w)`0(
p, ε
) имеют
место тогда и только тогда, когда q = p, w = ε.
Ш а г и н д у к ц и и . Пусть
q ⇒nur ⇒ uap
матеMесть команда
, причём
ua=w,r → ap ∈ P
r, a → p
(q, u) `n(r, ε). Значит, (q, ua) `
Наоборот, пусть (
что (
q, u)`n(
есть правило
r, ε
) и
r → ap
q, w)`
r, a → p ∈ δ
. По индукционному предположению
n+1
Объединяя выводы, получаем q ⇒
n+1
q ⇒
wp
. Тогда вывод имеет вид
. По построению в авто-
. По индукционному предположению
n+1
(p, ε), то есть (q, w) `
(
p, ε
). Это значит, чтоw=ua, так
n+1
(p, ε).
. По построению в грамматике
q ⇒nur
n+1
uap, то есть q ⇒
n+1
wp.
G
Теперь докажем, что построенная грамматикаGэквивалентна
автомату M .
).
.

§ 2.3. Праволинейные грамматики 85
Сначала рассмотрим пустое слово. По построению
тогда и только тогда, когда
q0∈ F
. Поэтому
ε ∈ L(G
S → ε ∈ P
) тогда и только
тогда, когда ε ∈ L(M).
Теперь рассмотрим однобуквенные слова. Словоaвыводимо в
тогда и только тогда, когда
P
тогда и только тогда, когда существует состояние
p ∈ δ(q0, a
). Последнее же условие эквивалентно тому, что
S → a ∈ P
. Но такое правило попадает в
p ∈ F
такое, что
a ∈ L(M
Итак, a ∈ L(G) тогда и только тогда, когда a ∈ L(M ).
Наконец, рассмотрим слова длины больше единицы. Пустьw=
aub
, где
a, b ∈
Σ — первая и последняя буква,
u ∈
Σ∗— «середина»
слова w.
Если w ∈ L(G), то существует вывод S ⇒∗w. Вывод имеет вид
S ⇒ aq ⇒∗aup ⇒ aub.
Так как
построению вMесть команды
qf∈ F
(q, ub) `∗(p, b) ` (q
q ⇒∗up
, то согласно доказанному выше (
q0, a → qиp, b → qfдля некоторого
. Добавляя эти команды, получаем вычисление (
, ε), поэтому w ∈ L(M ).
f
Если
w ∈ L(M
), то (
q0, aub)`∗(
qf, ε
) для некоторого
q, u)`∗(
q0, aub)`
Вычисление автомата имеет вид
p, ε
). По
qf∈ F
G
).
.
(q0, aub) ` (q, ub) ` (p, b) ` (qf, ε)
для некоторых состоянийqиp. Поскольку в автомате есть команды
q0, a → qиp, b → qf, то по построению в грамматикеGесть правила
S → aqиp → b
q ⇒∗up
. Добавляя к этому выводу два правила, получаем
. Согласно доказанному выше утверждению имеем
S ⇒ aq ⇒
aup ⇒ aub, поэтому w ∈ L(G).
Если не требовать, чтобы в грамматике не былоε-правил, то опи-
санную конструкцию можно упростить. Пусть дан конечный автомат
M
= (Q,Σ
будут состояния автомата, причём
, δ, q0, F
). В грамматикеG= (Q,Σ
q0будет начальным нетерминалом.
, P, q0) нетерминалами
Правила определяются следующим образом:
∗

86 Глава 2. Конечные автоматы и регулярные выражения
1) если q, a → p ∈ δ, то q → ap ∈ P ;
2) если q ∈ F , то q → ε ∈ P .
Доказательства правильности этой конструкции аналогично дока-
зательству предыдущей теоремы.
Пр име р 31. Пусть задан следующий конечный автомат:
a b
нач q
закл q
закл q
Ниже приведены две грамматики, построенные по автомату. Левая
грамматика построена с помощью теоремы 34, а правая — с помощью
упрощённой конструкции после теоремы.
S → aq1| aq3| bq2| a
q0→ aq1| aq3| bq2| a q0→ aq1| aq3| bq
q1→ aq1| bq0| bq3| a | b q1→ aq1| bq0| bq3| ε
q2→ aq0| aq1| aq3| a q2→ aq0| aq1| aq
q3→ bq0| bq
2
q1, q
0
q
1
1
q2q0, q1, q
3
q
3
2
q0, q
3
3
q0, q
2
q3→ bq0| bq2| ε
2
3
Если бы состояние
q0было заключительным, то в первой грамматике
мы бы добавили правило S → ε, а во второй — правило q0→ ε.
Прежде чем получить обратный результат, докажем, что любую
праволинейную грамматику можно преобразовать в «почти» автоматную.
Ле мма 35.
По любой праволинейной грамматике можно построить эквивалентную праволинейную грамматику, в которой никакое
правило не содержит более одного терминала.
Доказательство. ПустьG= (N,Σ
, P, S
) — праволинейная грамматика. Назовём правило длинным, если оно содержит более одного
терминала. Проведём индукцию по сумме длин правых частей длинных правил.

§ 2.3. Праволинейные грамматики 87
Б а з и с и н д у к ц и и . Если сумма равна нулю, то длинных пра-
вил нет и ничего делать не надо.
Ш а г и н д у к ц и и . Пусть
Заменим его на два правила
нетерминал. Обозначим новую грамматику
L(G
) =L(
правил грамматики
G0). Кроме того, сумма длин правых частей длинных
G0на единицу меньше соответствующей суммы
A → awB
длинное правило (
A → aC,C → wB
w 6=ε
, где
C /∈ N
— новый
G0. Легко видеть, что
грамматикиG. Поэтому по индукционному предположению можно
построить праволинейную грамматику
чтоL(
G0) =L(
G00). ТогдаL(G) =L(
G00без длинных правил такую,
G00), поэтому грамматика
G
искомая.
Теперь докажем обратную теорему.
).
00
Теорема 36.
По любой праволинейной грамматике можно постро-
ить эквивалентный конечный автомат.
Доказательство. ПустьG= (N,Σ
, P, S
) — праволинейная грам-
матика. По лемме 35 можно считать, что все правила имеют вид
A → a,A → ε,A → aB,A → B
им конечный автоматM= (Q,Σ
, где
a ∈
, δ, S, {qf}
Σ,
A, B ∈ N
. Постро-
). Состояниями автомата
являются нетерминалы грамматики и специальное состояние qf:
Q = N ∪{qf}.
Начальным состоянием является начальный нетерминалS, а единственным заключительным состоянием является
qf. Программа авто-
мата определяется следующим образом:
1) eсли A → aB ∈ P , a ∈ Σ ∪{ε}, то A, a → B ∈ δ;
2) если A → a ∈ P , a ∈ Σ ∪ {ε}, то A, a → qf∈ δ.
Для любых
A ⇒nwB
A, B ∈ N,w ∈
Σ∗выполняется следующее свойство:
тогда и только тогда, когда (
A, w)`n(
B, ε
). Это утвер-
ждение доказывается индукцией поnаналогично утверждению из

88 Глава 2. Конечные автоматы и регулярные выражения
теоремы 34. Докажем с его помощью эквивалентность автомата и
грамматики.
Если
w ∈ L(G
S ⇒∗vA ⇒ va
утверждению выполняется (
M
есть команда
), то существует вывод
, причёмw=va,
S, v)`∗(
A, a → qf. Поэтому (
A → a ∈ P,a ∈Σ∪ {ε }
A, ε
S, va)`∗(
S ⇒∗w
. Вывод имеет вид
. По
), а по построению в автомате
A, a)`(qf, ε
), а значит,
w ∈ L(M ).
Если
Вычисление имеет вид (
A, a → qf∈ δ,a ∈Σ∪ {ε }
а по построению
w ∈ L(M
A → a ∈ P
), то существует вычисление (
S, va)`∗(
A, a)`(qf, ε
), причёмw=va,
. По утверждению выполняется
. Применяя это правило в конце вывода,
S, w)`∗(
S ⇒∗vA
qf, ε
получаем S ⇒∗vA ⇒ va, а значит, w ∈ L(G).
Пр име р 32. Рассмотрим праволинейную грамматику с правилами
S → aA | babA | a | ε
A → bbA | B | baa
B → S | aS | bA | a
).
,
Сначала применим к ней преобразование из леммы 35. Правило
babA
заменится на три правила
ным образом заменяются и правила
что при преобразовании правила
который использовался ранее. Это не приведёт к ошибке, так как в обоих
правилах он заменяется только наbA. Получается следующая грамматика:
S → aA | bX1| a | ε X3→ aX
X1→ aX
X2→ bA B → S | aS | bA | a
A → bX2| B | bX
2
S → bX1,
A → bbA
3
X1→ aX2и
A → bbAиA → bba
X4→ a
X2→ bA
. Заметим только,
мы написали нетерминал
4
. Аналогич-
S →
X2,

§ 2.3. Праволинейные грамматики 89
Применяя далее теорему 36, получаем следующий конечный автомат:
a b ε
нач S A, q
X1X
X
2
X
f
2
q
1
f
A
A X2, X3B
X3X
X
B S, q
закл q
4
q
4
f
A S
f
f
Из доказанных в этом параграфе теорем можно получить два
следствия.
Сл едствие 37.
По любой праволинейной грамматике можно по-
строить эквивалентную ей автоматную грамматику.
Доказательство. Сначала построим по праволинейной грамматикеGконечный автомат
в эквивалентный автомат
из теоремы 30, а затем построим по автомату
M
по теореме 36, затем преобразуем его
M0безε-команд с помощью конструкции
M0эквивалентную
автоматную грамматику G0по теореме 34.
Сл едствие 38. Любой автоматный язык контекстно-свободен.
Задачи
73. Докажите правильность грамматики из примера 30.
74.
Постройте автоматные грамматики, порождающие следующие языки, и до-
кажите их правильность:
(а) L1= { w ∈ { a, b }∗: w не содержит подслова bbaa };
(б) L2= { w ∈ { a, b }∗: |w|aчётно, |w|bнечётно };
(в) L3= { w ∈ { a, b, c }∗: w заканчивается на bac };
(г) L4= { w ∈ { a, b, c }∗: между любыми двумя соседними
символами a в слове w стоит нечётное число символов c }.
75. Докажите лемму 33.

90 Глава 2. Конечные автоматы и регулярные выражения
76.
Докажите теорему 34 для НКА с несколькими начальными состояниями (см.
задачу 68).
77.
Докажите, что грамматикиGи
78. Завершите доказательство теоремы 36.
79.
Докажите, что если начальное состояние не является заключительным, то в
доказательстве теоремы 34 можно обойтись без нового нетерминала S.
80.
Постройте автоматные грамматики эквивалентные следующим конечным
автоматам:
(а) M1= (
q3;
q3; q3, b → q0; q3, b → q1; q3, b → q2};
(б) M
q
q1; q3, a → q2; q4, a → q0; q4, a → q4; q4, b → q2; q4, b → q3}.
81. Постройте конечные автоматы, эквивалентные следующим грамматикам:
{ q0, q1, q2, q3}, { a, b }, q0, { q1, q3}, δ1), где
q0, b → q1;
= (
2
;
q0, b → q4;
1
q1, a → q2;
{ q0, q1, q2, q3, q4}, { a, b }, q0, { q0, q4}, δ2), где
q1, a → q0;
G0из доказательства леммы 35 эквивалентны.
δ1=
{ q0, a → q1;
q2, a → q1;
q1, a → q2;
q2, b → q0;
q1, b → q1;
q2, b → q3;
δ2=
q2, b → q1;
q3, a → q0;
{ q0, a → q0;
q2, b → q3;
q0, a →
q3, a →
q0, b →
q3, a →
(а) S → aA | bA | aB | bD | b
A → aA | bA | a | b
B → bA | bB | aC | a
C → aA | aC | aD
D → aS | bS | aA | bB | b
82.
Грамматика называется л е в о л и н е й н о й , если все правила имеют вид
A → Bx
что язык порождается леволинейной грамматикой тогда и только тогда, когда он
распознаётся конечным автоматом.
или
A → x
, где
A, B
— нетерминалы,x— терминальное слово. Докажите,
(б) S → aA | baB | C | b
A → abaA | aB | bB | ε
B → A | C | aS | a | b
C → A | aC | bC | aS | bS
§ 2.4. Регулярные выражения
Регулярные выражения являются алгебраическим способом описания языков. В отличие от автоматов и грамматик, они позволяют
определять языки индуктивно. Базисные выражения определяют
простейшие языки, а новые языки получаются из более простых с
помощью применения некоторых операций.
Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]
