Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Теория автоматов и формальных языков. Учебник.pdf
Скачиваний:
1
Добавлен:
08.09.2026
Размер:
2 Мб
Скачать
☆
§ 1.4. Порождающие грамматики 41
его код code(α) в алфавите
∆ = Σ1∪ {[#1a], [a#2] : a ∈ Σ1}∪
∪ {[qa], [#1qa], [qa#2], [q#1a], [aq#2] : a ∈ Σ1, q ∈ Q }.
Подчеркнём, что выражения вида [
. . .
] являются цельными символа­ми, а не словами, состоящими из скобок и других букв. Определим гомоморфизм ϕ : ∆∗→ Σ
∗
следующим образом (здесь a ∈ Σ1):
1
ϕ(a) = a ϕ([#1qa]) = #1qa ϕ([#1a]) = #1a ϕ([qa#2]) = qa# ϕ([a#2]) = a#
ϕ([q#1a]) = q#1a
2
ϕ([qa]) = qa ϕ([aq#2]) = aq#
Тогда кодом слова Постаαбудет слово чтоϕ(
code(α
)) =α. Так как гомоморфизмϕразнозначный, то код сло-
code(α
ва Поста определён однозначно. Например, слово Поста #1aΛq1b записывается как [#1a
]Λ[
q1b
][Λ#2], а слово Поста #1baΛaq4#2— как
2
2
) в алфавите ∆ такое,
Λ#
[#1b]aΛ[aq4#2].
Дальнейшее доказательство аналогично доказательству теорем 12
и 14. Сначала мы построим полусистему ТуэT= (∆
, U
), выводы в которой представляют работу автоматаM. Далее символcобозначает произвольный символ из алфавита Σ1.
1)
Если в автомате есть команда
q, a → p, b,
+1,
a 6
= #1, то добавим
в U правила
2
[qa]c → b[pc], [#1qa]c → [#1b][pc], [qa#2] → [bp#2].
2)
Если в автомате есть командаq,#1→ p,
#1,
+1, то добавим
правило
[q#1c] → [#1pc].
42 Глава 1. Формальные грамматики и языки
3)
Если в автомате есть команда
q, a → p, b, −1,a 6
= #2, то добавим
правила
c[qa] → [pc]b, c[qa#2] → [pc][b#2], [#1qa] → [p#1b].
4)
Если в автомате есть командаq,#2→ p,
#2, −
1, то добавим
правило
[cq#2] → [pc#2].
5)
Если в автомате есть команда
q, a → p, b,0,a /∈ {
#1,
#2}
, то
добавим правила
[qa] → [pb], [#1qa] → [#1pb], [qa#2] → [pb#2].
6)
Если в автомате есть командаq,#1→ p,
#1,
0, то добавим
правила
[q#1c] → [p#1c].
7)
Если в автомате есть командаq,#2→ p,
#2,
0, то добавим
правила
[cq#2] → [cp#2].
Непосредственно из определений следует, что для любых слов Постаαиβвыполняется следующее свойство: тогда, когда code(α) ⇒
n
code(β).
T
α `
n
β
тогда и только
M
Теперь построим неукорачивающую грамматикуG, порождаю­щуюL. Её терминальным алфавитом является Σ1, а нетерминаль­ным — множествоN= (∆\Σ1) минал. Сначала для каждого правила правило
β → α
. Кроме того, добавим следующие правила (здесьaи
∪ {R, S }
, гдеS— начальный нетер-
α → β
изTдобавим в
G
b обозначают произвольные символы из Σ1):
S → [#1a]R [#1q0a]b → a[q0b] R → aR [q0a]b → a[q0b] R → [aqf#2] [q0a][b#2] → ab
[#1a][bqf#2] → ab
§ 1.4. Порождающие грамматики 43
Три правила из левого столбца «отмеряют» участок ленты, на ко­тором будут проводиться вычисления, и угадывают заключительное слово Поста. Затем применяются «перевёрнутые» правила полуси­стемы ТуэT, которые преобразуют заключительное слово Поста в начальное. Четыре правила из правого столбца заменяют в начальном слове Поста двойников на «настоящие» символы из Σ. Построенная грамматика позволяет порождать все слова изLдлины два и более. Если вLесть другие слова
S → w1, . . . , S → wk.
Сл едствие 16. Существует PSPACE-полный КЗ-язык.
Доказательство. Множество всех тождественно истинных буле­вых формул с кванторами принадлежит классу PSPACE-полным. Оно и будет требуемым КЗ-языком.
Итак, мы видим, что КЗ-грамматики также весьма выразительны несмотря на то, что они порождают «всего лишь» класс В частности, они очень сложны для анализа. Поэтому большое зна­чение имеют грамматики ещё более специального вида.
Третий класс грамматик иерархии Хомского — грамматики типа 2. Другие названия этих грамматик — к о н т е к с т н о - с в о б о д н ы е грамматики (КС-грамматики), б е с к о н т е к с т н ы е грамматики
(Б-грамматики).
w1, . . . , wk, то нужно добавить правила
SPACE(n
) и является
NSPACE(n
).
Оп ределен ие 37.
к о н т е к с т н о - с в о б о д н о й, если все её правила имеют вид A → α, где α ∈ (Σ ∪N )∗, A ∈ N .
ЯзыкLназывается контекстно-свободным (КС-языком), если
он порождается некоторой КС-грамматикой.
КС-грамматики, в отличие от КЗ-грамматик, могут содержать правила вида КС-грамматику можно перестроить в эквивалентную КС-грамматику, удовлетворяющую всем пунктам определения КЗ-грамматики. Поэто­му любой КС-язык является КЗ-языком.
A → ε
Порождающая грамматика называется
. Далее в параграфе 6.3 мы докажем, что любую
44 Глава 1. Формальные грамматики и языки
Правило вида
A → α
мы будем называтьA- п р а в и л о м. Для КС-грамматик существует сокращённая форма записи правил, при которой для каждого нетерминалаAвыписываются правые части всехA-правил, разделённые символом|. Например, вместо правил A → B, A → Aa, A → ε можно написать A → B | Aa | ε.
Пр име р 15.
следующей контекстно-свободной грамматикой:
Правило ныхi, а правило грамматике слово aaabbb:
Рассмотрим языкL=
S → aSb
позволяет выводить слова вида
S → ab
завершает вывод. Выведем для примера в этой
S ⇒ aSb ⇒ aaSbb ⇒ aaabbb.
{anbn:
S → aSb | ab.
n >0}
. Он порождается
aiSbiдля произволь-
Четвёртый класс грамматик иерархии Хомского — грамматики
типа 3. Их другое название — п р а в о л и н е й н ы е грамматики.
Оп ределен ие 38.
в о л и н е й н о й, если все её правила имеют вид
Порождающая грамматика называется п р а -
A → xB
, где
x ∈
Σ∗,
A, B ∈ N.
Пр име р 16.
язык порождается следующей праволинейной грамматикой:
ПустьL=
{w ∈ {a, b }∗:
w содержит подслово aba }
. Это
S → aS | bS | T T → abaR R → aR | bR | ε
Правила му вхождению подслова порождает подслово aba. Выведем для примера слово abababb:
Это же слово можно вывести и по-другому:
S → aSиS → bS
S ⇒ aS ⇒ abS ⇒ abT ⇒ ababaR ⇒ abababR ⇒ abababbR ⇒ abababb.
S ⇒ T ⇒ abaR ⇒ ababR ⇒ ababaR ⇒ abababR ⇒ abababbR ⇒ abababb.
порождают префикс, предшествующий некоторо-
aba
(не обязательно первому). Правило
aba
, аR-правила порождают суффикс, стоящий после
T → abaR
§ 1.4. Порождающие грамматики 45
В следующих главах мы докажем, что иерархия Хомского являет­ся строгой: каждый класс грамматик порождает меньше языков, чем предыдущий.
За меч ани е 1.
матик — к а т е г о р и а л ь н ы е грамматики. Порождающие грамматики начинают с главного нетерминала S и заменяют одни подслова на другие, постепенно «порождая» некоторое слово. В противоположность этому, в категориальных грамматиках каждому символу приписывается его син­таксический тип (или категория) — некоторое выражение, построенное из примитивных типов с помощью заранее заданного набора операций. На мно­жестве последовательностей типов определяется исчисление, позволяющее
«сокращать» категории. Слово задаётся категориальной грамматикой, если
его символам можно сопоставить последовательность категорий, которая сокращается в этом исчислении до главного типаS. Такие грамматики представляют особенный интерес для обработки естественных языков, по­скольку они позволяют описывать структуру предложения в терминах синтаксических связей между словами.
Помимо порождающих, существует и другой тип грам-
Задачи
33. Какой язык порождает грамматика из примера 13?
34.
Докажите, что КЗ-грамматика, построенная в первой части доказательства
теоремы 15, действительно эквивалентна исходной неукорачивающей грамматике.
35.
Разрешим использовать в порождающих грамматиках правила вида
где
α, β ∈(Σ∪ N
лов. Докажите, что такие грамматики эквивалентны обычным порождающим грамматикам.
36.
Неукорачивающая грамматика называется грамматикой в н о р м а л ь н о й
ф о р м е К у р о д ы, если все её правила имеют вид
A → a
или по любой неукорачивающей грамматике можно построить эквивалентную ей грамматику в нормальной форме Куроды.
37.
Докажите, что любой рекурсивно перечислимый язык порождается грам­матикойG= (N,Σ A ∈ N .
38.
Постройте неукорачивающие грамматики, порождающие следующие языки:
)∗— произвольные слова в алфавите терминалов и нетермина-
AB → C D,A → BC,A → B
S → ε
, где
A, B, C, D
, P, S
) с правилами вида
— нетерминалы,a— терминал. Докажите, что
ξAη → ξαη
, где
ξ, η, α ∈(Σ∪ N
α → β
)∗,
,
,
46 Глава 1. Формальные грамматики и языки
(а) L1= { w ∈ { a, b, c }∗: 0 < |w|a< |w|b< |w|c};
(б) L2= { a
(в) L3= { an: n — составное число };
(г) L4= { ba
39.
Докажите, что любой рекурсивно перечислимый язык порождается грамма­тикой, содержащей три нетерминала.
40.
Докажите, что любой рекурсивно перечислимый язык порождается грамма­тикой, содержащей два нетерминала.
41.
Докажите, что класс КЗ-языков замкнут относительно объединения, пересе­чения, конкатенации, итерации, неукорачивающих гомоморфизмов и прообразов при гомоморфизмах.
42.
Докажите, что любой рекурсивно перечислимый язык является проекцией некоторого КЗ-языка.
43.
Докажите, что существует рекурсивный язык, не являющийся контекстно­зависимым.
2
n
: n > 0 };
i
1
ba
i
2
b . . . ba
i
n
b : n > 0, i1= i2= · · · = in}.
§ 1.5. Проблема соответствий Поста
В этом параграфе мы изучим важную неразрешимую алгоритми­ческую проблему, связанную со словами, — проблему соответствий Поста. Она часто используется при доказательстве неразрешимости проблем, связанных с формальными грамматиками и языками.
Оп ределен ие 39.
Пусть Σ — произвольный алфавит. С и с т е м а с о о т в е т с т в и й П о с т а — это конечное множество пар слов в алфавите Σ.
ПустьC={( ста. Р е ш е н и е с и с т е м ы ность пар ((
y
y
. . . y
i
i
1
2
.
i
k
x1, y1)
x
, y
i
i
1
1
, . . . ,(xn, yn)}— система соответствий По-
C
— это непустая последователь-
),(
x
, y
)
, . . . ,(x
i
i
2
2
, y
)) такая, что
i
i
k
k
x
x
. . . x
i
i
1
i
2
k
П р о б л е м а с о о т в е т с т в и й П о с т а состоит в том, чтобы
по системе соответствий Поста определить, имеет ли она решение.
Существует другая форма записи систем соответствий Поста. Каж-
дую пару (
x, y
) можно записать в виде дроби с «числителем»xи
=
§ 1.5. Проблема соответствий Поста 47
«знаменателем»y. Тогда решение системы соответствий Поста — это
последовательность «дробей» такая, что после «умножения» по обыч­ному правилу «числитель» оказывается равен «знаменателю».
Пр име р 17.
является последовательность (( записывается как
Пр име р 18.
последовательность (( это записывается как
Пр име р 19.
Действительно, во второй и третьей парах слова начинаются на разные символы, поэтому решение может начинаться только на первую пару. По­скольку «знаменатель» отличается от «числителя» только последним сим­волом a, то дописать третью пару нельзя. Если же дописать вторую пару, то «знаменатель» снова будет отличаться от «числителя» только последним символомa. Следовательно, на каждом шаге можно приписывать только вторую пару, и решения нет.
Пусть
Пусть
Система
C1={(
C2={(
abb, b),(b, ba),(aab, baab)}
b, ba),(abb, b),(aab, baab
b
abb
·
ba
bb, b),(a, aa),(ba, bbbb)}
bb, b),(bb, b),(bb, b),(ba, bbbb),(a, aa
bb
bb
·
b
b
C3={(
b, ba),(ab, ba),(aa, b)}
aab
·
·
baab
ba
bbbb
.
a
·
.
aa
b
bb
·
b
. Тогда её решением
)). В виде дробей это
. Её решением является
)). В виде дробей
не имеет решений.
Нетрудно видеть, что система соответствий Поста не может иметь
конечное ненулевое число решений.
Ле мма 17.
Если система соответствий ПостаCимеет решение, то
она имеет бесконечно много решений.
Доказательство. Если последовательностьπ= ( является решением, то любая последовательность вида
p1, p2, . . . , pk)
ππ . . . ππ
| {z }
m раз
, где
m > 0 — натуральное число, тоже является решением.
Главный результат о системах соответствий Поста состоит в том,
что не существует алгоритма для поиска их решений.
Теорема 18. Проблема соответствий Поста неразрешима.
Доказательство. Пустьϕ(x) — частично рекурсивная функция с нерекурсивной областью определения, принимающая на всей обла-
48 Глава 1. Формальные грамматики и языки
сти определения значение 0. Функцияϕ(x) вычисляется некоторой машиной ТьюрингаM= (Q,Σ ное слово Поста для входаnимеет вид # слово Поста всегда имеет вид #
, P, q0, qf). Можно считать, что началь-
hq0Λ
|n#, а заключительное
qfΛ#. Построим поMмоделирующую
её полусистему ТуэT, используя конструкцию из теоремы 12. Тогда
#
q0Λ
|n#
∗
⇒
#
qfΛ# тогда и только тогда, когдаϕ(n) определено.
T
Построим по полусистеме ТуэTи натуральному числуnсистему соответствий Поста C.
Алфавит содержит все символы из полусистемы ТуэTи их двой-
ников:
∆ = Σ ∪Q ∪ {a0: a ∈ Σ ∪Q }∪ { #, #0}.
Еслиw— слово в алфавите ∆, то через
w0будем обозначать слово,
получающееся изwзаменой всех символов на двойников и наоборот. Например, если w = #q0|##0q
0
Λ0#0, то w0= #0q
1
0
|0#0#q1Λ#.
0
Добавим в C следующие пары слов:
1)
(#
q0Λ
|n#,#
q0Λ
|n#
0
c
1
), где
c1— слово Поста, получающееся из
начального слова Поста #q0Λ|n# за один шаг;
2) (a, a0), (a0, a) для всех a ∈ Σ ∪{ # };
3) (α, β0), (α0, β) для всех правил α → β полусистемы Туэ T;
4) (#qfΛ##, #), (#0q
Докажем, чтоϕ(n) определено тогда и только тогда, когда
0
Λ0#0#, #).
f
C
имеет решение.
Пустьϕ(n) определено, тогда существует конечное вычисление
c0` c1` ·· · ` ckмашины ТьюрингаM, где
чальное слово Поста, полусистеме ТуэTвыполняется
ck= #
qfΛ# — заключительное слово Поста. В
c0⇒ c1⇒ · ·· ⇒ ck. Индукцией по
c0= #
q0Λ
|n# — на-
покажем, что существует такая последовательность пар слов изC, что конкатенация левых слов равна
правых слов равна
c0c
0
1
c2c
0
3
. . . c
(0)
i
0
c0c
c2c
1
(последнее слово Поста записано
0
3
. . . c
(0)
, а конкатенация
i−1
i
§ 1.5. Проблема соответствий Поста 49
в алфавите двойников при нечётном индексе и в обычном алфавите при чётном индексе).
Б а з и с и н д у к ц и и . Приi= 1 нужно использовать первую
пару из C .
Ш а г и н д у к ц и и . Предположим, что мы уже сумели получить
0
слова
c0c
1
c2c
0
3
. . . c
i−1
емiнечётным). По определению
c
=
i+1
uβvиα → β
0
1
c2c
0
3
. . . c
и
c0c
0
c
i−1
i
ci⇒ c
(для определённости счита-
означает, что
i+1
ci=
uαv
— правило полусистемы ТуэT. Тогда нужно приписать несколько пар вида 2), чтобы скопироватьu, затем напи­сать пару (
α, β0), а затем дописать ещё несколько пар вида 2), чтобы
скопировать v:
0
1
0
1
c2c c2c
0
3
0
3
. . . c . . . c
i−1
i−1
u0α0v
c0c c0c
В результате к конкатенации левых слов добавится катенации правых слов —
c
i+1
=
uβv
0
0
u
·
·
0
u
0
α
v
·
.
β
v
0
c
=
u0α0v0, а к кон-
i
. Для чётногоiдоказательство
аналогично.
Приi=kмы получим, что конкатенация правых слов «обгоняет» конкатенацию левых слов на заключительное слово Поста # или его двойника #0q
0
Λ0#0. Чтобы сравнять слова, нужно добавить
f
qfΛ#
пару вида 4).
Пусть теперьϕ(n) не определено. Описанный способ построения последовательности является единственно возможным. Чтобы левое и правое слова совпали, на очередном шаге нужно дописать такие пары, что конкатенация их левых частей даст
ci. Сначала можно
использовать только пары вида 2), затем — одну пару вида 3), чтобы совпало состояние, а затем — снова пары вида 2). Но тогда по постро­ению конкатенация правых частей даст определено, тоMникогда не достигнет состояния
c
. Поэтому еслиϕ(n) не
i+1
qf, а следовательно,
конкатенация левых слов всегда будет короче конкатенации правых слов. А это и значит, что система C не имеет решений.
Итак,ϕ(n) определено тогда и только тогда, когдаCимеет ре-
,
50 Глава 1. Формальные грамматики и языки
шение. Поэтому из разрешимости проблемы соответствий Поста сле­довало бы, что область определения функцииϕрекурсивна, что противоречит выбору ϕ.
Отметим несколько следствий из доказанной теоремы.
Сл едствие 19.
Проблема соответствий Поста неразрешима, даже
если все слова из системы соответствий Поста непусты. Сл едствие 20. Проблема соответствий Поста m-полна.
Доказательство. Рекурсивная перечислимость множества раз­решимых систем соответствий Поста очевидна: нужно перебирать все возможные конечные последовательности пар слов и для каждой про­верять, будет ли она решением.m-полнота следует из доказательства
предыдущей теоремы, так как проблема остановки машин Тьюринга
m-сводима к проблеме соответствий Поста.
Сл едствие 21.
Проблема соответствий Поста в алфавите, содер-
жащем два символа, неразрешима.
Доказательство. Нужно закодировать символы алфавита Σ двумя символами (задача 46).
Задачи
44.
Определите, какие из следующих систем соответствий Поста имеют решение:
(а) C1= { (ab, abb), (ba, aaa), (aa, a) };
(б) C2= { (b, bb), (bb, bab), (bab, abb), (abb, babb) }.
45.
Докажите, что для однобуквенного алфавита проблема соответствий Поста
разрешима.
46.
Докажите, что проблема соответствий Поста в алфавите, содержащем два
символа, неразрешима.
47. Докажите неразрешимость следующих проблем:
(а)
по системе соответствий ПостаC={( имеет ли C решение, начинающееся на пару (x1, y1);
(б)
по системе соответствий ПостаCопределить, имеет ли она решение чётной длины.
x1, y1)
, . . . ,(xn, yn)}определить,
Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]