Author: Пентус А.Е. Пентус М.Р.
Tags: математическая кибернетика здравоохранение медицинские науки математика математическая логика логика математическая лингвистика
ISBN: 5-9556-0062-0
Year: 2016
Математиче ская
языков
теория формальных
2-е издание, исправленное
Пентус А.Е.
Пентус М.Р.
Национальный Открытый Университет "ИНТУ ИТ"
2016
Математиче ская
языков
теория формальных
2-е издание, исправленное
Пентус А.Е.
Пентус М.Р.
Национальный Открытый Университет "ИНТУ ИТ"
2016
ЭДК 519.713
ББК5
П25
Математическая теория формальных язьнюв / Пентус А.Е., Пентус M.R - М.:
Национальный Открытый Университет "ИНТУИТ”, 2016 (Основы информатики и
математики)
ISBN 5-9556-0062-0
Курс посвящён классическому разделу математической лингвистики и теоретической
информатики - теории формальных языков. Рассматриваются порождающие
грамматики, регулярные выражения, конечные автоматы, автоматы с магазинной
памятью.
Затронуты следующие классические темы математических основ информатики:
праволинейные грамматики, конечные автоматы, регулярные выражения, контекстно-
свободные грамматики, деревья разбора, нормальные формы грамматик, автоматы с
магазинной памятью, детерминированные контекстно-свободные языки,
синтаксический анализ, контекстные грамматики, линейно ограниченные автоматы,
порождающие грамматики без ограничений, машины Тьюринга, алгоритмические
проблемы, связанные с грамматиками и автоматами. Особое внимание уделено
практическим способам выяснения, к какому классу в иерархии Хомского
принадлежит заданный язык, методам преобразования регулярных выражений и
автоматов в грамматики соответствующего класса и наоборот, а также доказательству
неразрешимости проблем, связанных с контекстно-свободными грамматиками.
(с) ООО ПНГУИТ.РУ", 2006-2016
(с) Пентус А.Е.. Пентус М.Р., 2006-2016
Предисловие
Цель этого курса - познакомить читателя с некоторыми
основополагающими моделями и результатами, используемыми в
теоретической информатике. Неудивительно, что они относятся к
математике, а не к какой-либо другой области знаний - ведь в науке о
компьютерах именно математические абстракции являются самыми
плодотворными.
Рассматриваемые здесь идеи и результаты принадлежат теории
формальных языков, грамматик и автоматов. По существу, эта теория
описывает некоторые ограниченные абстрактные машины, способные
выполнять определенные операции со строками. Например, конечный
автомат может выяснить, содержит ли некоторый файл определенное
слово, а автомат с магазинной памятью способен определить,
правильна ли система вложенных круглых, квадратных и фигурных
скобок.
Как подсказывает само название курса, основным объектом
рассмотрения является формальный язык - произвольное множество
конечных последовательностей символов, взятых из некоторого
конечного множества (такие последовательности называются словами).
Важность формальных языков для теоретической информатики
обусловлена тем, что наиболее простой и удобной моделью данных,
используемых в компьютерных программах, является конечная
последовательность, каждый элемент которой взят из некоторого
заранее зафиксированного конечного множества (так как для хранения
этого элемента отводится фиксированный объем памяти).
В первой лекции дается классификация формальных языков в
соответствии с иерархией Хомского: автоматные языки, контекстно-
свободные (или бесконтекстные) языки, контекстные (или контекстно-
зависимые) языки, языки типа 0. Если исключить языки, содержащие
пустое слово, то названные классы вложены друг в друга (здесь они
перечислены в возрастающем порядке).
В лекциях 2-6 рассматривается самый узкий из этих классов - класс
автоматных (или праволинейных, или регулярных) языков, обладающий
многими свойствами, важными для приложений. Например, разрешима
проблема равенства автоматных языков (естественно, надо сначала
договориться о способе конечного задания языка), пересечение двух
автоматных языков тоже является автоматным и т.д. Поэтому важно
иметь удобные критерии автоматности, то есть условия, являющиеся
Одновременно необходимыми и достаточными для того, чтобы язык
распознавался некоторым конечным автоматом. Наиболее известные
критерии изложены в первых лекциях, их можно найти по предметному
указателю (язык, автоматный, критерий автоматности). Именно
автоматные языки лежат в основе лексических анализаторов, входящих
в структуру компиляторов и интерпретаторов языков
программирования.
В лекциях 7-11 рассматриваются контекстно-свободные языки.
Изучаются разные способы выделения формального языка из множества
всех слов, оказывающиеся эквивалентными друг другу в том смысле,
что они задают один и тот же класс языков, а именно класс всех
контекстно-свободных языков. При определении современных языков
программирования (а также языков поисковых запросов и т. п.)
основная часть синтаксиса описывается в формализме, известном как
форма Бэкуса-Наура. По существу, это способ записывать контекстно-
свободные грамматики. Другая важная область использования
контекстно-свободных грамматик - расширяемый язык разметки (XML’)
и языки описания структуры XML-документа (например, язык DTD).
Два оставшихся класса из иерархии Хомского - контекстные языки и
языки типа О-в данном курсе изучаются менее подробно, так как они
относятся скорее к теории сложности вычислений и к теории
алгоритмов соответственно. Приводятся эквивалентные определения
этих классов в терминах автоматов.
Лекции 12 и 13 содержат основные результаты теории
детерминированных контекстно-свободных языков и формальные
определения, демонстрирующие связь этой теории с нисходящими и
восходящими синтаксическими анализаторами.
Последние три лекции курса посвящены алгоритмическим проблемам,
связанным с формальными грамматиками и автоматами. На основе
известной из теории алгоритмов теоремы о неразрешимости проблемы
Поста доказывается неразрешимость многих важных проблем теории
формальных языков, например проблемы однозначности контекстно-
свободной грамматики и проблемы эквивалентности двух контекстно-
свободных грамматик. С другой стороны, формулируются и
положительные результаты о разрешимости, в том числе теорема о
разрешимости проблемы равенства детерминированных контекстно-
свободных языков.
Слова, языки и грамматики
В данной лекции определяются такие основные понятия, как алфавит,
слово, язык над данным алфавитом - и вводятся обозначения для
пустого слова, конкатенации слов, степени слова, длины слова,
количества вхождений данного символа. Приведены практические
примеры и упражнения для закрепления материала
В начале этой лекции определяются основные понятия, используемые в
дальнейшем: алфавит, слово, язык над данным алфавитом - и вводятся
обозначения для пустого слова, конкатенации слов, степени слова,
длины слова, количества вхождений данного символа. В разделе 1.2
фиксируются обозначения для префикса и суффикса слова, а также для
ряда операций над языками, таких как конкатенация, итерация,
обращение. При беглом чтении раздел 1.3, где определяются образ и
полный прообраз языка при гомоморфизме, можно пропустить:
вводимые в этом разделе понятия понадобятся только в лекциях 4, 11 и
13.
Используемые в приложениях формальные языки, как правило,
являются бесконечными. Очевидно, нужен способ конечного описания
формального языка. В данном курсе изучаются несколько классических
средств: порождающие грамматики, автоматы, регулярные выражения.
Определению понятий грамматики и порождаемого ею языка посвящен
раздел 1.4. В конце первой лекции вводятся классы грамматик,
образующие иерархию Хомского: грамматики типа (все порождающие
грамматики), грамматики типа 1 (контекстные грамматики), грамматики
типа 2 (контекстно-свобедные, или бесконтекстные, грамматики),
грамматики типа 3 (праволинейные грамматики), а также менее
важный класс линейных грамматик, промежуточный между классами
грамматик типа 2 и 3.
Следует заметить, что каждая фамматика порождает ровно один язык,
но обратное неверно: некоторые формальные языки нельзя задать
никакой порождающей грамматикой, а каждому языку, который
порождается хотя бы одной грамматикой, соответствует сразу
бесконечное множество грамматик (причем они могут принадлежать
разным классам).
1.1. Формальные языки
Определение 1.1.1. Будем называть натуральными числами
неотрицательные целые числа. Множество всех натуральных чисел
{0, 1, 2 , ... 1 обозначается N.
Определение 1.1.2. Алфавитом называется конечное непустое
множество. Его элементы называются символами ( буквами ).
Определение 1.1.3. Словом ( цепочкой, строкой, string) в алфавите 52
называется конечная последовательность элементов 52-
Пример 1.1.4. Рассмотрим алфавит 52 = {а, Ь, с). Тогда Ьааа
является словом в алфавите 52-
Определение 1.1.5. Слово, не содержащее ни одного символа (то есть
последовательность длины 0 ), называется пустым словом и
обозначается f.
Определение 1.1.6. Множество всех слов в алфавите 52 обозначается
S*.
Замечание 1.1.7. Множество 52* счетно. В самом деле, в алфавите 52
множество всех слов данной длины конечно, следовательно, 52*
является объединением счетного числа конечных множеств.
Определение 1.1.8. Множество всех непустых слов в алфавите 52
обозначается
Пример 1.1.9. Если 52 = {а},то 52+= (а,аа,ааа,аааа,. ..J.
Определение 1.1.10. Если L, С 52*, то L называется языком (или
формальным языком ) над алфавитом 52 •
Поскольку каждый язык является множеством, можно рассматривать
операции объединения, пересечения и разности языков, заданных над
одним и тем же алфавитом (обозначения Z.j U L2, £1 П 72г, 72 j — Г з
)
8
Пример 1.1.11. Множество (а, abb} является языком над алфавитом
{а, Ь}.
Определение 1.1.12. Пусть Lr С £*. Тогда язык £* — L называется
дополнением языка L относительно алфавита £. Когда из контекста
ясно, о каком алфавите идет речь, говорят просто, что язык £* — £,
является дополнением языка L.
Определение 1.1.13. Если х и у - слова в алфавите £, то слово ху
(результат приписывания слова у в конец слова х ) называется
конкатенацией,( катенацией, сцеплением ) слов х и у. Иногда
конкатенацию слов х и у обозначают 2’ у.
Определение 1.1.14. Если х - слово и £ Д', то через хп обозначается
• ат •... х.
слово л . Положим (знак читается "равно по
определению'). Всюду далее показатели над словами и символами, как
правило, являются натуральными числами.
Пример 1.1.15. По принятым соглашениям Ьа3 - Ьааа и (Ьа)3 =
bababa.
Пример 1.1.16. Множество | является языком над
алфавитом {а,Ь}. Этот язык содержит слова b, ba, aba, baa, aba а,
baaa, aabaa, abaaa, baaaa и т. д.
Определение 1.1.17. Длина слова и, обозначаемая I w |, есть число
символов в w, причем каждый символ считается столько раз, сколько раз
он встречается в w.
Пример 1.1.1В. Очевидно, что | baaa I 4 и |е| — О-
Определение 1.1.19. Через | w | а обозначается количество вхождений
символа а в слово w.
Пример 1.1.20. Если £ {а, Ь, с} . то Ibaaa I
1 и | baaa | с = 0.
3, | baaa |
Пентус А.Е., Пентус М.Р
Упражнение 1.1.21. Перечислить слова языка £,j П £2, гДе
£1 = {(аЬ)" I. > 0} и £2 - {ambm | т ,> 0J .
Упражнение 1.1.22. Пусть £ —|а, 6,с}- Равны ли языки
{(adcJ^G | п 2} и £2 - {а6(саЬ)пса | п 1} ?
Упражнение 1.1.23. Пусть £ = {а. Ь,с}» Li = {?!’ С Е:* | |ir| =4}
и £,2__ {д’ € S* | |ц;|с — 1} - Сколько слов содержит язык Lx - L2?
Упражнение 1.1.24. Пусть даны такие алфавиты Si и что
S1 — Ез 0 -в каком случае — Е2 = (Si — £г)г?
1.2. Операции над языками
Определение 1.2.1. Пусть £i,£2 С £*. Тогда
£1 • Lq {ягу | я Е £1, У € £э}.
Язык £,j - £2 называется конкатенацией языков I и Т 2.
Пример 1.2.2. Если L-l - (a,abb} и L2 - {bbc,c}, то
£1 £2 ~ {ас, abbc, abbbbc} -
Упражнение 1.2.3. При каких положительных целых числах k, 1, m, п
существуют алфавит 52, язык £. । С S* и язык £3 С S*,
удовлетворяющие условиям |£| — fc, IL, | = 1, | L21 = m,
|£j • £2! — 'ГС-
Определение 1.2.4. Пусть £, G £*. Тогда
£°^{с},
£п j. •... • £;., если Vi > 0.
Пример 1.2.5. Если L = (а^Ьа1 | 0 < к < 1), то L2 =
{akba1bam J 0 < к < 1 - 1, т>1}.
Упражнение 1.2.6. Пусть Я = {к, 6} и L = {аа, ab }. Найти L3.
Определение 1.2.7. Итерацией языка (Kleene closure) языка L
(обозначение L* ) называется язык
и^.
пегч
Эта операция называется также звездочкой Клини (Kleene star, star
орегапоп).Пример 1.2.8. Если Я = {ft, 6} и L = (аа, ab, ba,bb},
то
L- - {ш е Е* I |гг| ; 2}.
Упражнение 1.2.9. Пусть Я = {ft, &, с, tf] и
£={ггЕЕ*||ш|с = к Нс-1}.
Верно ли, что abcdcacdcabbacba 6 L*
Упражнение 1.2.10. Существует ли такой язык L, что выполняется
неравенство £ * {а:71 | а: С L. п 0}
Определение 1.2.11. Обращением или зеркальным образом слова w
(обозначается wR ) называется слово, в котором символы, составляющие
слово w, идут в обратном порядке.
Пример 1.2.12. Если w = baaca,TOwR = acaab.
Определение 1.2.13. Пусть £, С Я*- Тогда
£п — | ад £ £}.
Язык Lp называется обращением языка L.
Упражнение 1.2.14. Существует ли такой язык L, что выполняется
неравенство (£n)* (L*)1*?
Определение 1.2.15. ГЪворят, что слово х - префикс ( начало ) слова у
(обозначение 1' Е у ), если у = хи для некоторого слова и.
Пример 1.2.16. Очевидно, что b С baa, ba С baa и
&gg С baa-
Определение 1.2.17. Пусть L r-_ 5J*. Тогда через Pref(L)
обозначается множество, состоящее из всех префиксов слов языка L:
Pref(L) {а: | (Зу Е £) х Су}.
Множество Pref (L) называется множеством префиксов языка L.
Определение 1.2.18 ГЪворят, что слово х - суффикс ( конец ) слова у
(обозначение ж □ у ), если у = их для некоторого слова и.
Определение 1.2.19. Пусть £. С 2Z*. Тогда через Suf (L) обозначается
множество, состоящее из всех суффиксов слов языка L:
Suf(C) {а: | (Зу с £) т □ у}.
Множество Suf (L) называется множеством суффиксов языка L.
Определение 1.2.20. ГЪворят, что слово х - подслово (substring) слова у,
если у = uxv для некоторых слов и и v.
Определение 1.2.21. Пусть £СЕ*. Тогда через Subw(L)
обозначается множество, состоящее из всех подслов слов языка L.
Множество S ubw (L) называется множеством подслов языка L.
Определение 1.2.22. Слово а1&2- • *ап (длины л (I ) называется
подпоследовательностью (subsequence) слова у, если существуют такие
слова u0, ulf ...» un, что UQaiU1a2. . . arun = у.
Замечание 1.2.23. Все подслова слова у являются также
12
Пентус А. Е., Пентус М.Р
подпоследовательностями слова у.
Определение 1.2.24. Пусть L С Е*. Тогда через Subseq(L)
обозначается множество, состоящее из всех подпоследовательностей
слов языка L. Множество Subseq(L) называется множеством
подпоследовательностей языка L.
Пример 1.2.25. Рассмотрим язык L = {сЬа, с) над алфавитом {а,
b, с Очевидно, что Subseq(Z, = {е, а, Ь, с, 6а, са, сб, с&а] -
Определение 1.2.26. Функция /: К —> L называется биекцией
(bijection), если каждый элемент множества L является образом ровно
одного элемента множества К (относительно функции f ).
Определение 1.2.27. Множества К и L называются равномощными (of
equal cardinality), если существует биекция из К в L.
Упражнение 1.2.28. Существуют ли такие языки и 1.2» что языки
£1 - fZ2 ) и ' ^2 неравномощны?
Упражнение 1.2.29. Существуют ли такие языки и 1_2> что языки
Z.jL L-2 и £’2 £'1 неравномощны?
1.3. Гомоморфизмы
Определение 1.3.1. Пусть и " алфавиты. Если отображение
h: S* —► удовлетворяет условию h(x • д) — 6(a) • Л(1/) для всех
слов .с € S j и у £ , то отображение h называется гомоморфизмом
( морфизмом ).
Замечание 1.3.2. Можно доказать, что если /j - гомоморфизм, то
Л.(е) =е-
Замечание 1.3.3. Пусть Si — (а. 6} и = {с} Тогда отображение
Пентус А. Е., Пентус М.Р
h: ££—> Е*, заданное равенством = с2'11', является
гомоморфизмом.
Замечание 1.3.4. Каждый гомоморфизм однозначно определяется
своими значениями на однобуквенных словах.
Замечание L.3.5. Если h: Е* —> S, - гомоморфизм и L С Е*, то
через h(L) обозначается язык | W С Z}
Пример 1.3.6. Пусть £ — {а,б} и гомоморфизм fi- £* —> Е* задан
равенствами h (а) = abba и — £ Тогда
Определение 1.3.7. Если h: S* —► Е* - гомоморфизм и £С £*, то
через h-1(L) обозначается язык { a’ Е Е* 1 h(w) Е Z} -
Пример 1.3.8. Рассмотрим алфавит Е — 6}-. Пусть гомоморфизм
й,; £*—► £* задан равенствами h (а) = аЬиЬ(Ь) = abb.Тогда
h~ ({t,аЬЬб,abbot,пЬабаЬ}) — {з,Ьа,пап}.
Упражнение 1.3.9. Пусть Е — {с., 6, с, rf} Существует ли такой
гомоморфизм Ji; £*—> £*,что h (abc) = bacHh(da) = ba?
Упражнение 1.3.10. Существуют ли такой язык Г, С + и такой
гомоморфизм h: {а,fc}* —г что h(h-1(Z)) L и
# Z?
Упражнение 1.3.11. Пусть £; {а, 6}- Существует ли такой
гомоморфизм h :£*—►£*, что У) ~ {е} и
Упражнение 1.3.12. Существуют ли такой язык С и такой
14
гомоморфизм h: {о,, *—>{а,fe}*, что /i(/i 1(£)l/L и
Упражнение 1.3.13. Пусть h‘. {(.i, Ь, cj-*—» {ц, Ь}* - гомоморфизм,
заданный соотношениями h(a) - a, h(b) = ba, h(c) - bb.
Существуют ли такие слова и и v, что | ц | < | v | и |h(u) |>|h(v) |?
1.4. Порождающие грамматики
Определение 1.4.1. Порождающей грамматикой ( грамматикой типа О,
generative grammar, rewrite grammar) называется четверка
G “ (Лг, S, Р, S) , где N и J - конечные алфавиты, jV П Е = 0 ,
PC (ArUS)+ X (jVUE)*» Р конечно и Здесь Е -
основной алфавит ( терминальный алфавит ), его элементы называются
терминальными символами или терминалами (terminal), N
вспомогательный алфавит ( нетерминальный алфавит ), его элементы
называются нетерминальными символами, нетерминалами,
вспомогательными символами или переменными (nonterminal, variable),
S - начальный символ ( аксиома, start symbol). Пары (ск, /3) Е Р
называются правилами подстановки, просто правилами или
продукциями (rewriting ride, production) и записываются в виде Q —> /3.
Пример 1.4.2. Пусть даны множества N = {S}, S= {а,6,г},
Р — {S —> acSbcS. cS Тогда (А, Е, Р, S) является
порождающей грамматикой.
Замечание 1.4.3. Будем обозначать элементы множества Е строчными
буквами из начала латинского алфавита, а элементы множества N -
заглавными латинскими буквами. Обычно в примерах мы будем
задавать грамматику в виде списка правил, подразумевая, что алфавит N
составляют все заглавные буквы, встречающиеся в правилах, а алфавит
Е - все строчные буквы, встречающиеся в правилах. При этом правила
порождающей грамматики записывают в таком порядке, что левая часть
первого правила есть начальный символ S.
15
Замечание 1.4.4. Для обозначения п правил с одинаковыми левыми
частями ci —» /51»...»а —* {Зп часто используют сокращенн}то запись
Q —1 /51 | .. . | /5п-
Определение 1.4.5. Пусть дана грамматика G. Пишем . если
fb — tjcxB , -0 — Г}36 и (с —> /3) Е Р Для некоторых слов
Q, /5, Jj, В в алфавите jV UJ 52- Если , то говорят, что слово
i,'j непосредственно выводимо из слова fj> .
Замечание 1.4.6. Когда из контекста ясно, о какой грамматике идет речь,
вместо можно писать просто =>.
Пример 1.4.7. Пусть
G = ({S}, {a.tkc}»{S —> acSbcS, cS —> е}, S).
Тогда cSacS с5а.
Определение 1.4.8. Если tL’n где и 0. то пишем
*
u^t| и говорим, что слово u^n. выводимо из слова мАп. Другими
словами, бинарное отношение является рефлексивным,
транзитивным замыканием бинарного отношения определенного
на множестве (Д’ U X?)* •
При этом последовательность слов ы?о,а-'1,..., называется
выводом (derivation) слова сл.’п. из слова ^л в грамматике G. Число п
называется длиной ( количеством шагов ) этого вывода.
Замечание 1.4.9. В частности, для всякого слова Е (Лг U S)* имеет
место (так как возможен вывод длины С ).
Пример 1.4.10. Пусть G — ({S}. {S —> aSa. S—>b].S).
i6
Пентус А.Е., Пентус М.Р
Тогда а$а aaaaSaaaa. длина этого вывода - 3.
Определение 1.4.11. Язык, порождаемый грамматикой G, • это
множество L(G)^{ufZ-|S^u}
. Будем также говорить, что
грамматика G порождает (generates) язык L < G).
Замечание 1.4.12. Существенно, что в определение порождающей
грамматики включены два алфавита - £ и N. Это позволило нам в
определении 1.4.11 "отсеять" часть слов, получаемых из начального
символа. А именно, отбрасывается каждое слово, содержащее хотя бы
один символ, не принадлежащий алфавиту
Пример 1.4.13. Если G — {{5}, {а, Ь}, {5 -> aSa, S —» bb], S} , то
£(G) - {о"66ап | n > 0} -
Определение 1.4.14. Две грамматики эквивалентны, если они
порождают один и тот же язык.
Пример 1.4.15. Грамматика
S —> abS,
Sа
и грамматика
1 aU,
U + baU,
U->f.
эквивалентиы.Упражнение 1.4.16. Описать язык, порождаемый
грамматикой
s -> £’/•;
/ —+ aFb,
—+ ui>.
17
Упражнение 1.4.17. Описать язык, порождаемый грамматикой
С Сс,
С—> А,
А —> аАЬ.
А->Л.
Упражнение 1.4.18. Описать язык, порождаемый грамматикой
К—
К -> а,
К -> Ь,
К —♦ аКа,
К ->ЪКЬ.
Упражнение 1.4.19. Описать язык, порождаемый грамматикой
D—> DA,
DAA -> ADb,
ADA -» b,
А —ь а.
Упражнение 1.4.20. Описать язык, порождаемый грамматикой
F aFH,
F —> aftc,
ЪН -> bbc,
сН Нс.
Упражнение 1.4.21. Описать язык, порождаемый грамматикой
Пентус A. E.. Пентус М.Р Матемап
S -* ai'S,
S->U,
J (Л aai
TU-i U.
U->a.
Упражнение 1.4.22. Эквивалентны ли грамматика
Я -> aKXh,
К -> bSb.
KS -> ь,
К ->Е
и грамматика
S а'ГЬ,
Г -*е,
Т -» 6,
Т -> S,
Т -> bSbS?
Упражнение 1.4.23. Эквивалентны ли грамматика
S->aD,
D bba,
—* baDa,
—» aDaDa
b b
и грамматика
S —t aaE,
S -t abJ,
h -> bJJ>
J —* aaEa,
J —* abJa,
J —+ ba?
1.5. Классы грамматик
Определение 1.5.1. Контекстной грамматикой (контекстно-зависимой
грамматикой, грамматикой непосредственно составляющих, НС-
грамматикой, грамматикой типа 1, context-sensitive grammar, phrase-
structure grammar) называется порождающая грамматика, каждое правило
которой имеет вид —* Tjctf}, где А 6 Лт» Е (Лт U Е)*,
бе Gvusr, ae(tfuS)+.
Пример 1.5.2. Грамматика
S- ‘TS,
S -> us,
s ->ь,
ТЬ АЬ,
.1 -tf, а,
ТА -> АА1.
UAb .Ь,
UAAA AAU
не является контекстной (последние три правила не имеют требуемого
вида).
Определение 1.5.3. Контекстно-свободной грамматикой (
бесконтекстной грамматикой, КС-грамматикой, грамматикой типа 2,
context-free grammar) называется порождающая грамматика, каждое
правило которой имеет вид А —* с. где А е N, о: е (TV и Е)'.
Пример 1.5.4. Грамматика
S AS1 A,
S -> AM,
A • a,
b'T-^bb,
AT ^UT,
UT ->uv.
UV TV,
TV -+ TA
является контекстной, но не контекстно-свободной (последние пять
правил не имеют требуемого вида).
Определение 1.5.5. Линейной грамматикой (linear grammar) называется
порождающая грамматика, каждое правило которой имеет вид Д —> и
или А —» иВп, где А € и € S*. V € S*. В € Лт
Грамматика
S->TT,
1 -tflT,
1 ->ьт,
T-ta
является контекстно-свободной, но не линейной (первые два правила
не имеют требуемого вида).
Определение 1.5.7. Праволинейной грамматикой ( рациональной
грамматикой, грамматикой типа 3, right-linear grammar) называется
порождающая грамматика, каждое правило которой имеет вид Д —» и
или а —>ив. где л е дг, и е е* • в е N
Пример 1.5.8. Грамматика
S —+ aSa,
S -Л,
Т ЬТ,
Т->е
является линейной, но не праволинейной (первое правило не имеет
требуемого вида).Пример 1.5.9. Грамматика
Пентус А. Е., Пентус!
з->т,
U —* abba
праволинейная. Она порождает язык £? .Пример 1.5.10. Грамматика
5 —* aS,
S -» bS,
S —> аааТ,
S —»aaba'i',
S —> abaai ,
S —> aabbdl\
S —» ababa'l\
S —» abbaa'l\
Г—r aT,
Г^ЬГ,
T ->£
праволинейнаяЛример 1.5.11. Грамматика
S -> Е,
S —» aaaS,
S —» abbS,
S —* babS,
S —* ааЫ\
1 —* uba'i’,
T —> baaT,
T bbbT,
1 bbaS
праволинейная. Обобщенный вариант языка, порождаемого этой
грамматикой, используется в доказательстве разрешимости арифметики
Пресбургера.
Определение 1.5.12. Правила вида q —» е называются р - правилами
или эпсилон-правилами.
Лемма 1.5.13. Каждая праволинейная грамматика является линейной.
Каждая линейная грамматика является контекстно-свободной. Каждая
контекстно-свободная грамматика без f -правил является контекстной
грамматикой.
Определение 1.5.14. Классы грамматик типа 0, 1, 2 и 3 образуют
иерархию Хомского (Chomsky hierarchy).
Определение 1.5.15. Язык называется языком типа 0 ( контекстным
языком, контекстно-свободным языком, линейным языком,
праволинейным языком ), если он порождается некоторой грамматикой
типа 0 (соответственно контекстной грамматикой, контекстно-
свободной грамматикой, линейной грамматикой, праволинейной
грамматикой). Контекстно-свободные языки называются также
алгебраическими языками.
Пример 1.5.16. Пусть дан произвольный алфавит
S — , . - - , Ял } •
Тогда язык 52* является праволинейным, гак как он порождается
грамматикой
S > (Il
S -> a„S.
Упражнение 1.5.17. Какому классу принадлежит грамматика
S —> abba,
S —г baa?
Упражнение 1.5.18. Какому классу принадлежит грамматика
AD,
Л —» аЛ,
D -> bDc,
D^€?
Упражнение 1,5.19. Найти праволинейную грамматику, порождающую
язык | n > 1 или m 1} -
Упражнение 1.5.20. Найти праволинейную грамматику эквивалентную
грамматике
S -> КйЬаК,
К К а,
К-> КЪ,
К—те.
Упражнение 1.5.21. Найти праволинейную 1рамматику эквивалентную
грамматике
S —«• aSb, К аК.
S .l > Jb,
S J, К —1 G,
J->s.
24
Конечные автоматы
В данной лекции рассматриваются два наиболее распространенных
способа конечного задания формального языка: грамматики и автоматы.
Рассматриваются конечные автоматы, соответствующие в иерархии
Хомского праволинейным грамматикам, определяются понятия
конечного автомата, недетерминированного конечного автомата и
распознаваемого конечным автоматом языка. Приведены практические
примеры и упражнения для закрепления материала
Два наиболее распространенных способа конечного задания
формального языка - это грамматики и автоматы. Автоматами в данном
контексте называют математические модели некоторых
вычислительных устройств. В этой лекции рассматриваются конечные
автоматы, соответствующие в иерархии Хомского праволинейным
грамматикам. Более сильные вычислительные модели буцуг определены
позже, в лекциях 10. 14 и 15. Термин "автоматный язык" закреплен за
языками, распознаваемыми именно конечными автоматами, а не
какими-либо более широкими семействами автоматов (например,
автоматами с магазинной памятью или линейно ограниченными
автоматами).
В разделе 2.1 определяются понятия конечного автомата (для ясности
такой автомат можно называть недетерминированным конечным
автоматом) и распознаваемого конечным автоматом языка. В
следующем разделе дается другое, но эквивалентное первому
определение языка, распознаваемого конечным автоматом. Оно не
является необходимым для дальнейшего изложения, но именно это
определение поддается обобщению на случаи автоматов других типов.
В разделе 2.3 доказывается, что тот же класс автоматных языков можно
получить, используя лишь конечные автоматы специального вида (они
читают на каждом такте ровно один символ и имеют ровно одно
начальное состояние). Во многих учебниках конечными автоматами
называют именно такие автоматы.
Целую серию классических результатов теории формальных языков
составляют теоремы о точном соответствии некоторых классов
грамматик некоторым классам автоматов. Первая теорема из этой
25
серии, утверждающая, что праволинейные грамматики порождают в
точности автоматные языки, доказывается в разделе 2.4.
Другая серия результатов связана с возможностью сузить некоторый
класс грамматик, не изменив при этом класс порождаемых ими языков
Обычно в таком случае грамматики из меньшего класса называются
грамматиками в нормальной форме. В разделе 2.5* формулируется
результат такого типа для праволинейных грамматик. Сама эта теорема
не представляет большого интереса, но аналогичные результаты,
доказываемые позже для контекстно-свободных грамматик,
используются во многих доказательствах и алгоритмах.
Не все конечные автоматы подходят для конструирования
распознающих устройств, пригодных для практических приложений,
так как в общем случае конечный автомат не дает точного указания, как
поступать на очередном шаге, а разрешает продолжать вычислительный
процесс несколькими способами. Этого недостатка нет у
детерминированных конечных автоматов (частного случая
недетерминированных конечных автоматов), определенных в разделе
2.6. В разделе 2.7 доказывается, что каждый автоматный язык задается
некоторым детерминированным конечным автоматом.
2.1. Недетерминированные конечные автоматы
Определение 2.1.1. Конечный автомат (finite automaton, finite-stare
machine) - это пятерка Д/ _ Д, 7\ Д) , где _ конечный
входной алфавит (или просто алфавит ) данного конечного автомата,
(Q и А - конечные множества,
Л С О >. Е* < Q,
I С Q, 1 С Q . Элементы Q называются состояниями (state),
элементы I - начальными (initial) состояниями, элементы F -
заключительными или допускающими (final, accepting) состояниями.
Если q) G Д, то X, у) называется переходом (transition) из р
в q, а слово х - меткой (label) этого перехода.Пример 2.1.2. Пусть Q =
Пентус А. Е., Пентус М.Р
(1,2), L = {о,б}. I = ID, F
<21,
Л = {{1,ааа.1 ), (1,п6,2), {1.6.2), {2,с, )}.
Тогда (Q. S. Д. I. J?'} - конечный автомат.
Замечание 2.1.3. Конечные автоматы можно изображать в виде
диаграмм состояний (state diagram) (иногда их называют диаграммами
переходов (transition diagram)). На диаграмме каждое состояние
обозначается кружком, а переход - стрелкой. Стрелка из р в q,
помеченная словом х, показывает, что {jx ц) является переходом
данного конечного автомата. Каждое начальное состояние распознается
по ведущей в него короткой стрелке. Каждое допускающее состояние
отмечается на диа!рамме двойным кружком.
Пример 2.1.4. На диаграмме изображен конечный автомат из примера
2.1.2.
Замечание 2.1.5. Если в конечном автомате имеются несколько
переходов с общим началом и общим концом, то такие переходы
называются параллельными. Иногда на диаграмме состояний конечного
автомата параллельные переходы изображают одной стрел кой. При
этом метки переходов перечисляют через запятую.
Пример 2.1.6. На диаграмме снова изображен конечный автомат из
примера 2.1.2.
ab.b
Определение 2.1.7. Путь (path) конечного автомата - это кортеж
Пешус А.Е., Пентус М-Р Математическая теория формальных языков
{511.^1,91,62,.-.,^), где n 5s U и fi; = £ Л для
каждого i. При этом - начало пути qn - юнец пути п - длина пути
wx. . - wn - метка пути.
Замечание 2.1.8. Для любого состояния q € Q существует путь (q) .
Его метка - = , начало и юнец совпадают.
Определение 2.1.9. Путь называется успешным если его начало
принадлежит I, а юнец принадлежит F.
Пример 2.1.10. Рассмотрим конечный автомат из примера 2.1.2. Путь
{1. (1.6.2). 2. (2.е,1>, 1. (1.<гаа,1), 1, (1,6,2), 2} является
успешным. Его метка - baaab. Длина этого пути - 4
Определение 2.1.11. Слово w допускается (is accepted, is recognized)
конечным автоматом М, если оно является меткой неюторого успешного
пути.
Определение 2.1.12. Язык, распознаваемый конечным автоматом М, -
это язык L (М), состоящий из меток всех успешных путей (то есть из
всех допускаемых данным автоматом слов). Будем также говорить, что
автомат И распознает (recognizes, accepts) язык L (М).
Замечание 2.1.13. Если /Г1’^£0, то язык, распознаваемый
конечным автоматом (Q, S, A, J, , содержит s .
Пример 2.1.14. Пусть Л/= (Q. S. Д., где Q = {1,2},
S— - (1>,г = {1,21,
А-{{1.а,2), (2,6.1 }.
Тогда
£(М) = {(аЩ | п Js 0} U {(а6)"а | п Js О}.
Определение 2.1.15. Два конечных автомата эквивалентны, если они
распознают один и тот же язык.
Определение 2.1.16. Язык L называется автоматным (finite-state
language), если существует конечный автомат, распознающий этот язык.
Замечание 2.1.17. Обычно в учебниках используется более узкое
определение недетерминированного конечного автомата, но это не
меняет класса автоматных языков (см. лемму 2.3.3.).
Пример 2.1.18. Рассмотрим однобуквенный алфавит £ = (а} - При
любых фиксированных fc € N и шЕК язык {сЛ1™77 | п €
является автоматным.
Замечание 2.1.19. Каждый конечный язык является автоматным.
Определение 2.1.20. Состояние q достижимо (reachable) из состояния р,
если существует путь, началом которого является ю. а концом - q.
Лемма 2.1.21. Каждый автоматный язык распознается некоторым
конечным автоматом, в котором каждое состояние достижимо из
некоторого начального состояния и из каждого состояния достижимо
хотя бы одно заключительное состояние.
Пример 2.1.22. Рассмотрим конечный автомат (Q, £, Д, J, , где Q
- (1,2,3,4), Е-{a.b.c.d}, I - (1,2,4),f - (1,3,4),
Д—{(l,a,2). (1,6,4), (3,с,4), \4.d,l)}.
ЭДалим те состояния (и содержащие их переходы), которые не
удовлетворяют требованиям леммы 2.1.21. Получается эквивалентный
конечный автомат (Q*, Е, Д', , где Q* = {1,4}, I' =
29
Пентус А.Е., Пентус М.Р
(1,4),F' = {1,4},
А' = {(l.fe.4), (4.d. 1}}.
Замечание 2.1.23 Естественным обобщением конечного автомата
является конечный преобразователь (finite-state transducer), позволяющий
на каждом такте отправить несколько символов в дополнительный
"выходной" поток. В некоторых книгах конечными автоматами
называют именно такие устройства (с выходным потоком).
В данном пособии конечные преобразователи рассматриваться не будут.
Упражнение 2.1.24. Найти конечный автомат, распознающий язык
{zicv | и Е {о.Ь}*. и G {а.д}*}
Упражнение 2.1.25. Найти конечный автомат, распознающий язык
{ги е {и,/,,<}“ I |ш|с / 1}
Упражнение 2.1.26. Найти конечный автомат, распознающий язык
{а, б}* - ({о" | п 0} U {б" | п > 0})
Упражнение 2.1.27. Найти конечный автомат, распознающий язык
{fluft | и Е {fl, 6}*} U {Ьиа | и Е {а,
Упражнение 2.1.28. Найти конечный автомат, распознающий язык
{гге[а,6}“ | |ш|о>3]
Упражнение 2.1.28. Найти конечный автомат, распознающий язык
{ги Е {а.&}+ I /(гг) : 4} , где /(е) — 0, f (жа) 1 - и
/(жЬ) -1 /(ж) для любого Z Е {«. Ь}*
2.2. Конфигурация конечного автомата
Определение 2.2.1. Конфигурацией или мгновенным описанием
(instantaneous description) конечного автомата (Q, S. Д, I. /’)
называется любая упорядоченная пара (g»ir) , где q € Q и g £*.
Замечание 2.2.2. Содержательно конфигурация представляет собой
"мгновенное описание" конечного автомата. Если представить, что
исходное слово, принадлежность которого рассматриваемому языку
надо проверить, дано в некотором '^входном потоке", то в конфигурации
(у. слово w есть та часть исходного слова, которая пока осталась во
входном потоке (это некоторый суффикс исходного слова), a q - текущее
состояние "управляющего устройства".
Определение 2.2.3. Определим на множестве всех конфигураций
конечного автомата М бинарное отношение |- ( такт работы (step))
следующим образом. Если щ, q) G Л и W € S*» то
{ptxw) Н (q. щ?} • Иногда вместо |- пишут д .
Пример 2.2.4. Рассмотрим конечный автомат
из примера 2.1.2. Тогда (1,аЬ6а) h (2,6а) -
и
Определение 2.2.5. Бинарное отношение |_ определяется как
рефлексивное, транзитивное замыкание отношения Н .
Пример 2.2.6. Для конечного автомата из примера 2.1.2 выполняется
*
(1,оваа6) h (1,аааа6) и (1,аааа6) £ (2,е) -
Лемма 2.2.7. Пусть дан конечный автомат Л/ = (Q, S. Д.f1) •
Слово ш принадлежит языку L (М) тогда и только тогда, когда
для некоторых р^ I и q Е t верно {p.w) h
Лемма 2.2.8. Если (gj.j;) Н и {Sa»]/) I- > то
*
(81,^811 h (&,г! .
Доказательство. Лемму легко доказать индукцией по количеству тактов в
вычислительном процессе, ведущем из конфигурации в
конфигурацию .
Упражнение 2.2.9. Рассмотрим конечный автомат
Перечислить все конфигурации
*
(1,о6аа) Н .
(q, И') > удовлетворяющие условию
Упражнение 2.2.10. Существуют ли конечный автомат И, состояния qx,
* . *
q2 и слова х, у, z, тамге что (91. j:j|) h и {qL,zz') И (q2, z) Ч
Упражнение 2.2.11. Как связаны IQI, |S , 1Д| , |w| и число
достижимых из (g\ir) (в смысле |_ ) конфигураций?
2.3. Конечные автоматы с одно буквенными переходами
Лемма 2.3.1. Каждый автоматный язык распознается некоторым
конечным автоматом, не содержащим переходов с метками длины
больше единицы и имеющим ровно одно начальное состояние и ровно
одно заключительное состояние.
Пример 2.3.2. Рассмотрим язык, заданный конечным автоматом
,гдео = 11,2), Е-[о,6,с,4}, I = (1,2),F
= (1,2),
Д = {<1,06.2). (2. 4.1)}.
аЬ
cd
Тот же язык распознается конечным автоматом S, Д\ /*, , где
Q' {0,1,2, 3,4,5), I’ - (0},F' = {5},
Д' = {(1, а, 3), (3,6,2), (2. с, 4), (4,41), (0. е, 1), (0, е. 2). (1, е, 5), (2, е, 5)}.
Здесь первые два перехода заменяют старый переход и
следующие два перехода заменяют старый переход (2, cd, 1) Чтобы
обеспечить единственность начального состояния, добавлены переходы
(0»£,1) и (О,£,2)- Последние два перехода в Д' обеспечивают
33
единственность заключительного состояния.
Лемма 2.3.3. Каждый автоматный язык распознается некоторым
конечным автоматом, содержащим только переходы с метками длины
единица и имеющим ровно одно начальное состояние.
Доказательство. Согласно лемме 2.3.1 можно предположить, что
исходный язык задан конечным автоматом (Q, S, Д, 7, Е} , не
содержащим переходов с метками длины больше единицы, причем | 11
= 1. Построим искомый конечный автомат (QF. S. £±.1'. ,
положив Q ’ = Q, I * = I,
д'
{(р, щ г) | а Е Е и найдется такое q Е Q,
что (5, п. г) 6 А и существует путь из р в q с меткой е}.
Ег = {р € Q | найдется такое q Е Е,
что существует путь из р б q с меткой е}.
Пример 2.3.4. Пусть Д/ = (Q, £, Д, Д _/• } , где Q
S = {a,6},i - {1},F - {3},
А - b:i.u,2j, (2.t>.2), (2.с,3). (З.а.З)}.
Л егко убедиться, что L(AI) — {abman | т О,?? 0} • Тот же язык
распознается конечным автоматом (Q, S, Д', I, / , где F’ =
{2,3}и
Д' =hl.a.2}. (2.6.2). (2.а.3), (З.а.ЗЦ.
Упражнение 2.3.5. Найти конечный автомат с однобуквенными
переходами, распознающий язык | п 3, т 3}
Упражнение 2.3.6. Найти конечный автомат с однобуквенными
переходами, распознающий язык
{a"bmckd | п 0. m -> 0. 0 0}
Упражнение 2.3.7. Существуют ли автоматный язык, который не
распознается никаким конечным автоматом, содержащим только
переходы с метками длины единица и имеющим ровно одно начальное
состояние и ровно одно заключительное состояние?
2.4. Характеризация право линейных языков
Теорема 2.4.1. Каждый автоматный язык является праволинейным.
Без ограничения общности можно предположить, что исходный язык
задан конечным автоматом JQ, S, Л, 1, Л’} , где Q Г) Е = 0 и I =
{q0}. Положим li - Q, S - q0 и
Р - {р -> кд | (р. а;, в) е А} и {р ->с | р е /’}.
Пример 2.4.2. Язык, распознаваемый конечным автоматом из примера
2.1.2, порождается грамматикой
A j —» uuaAi,
A'i —> abl\2*
К1 -> ьк2.
А'г А'1,
К, -• е.
Теорема 2.4.3. Каждый праволинейный язык является автоматным.
Доказательство. Без ограничения общности можно предположить, что
исходный язык задан праволинейной грамматикой, не содержащей
правил вида /1 —* и , где £ 52’ Положим Q = N, I = {S},
35
F- {A e N | (A -> f) € P} и
Д - {(А, и. B) | (A -»• uB) e F} -
Пример 2.4.4. Пусть S — {с , &} - Рассмотрим грамматику
S —* аа,
S 1\
I'-tbaT,
T -» a.
Она эквивалентна грамматике
S —» ааЕ,
S-^i\
ТЬа*Г,
1' —» аЕ,
E-ts.
Язык, порождаемый этими грамматиками, распознается конечным
автоматом (Q. S. Д. 1.»где Q = {S,T,E},I = (S},F = {Е}
и
Д = {(S,aa,E), {S,e,l}, ('J',a,Я)}.
Ьа
Упражнение 2.4.5. Найти праволинейную грамматику порождающую
язык {w € {а, Ь}* | |ш|а : 2, |н'|ь : 2}
Упражнение 2.4.6. Существует ли такая праволинейная грамматика G,
36
что язык L (G)R не порождается ни одной праволинейной грамматикой,
имеющей столько же правил, сколько грамматика G?
Упражнение 2.4.7. Существует ли такая праволинейная грамматика G,
что язык L (G) R не порождается ни одной праволинейной грамматикой
с количеством правил n + 1, где п - количество правил в грамматике
G?
Упражнение 2.4.8. Существует ли такая праволинейная грамматика G с
тремя вспомогательными символами, что язык L (G) R не порождается
ни одной праволинейной грамматикой с тремя вспомогательными
символами?
2.5. Нормальная форма право линейных грамматик
Определение 2.5.1. Праволинейная грамматика в нормальной форме (
автоматная грамматика, регулярная грамматика, finite-state grammar) - это
праволинейная грамматика, в которой каждое правило имеет вид
A —г г. А —ю. ИЛИ 4 —юЛ. где Д е ЛГ, В е Л . а е Е-
Теорема 2.5.2. Каждая праволинейная грамматика эквивалентна
некоторой праволинейной грамматике в нормальной форме
Доказательство. Применим последовательно теорему 2.4.3, лемму 2.3.3
и воспользуемся конструкцией из доказательства теоремы 2.4.1.
Теорема 2.5.3. Если праволинейный язык не содержит пустого слова, то
он порождается некоторой праволинейной грамматикой в нормальной
форме без е -правил.
Упражнение 2.5.4. Найти праволинейную грамматику, эквивалентную
грамматике
5 -> ь,
5 -к ЬА’,
S —г саЕ,
Е —к а,
Е -к ЪЯ.
Пентус А. Е., Пентус М.Р
Упражнение 2.5.5. Найти праволинейную грамматику в нормальной
форме без < -правил, порождающую язык
{о^с" | k * О. т 1. > 0}.
Упражнение 2.5.6. Найти праволинейную грамматику в нормальной
форме без < -правил, порождающую язык
{а, д}* ({ап | п > 0} и {Ь71 | п > 0}).
2.6. Детерминированные конечные автоматы
Определение 2.6.1. Конечный автомат (Q, S, A, I, jb’) называется
детерминированным (deterministic), если
1. множество I содержит ровно один элемент:
2. для каждого перехода g) Е А выполняется равенство | х |
= 1;
3. для любого символа п £ 52 и для любого состояния р € Q
существует не более одного состояния § Е Q со свойством
е Л-
Пример 2.6.2. Конечный автомат из примера 2.1.14 является
детермини рованным.
Определение 2.6.3. Детерминированный конечный автомат
М = (Q.S, А, !./•') называется полным (complete), если для
каждого состояния р Е Q и для каждого символа q. е S найдется
такое состояние q Е Q. что {pta, q) Е А-
Пример 2.6.4. Конечный автомат из примера 2.1.14 эквивалентен
полному детерминированному конечному автомату (Q, А, /, F) ,
WO = {1,2,3}, Е = {а,6},1 = 111,F = {1,2}.
л-{{1,а,2), {1,6,3}, (2,а,3), (2,6, 1), (3,а,3), <3,6,3j}.
Замечание 2.6.5. Некоторые авторы используют в определении полного
детерминированного конечного автомата вместо отношения Д
функцию d: Q X X —* Q. От функции £ можно перейти к
отношению Д, положив
А — {(p,a%5iip,a)} | р е Q, а € X}.
Упражнение 2.6.6. Является ли детерминированным следующий
конечный автомат?
Упражнение 2.6.7. Является ли полным следующий
детерминированный конечный автомат с алфавитом X = { а, 6, с} ?
2.7. Преобразование конечного автомата к
детерминированному виду
Теорема 2.7.1 Каждый автоматный язык распознается некоторым
полным детерминированным конечным автоматом.
Доказательство. Без ограничения общности можно предположить, что
исходный язык задан конечным автоматом (Q, S, Д,У,,
содержащим только переходы с метками длины единица. Для любых
о. £ 53 и Н С Q обозначим
(/Г) {g е Q | (д, с, 0 е Д для некоторого р G ТУ].
Обозначим через множество всех подмножеств множества Q.
Построим искомый полный детерминированный конечный автомат
(Q',S,A', , положив Qr — P(Q),
Л' = {(Я.а, Да(Я)) | Я С Q, а G Е],
/' = I и Ь’1 — [Н С Q | Н П F 0} .Пример 2.7.2. Пусть
S___{а, о} • Рассмотрим конечный автомат
Л/ = ({1,2,3},Е,Д.{1}.{3}),где
Д-{(1,а,1), (2,6,3)}.
ь
Если применить конструкцию из доказательства теоремы 2.7.1. и затем
удалить состояния, не достижимые из начального состояния, то
получится полный детерминированный конечный автомат
40
Пентус А.Е., Пентус М.Р
где
Д'= {({!},а.{1.2}), ({!},(., {!}>. ({1.2},а.{1.2}),
{{1,2},fc, {1,3}), ({1,3},О,{1,2}), ({1,3},Ь,{1})}.
Упражнение 2.7.3. Найти полный детерминированный конечный
автомат, эквивалентный автомату, изображенному на диаграмме.
Упражнение 2.7.4. Найти детерминированный конечный автомат для
языка, порождаемого 1рамматикой
S аТ,
S —> aR,
1 -+ЬГ.
aR,
Упражнение 2.7.5. Найти детерминированный конечный автомат,
распознающий язык {дий | iz £ {о, 6}*} U | и G {о, Ь}*}
Основные свойства автоматных языков
В данной лекции доказываются свойства замкнутости класса всех
автоматных языков относительно итерации, конкатенации,
объединения, дополнения и пересечения, доказывается так называемая
лемма о разрастании, изгорая во многих случаях позволяет установить
неавтоматность формального языка. Приведены практические примеры
и предоставлены упражнения для самостоятельного решения
Для практического применения теории конечных автоматов нужны
средства, позволяющие выяснять, является ли некоторый формальный
язык автоматным. Для получения положительного ответа на такой
вопрос могут пригодиться достаточные условия автоматности, для
отрицательного ответа - необходимые условия автоматности. В этой
лекции рассматриваются наиболее часто используемые условия,
касающиеся автоматности формального языка.
В первых двух разделах этой лекции доказываются свойства
замкнутости класса всех автоматных языков (относительно итерации,
конкатенации, объединения, дополнения, пересечения и т. д.). Этн
свойства можно использовать как достаточные условия автоматности.
Например, если нужно выяснить, является ли язык L автоматным, и
уцается представить L в виде L j Г) Дд, где языки Lx и Lz автоматные,
то и язык L обязательно является автоматным.
В последних двух разделах этой лекции доказывается так называемая
лемма о разрастании (в англоязычной литературе pumping lemma),
изгорая во многих случаях позволяет установить неавтоматность
формального языка. К сожалению, эта лемма помогает не всегда, так как
дает всего лишь необходимое условие, а не критерий автоматности.
3.1. Свойства замкнутости класса автоматных языков
Теорема 3.1.1. Класс автоматных языков замкнут относительно
итерации, конкатенации и объединения.
Доказательство. Без ограничения общности можно предположить, что
каждый из исходных языков задан конечным автоматом с одним
42
начальным и одним заключительным состоянием. Тогда во всех трех
случаях результирующий автомат получается из исходных путем
добавления нескольких <= -переходов и состояний и назначения новых
начальных и заключительных состояний.
Пример 3.1.2. Пусть £ = {с., &, с} • Рассмотрим конечный автомат
ЛЛ^({1,2,3},^Дь{1М2}Ь
где
Тогда язык L (M-l ) * распознается конечным автоматом
М2 - ({1,2,3,4}. Е. Дт U {(4, е. 1}, (2, е, 4}}, {4}, {4}'.
Пример 3.1.3. Пусть £ — {а, &, с} • Рассмотрим конечный автомат
из примера 3.1.2 и конечный автомат
({4Л},£,Л2,{4},{5}),
где
43
Пентус А.Е., Пентус М.Р
А, - (<4.с,4), (4,а,5), (5,с,5)}.
Тогда язык распознается конечным автоматом
Мз - ({1,2.3,4,5}. Е. Ai U Д2 U {<2, с, 4j}, {1}, {5}),
а язык U jLfA/a) распознается конечным автоматом
ЛД - ({1,2,3,4,5},Е, ДА ,Д2, {1.4 , {2.5 ).
Упражнение 3.1.4- Существует ли такой автоматный язык L, что язык .jR
не является автоматным?
Упражнение 3.1.5. Существует ли такой автоматный язык £, G 5Z*. что
язык Pref <L) не является автоматным?
44
Упражнение 3.1,6. Существует ли такой автоматный язык С £*, что
язык S u f (L) не является автоматным?
Упражнение 3.1.7. Существует ли такой автоматный язык L G S*, что
язык Subw (L) не является автоматным?
Упражнение 3.1,8. Существует ли такой автоматный язык j. G 5Z*» что
язык Subseq (L) не является автоматным?
Упражнение 3.1.9. Существует ли такой автоматный язык L, что язык
Cvclel L) {ху | у.т Е £ для некоторых слов х и у}
не является автоматным?Упражнение 3.1.10. Существует ли такой
автоматный язык L, что язык
{ и1 и1 € £ или |
не является автоматным?Упражнение 3.1.11. Найти праволинейную
грамматику, порождающую язык
{w е {a,ft}’ I |w|Q 2} {гк £ {c,d}* | |w|t : 2}.
Упражнение 3.1.12. Найти праволинейную грамматику, порождающую
язык L*, если язык L порождается грамматикой
S аЧ\
1 ->bS,
Г aR,
R с'1\
R >C.
3.2. Пересечение и дополнение автоматных языков
Теорема 3.2.1. Класс автоматных языков замкнут относительно
дополнения и пересечения.
45
Доказательство. Если язык L распознается полным детерминированным
конечным автоматом (Q, S, А, /, /’) , то язык X* — L распознается
конечным автоматом (Q, £, Д, /, (J — jP) .
Пересечение выражается через объединение и дополнение (закон де
Моргана).
Замечание 3.2.2. Автоматность пересечения двух автоматных языков
можно легко доказать и без привлечения теоремы 2.7.1. Для этого
достаточно построить по двум конечным автоматам с однобуквенными
переходами
ЛЛ - (<21,Ъ,Д1,Л.Л), ЛЪ - {<32.е, Д2.Л.К2}
новый конечный автомат
м - (<31 Л, Л h,t\ X Ь'2),
где
Д “ а. («!>№)) I е Д1> (Р2.И.52) £ Дг}.
Упражнение 3.2.3. Обозначим через L язык, порождаемый грамматикой
S —> aS. Т + а1\
S^bS, T->bl.
S -♦ abadl. T —> e.
S-» babb'l,
Найти праволинейную грамматику, порождающую язык {а, £)]* — /,
.Упражнение 3.2.4. Обозначим через L язык, порождаемый грамматикой
46
S-> F, М -> аЛ/, £ -> bF
S —+ ааМ, А/ -> 6Л-/, F —* об?'
S->T, Л/ -> £, f’1 —> bai1'
Т -> аТ. h —> аба?
Т->ЬТ, F —* ааа?’
jf" —* аа, ?' —> E.
Найти праволинейную грамматику, порождающую язык {а, б}* — L
.Упражнение 3.2.5. Обозначим через L язык, порождаемый грамматикой
S > и1\
S >ьс.
Г -* til',
Г -* ьт,
Т 6,
-»аГ,
С >ЬС,
С-> а.
Найти праволинейную грамматику, порождающую язык Г..
Упражнение 3.2.6. Существуют ли такие детерминированные конечные
автоматы М и Mg, что язык L(Afi) U не порождается ни
одним детерминированным конечным автоматом с количеством
состояний n-Ln2+n-L+n2, гДе П1 " количество состояний автомата Мх и
ng - количество состояний автомата М2?
3.3. Лемма о разрастании для автоматных языков
Лемма 3.3.1 (pumping lemma, лемма о разрастании, лемма о накачке,
лемма-насос). Пусть L автоматный язык над алфавитом J2- Тогда
найдется такое положительное целое число р, что для любого слова
w G Z' длины не меньше р можно подобрать слова а;, у, z € 5Z*, для
которых верно xyz = w, у -ф. е , |а?у| у и xylZ G L для всех i О
Доказательство. Пусть язык L распознается конечным автоматом
(Q, S, A, I, , содержащим только переходы с метками длины
47
единица. Положим р
успешного пути
| QI. Пусть слово w является меткой
(90.e1.Q1.e2....е„)
и |w| = л р- Согласно принцип}' Дирихле найдутся такие индексы
j и к, что О j < А: р и qj = q1; (ведь множество индексов
{0,1,. ... р} содержит р+1 натуральных чисел, а значения qA берутся
из множества, содержащего всего р элементов). Выберем слова х, у и z
так, что | х | - j, | у | = k - j и xyz — w-Пример 3.3.2. Пусть
S — {а, 6} • Рассмотрим автоматный язык
£ = [(аЬ)~ | п :> 0 и | п > 0}.
Положим р - 3. Тогда для любого слова -ш £ £ длины не меньше р
найдутся слова а.’, у„ Z Е 5Т, соответствующие утверждению леммы
3.3.1. Действительно, если w = abu для некоторого слова и, то
положим а; = £, у = ab, z = и ; иначе w = aabu и можно
положить х = а, у = ab, z = и.Упражнение 3.3.3. Является ли
автоматным язык
[(Г’Ьа'’1 | т > 0р
Упражнение 3.3.4. Является ли автоматным язык {an | существует
такое число р п, что р простое и р + 2 простое} ?
Упражнение 3.3.5. Является ли автоматным язык
| к ф п или m — 0}?
Упражнение 3.3.6. Является ли автоматным язык
{(aab)"fl(aba)Tl | п 0)?
Упражнение 3.3.7. Является ли автоматным язык
{шин* | u е {a,b}*, v е {а, 6}*, |щ|ь На}?
48
Упражнение 3.3.8. Является ли автоматным язык
{vnv | it G г G {а. 6}*. |12|ь |v|G}?
Упражнение 3.3.9. Является ли автоматным язык
{a^wb^ | fr 0, ш G {а,Ь}*, |w|Q:3}?
Упражнение 3.3.10. Является ли автоматным язык, порождаемый
[рамматикой
S —* aSa,
S » bSa,
S -* bSb,
3.4. Примеры неавтоматных языков
Пример 3.4.1. Рассмотрим язык f, — f| п 0} над алфавитом
S — {а, 6} • Утверждение леммы 3.3.1 не выполняется ни для какого
натурального числа р. Действительно, если w = abpap, то х - abk,
у = bm, z = bp-k-rnap для некоторых Л О и m 1 или а; = £,
у = ab1, z = Ьр-1ар для некоторого I (J. В обоих случаях
.гцуг L - Таким образом, язык L не является автоматным.
Упражнение 3.4.2. Пусть £ — Ь, с) - При каких словах ц £ {g. fe}*
и !•’ G язык | ТО > 0} является автоматным?
Замечание 3.4.3. Условие, сформулированное в лемме 3.3.1, является
необходимым для автоматности, но не достаточным.
Пример 3.4.4. Пусть S — -{a, fe} - Рассмотрим язык L = {akbrnan I
k=0 или m=n}. Положим р = 1. Тогда для любого слова w £ L
длины не меньше р найдутся слова х.г/, £ G 5S*, соответствующие
49
утверждению леммы 3.3.1. Тем не менее язык L не является
автоматным, так как
£ П | m О. п0} — {obnan | п 3е 0}.
Лемма 3.4.5*. Пусть L - автоматный язык над алфавитом 52- Тогда
найдется такое положительное целое число р, что для любого слова
w 6 £ можно подобрать слова .г, у, z £ 53*, для которых верно xyz
w, |у| ?> [|tts|/jp] и xylz Е L для всех i 0- Здесь [т] означает целу
часть числа in.
Доказательство. Пусть L распознается конечным автоматом
(Q, S, А, /, f'1} . содержащим толью переходы с метками длины
единица. Положим р — IQI • Пусть слово w является меткой
успешного пути (50,Ei, ? qn.) Обозначим L = [|w|/p].
Если 1 = 0, то положим х = Е и у — Е. Пусть Z > 0- Согласно
принципу Дирихле найдутся такие натуральные числа j и к, что
О iC j < к 5Z р и q i = qkl. Выберем слова х, у и z так, что | х | =
j 1, I у | = kl - jlHxyz = w.
Упражнение 3.4.6. Является ли автоматным язык
{отЬв | ?п 1 или п простое }?
Упражнение 3.4.7. Является ли автоматным язык
| и Е {a>b}+, v Е {а?Ь}*}?
Упражнение 3.4.8. Является ли автоматным язык
{w G {<ц &}* | множества {а: £ {о, &}* | xaab С U’} и
{я: £ | xbba EZ it’} равномощны?
Упражнение 3.4.9. Является ли автоматным язык
{и- £ | множества [а: £ (а. Ь}* | таай С w) и
50
Пентус А. Е., Пентус М.Р
{а: 6 {а, &}* | sba С ш} равномощны?
Упражнение 3.4.10. Является ли автоматным язык
\akhr'nn | Л* > 1, п > 0} U {bfcabma" | fr 0, л}?
Упражнение 3.4.11. Является ли автоматным язык, порождаемый
грамматикой
F —+ abb,
f ’ —+ abbb/Y’/’,
У*’ —* nbbbbh /’’?
Пентус А.Е., Пентус М Р
Дополнительные свойства автоматных языков
В данной лекции доказывается замкнутость класса всех автоматных
языков относительно взятия гомоморфного образа и относительно
взятия полного гомоморфного прообраза, определяются понятия
побуквенного гомоморфизма и локального языка. Приведены
практические примеры и предоставлены упражнения для
самостоятельного решения
Эта лекция содержит дополнительные результаты, не используемые в
дальнейшем изложении. В начале лекции доказывается замкнутость
класса всех автоматных языков относительно взятия гомоморфного
образа и относительно взятия полного гомоморфного прообраза.
В разделе 4.2* определяются понятия побуквенного гомоморфизма и
локального языка и доказывается еще один критерий автоматности:
среди языков, не содержащих пустого слова, автоматными являются в
точности образы локальных языков при побуквенных гомоморфизмах.
В последнем разделе этой лекции устанавливается числовой критерий
автоматности для языков над однобуквенным алфавитом (в терминах
арифметических прогрессий) и доказывается связанное с длинами слов
необходимое условие автоматности (для произвольного алфавита).
4.1. Гомоморфизмы и автоматные языки
Теорема 4.1.1. Для любого гомоморфизма h : S* —* Г* и автоматного
языка Z С язык h (L) является автоматным.
Доказательство. Пусть исходный язык L задан конечным автоматом
Л/ = (Q, Д, ЛК). Положим
Л' = {<Р,htz'l.q') I (р.ж.д) е Д}.
Тогда язык h (L) распознается конечным автоматом У 2, I, Л)
Теорема 4.1.2. Для любого гомоморфизма h: S£ —> S* и автоматного
языка I С S* язык!.-1 (L) является автоматным
Доказательство. Без ограничения общности можно предположить, что
исходный язык L задан конечным автоматом = I.f),
где Д не содержит переходов с метками длины больше единицы.
Положим
Л’ = {{р, а, д) | о Е Si и существует путь из р в q с меткой Л,(а)
ЯзыкИ-1 (L) распознается конечным автоматом (Q, Si, Az. Г..
Упражнение 4.1.3. Существует ли такой автоматный язык L над
алфавитом {а,Ь}, что язык {a|W^ | w Е Л} не является
автоматным?}
Упражнение 4.1.4. Существует ли такой автоматный язык L над
алфавитом {а,Ь}, что язык {u? Е {о,Ь}* | Е £/} не является
автоматным?}
Упражнение 4.1.5. Существует ли такой автоматный язык L над
алфавитом {а,Ь}, что язык {w Е {а,6}* | (Эз? Е £-) |й-| ~= |и’|} не
является автоматным?
4.2*. Локальные языки
Определение 4.2.1. Гомоморфизм h: S* —> называется
побуквенным (length-preserving), если | И (а) I = 1 для каждого
а Е S-j-
Замечание 4.2.2. Гомоморфизм h.: S* —* S* является побуквенным
тогда и только тогда, когда | h (w) | = I w | для каждого слова w Е S*
Пентус А.Е.. Пентус М.Р
Определение 4.2.3. Язык f. С Е* называется локальным, если
существуют такие языки Z j С Е*, £2 С Е*, £,3 С Е*. что
1. языки Lx и L2 содержат только однобуквенные слова;
2. язык L3 содержит только двухбуквенные слова;
3. £ - ((£1-ЕЧ Г'(Е*-£2)) (Е* -£3 -V)-
Лемма 4.2.4. Каждый локальный язык является автоматным.
Очевидно, что языки Lx, L2 и L3 в определении 4.2.3 являются
конечными. Остается применить замечание 2.1.19 и теоремы 3.1.1 и
3.2.1 (напомним, что разность языков выражается через пересечение и
дополнение).
Теорема 4.2.5. Пусть L - язык над алфавитом Е и L не содержит пустого
слова. Язык L является автоматным тогда и только тогда, когда
существуют такие алфавит Ео» локальный язык Lt । С Е*( и побуквенны
гомоморфизм h: Eq —* Е*,что L = h(L0).
Доказательство. Достаточность следует из леммы 4.2.4 и теоремы 4.1.1.
Для доказательства необходимости рассмотрим конечный автомат
(Q, S, А, /, с однобуквенными переходами, задающий язык L. В
качестве алфавита Ео возьмем множество 'V Положим
£1 = {(a a, д} | Ip, a, ?') е А. р е I},
Cz_ {(ао,й I е A, s е г},
Г?. = o.|,g I-,р|,а.|,д, ;еЛ, (р2,а2.вз)еД,
и a, q}) — а для каждого д) € А .Пример 4.2.6. Пусть
Е — {а. Ь,с} - Рассмотрим конечный автомат М2 из примера 3.1.3 и
обозначим L = L (М2). Применим конструкцию из доказательства
теоремы 4.2.5 к языку L. Для удобства заменим ^4, с, 4} на d,
(4, а, 5} на е и {5, С, 5} на f. Получим алфавит Ео = {d, Е»/} и
54
Пентус А.Е.. Пентус М-Р
локальный язык
La = (({d, е} Ц’) П (EJ (е, /}) 1 - (EJ {df. cd. ее, /d. fe] Ej).
Можно доказать, что
LB = {dmef" т 0. п > 0).
Побуквенный гомоморфизм h задается равенствами /i(d)_______с,
/1(е) — а и h{f) — с- Легко проверить, что действительно L =
h(L0).
Упражнение 4.2.7. Пусть £— {о, b, С, <f] • Существует ли такой
побуквенный гомоморфизм /г; £* —► £*, что h(abc) = Ьас и
h(da) = da?}
Упражнение 4.2.8. Является ли локальным язык
над алфавитом £___ {я, 6} ?Упражнение 4.2.9. Является ли локальным
язык
{паи «€{а,б}*}
над алфавитом £ — {а,t} ?Упражнение 4.2.10. Является ли
локальным язык
{tua | v. G {а, й,с}*}
над алфавитом £ — {а. /г, с} ?
4.3. Длины слов в автоматных языках
Определение 4.3.1. Пусть и уп>С1- Множество
называется заключительно периодическим (ultimately periodic) с периодом
55
Пентус А.Е., Пентус М.Р
m, если выполнено условие
(Зло £ N) (Vn > ио) (п € Л«-*п + т € Л).
Лемма 4.3.2. Пусть *Д С. 14. Тогда равносильны следующие
утверждения:
1. множество^ является заключительно периодическим ;
2. найдутся такие положительное целое число m и конечные
множества Д4 С 31 и С {0,1,..., тп — 1} . что
Л {/с Е N | (fc mod m-) Е К} — Ai:
3. множество А является объединением конечного семейства
арифметических прогрессий.
Теорема 4.3.3. Язык L над однобуквенным алфавитом {а} является
автоматным тогда и только тогда, когда множество {/г £ 14 | Е / }
является заключительно периодическим.
Доказательство. Для доказательства необходимости достаточно
рассмотреть детерминированный конечный автомат, распознающий
язык L.
Теорема 4.3.4. Если язык L является автоматным, то множество
£|гд| | W Е L} является заключительно периодическим.
Доказательство. Рассмотрим конечный автомат, распознающий язык L.
Заменим все символы в метках переходов на символ а. Осталось
применить теорему 4.3.3 к полученному автоматному языку над
однобуквенным алфавитом { а I.
Упражнение 4.3.5. Существует ли такой автоматный язык L над
алфавитом {а}, что язык {Д'1 | не является автоматным?
Упражнение 4.3.6. Существует ли такой автоматный язык L над
алфавитом {а}, что язык | а2" £ не является автоматным?
56
Упражнение 4.3.7. Существует ли такой автоматный язык L-, над
алфавитом что язык
L-2 — {w € Е* | и'х € I»i, |х| = 2'u для некоторого слова .г ЕЕ*}
не является автоматным?
Упражнение 4.3.8. Существует ли такой автоматный язык L над
алфавитом {a, b }, что язык {о2 | ап £ £j- не является автоматным?
Упражнение 4.3.9. Существует ли такой автоматный язык L над
алфавитом {а, Ь}, что язык {о71 | q"3 } не является автоматным?
Регулярные выражения
В данной лекции рассматривается наиболее удобный и компактный
способ конечного описания формального языка - регулярные
выражения. - который находит практическое применение во многих
компьютерных приложениях, таких как текстовые редакторы,
интерпретаторы командной строки и автоматические генераторы
лексических анализаторов. Приведены практические примеры и
предоставлены упражнения для самостоятельного решения
До сих пор мы рассматривали два способа конечного описания
формального языка: грамматики и автоматы. Третий способ, часто
наиболее удобный и компактный, - регулярные выражения. В них
используются символы, обозначающие итерацию, кон катен ац ию и
объединение языков. Например, для обозначения итерации
традиционно используется символ "звездочка".
Регулярные выражения находят практическое применение во многих
компьютерных приложениях, таких как текстовые редакторы и
интерпретаторы командной строки. В автоматических генераторах
лексических анализаторов принято использовать именно регулярные
выражения в качестве формализма, с помощью которого задаются
классы однотипных лексем (например, класс идентификаторов, класс
десятичных констант). В языках программирования Perl, Python и др,
имеется встроенная поддержка регулярных выражений.
В начале лекции даются необходимые определения. Затем в разделе 5.2*
приводятся некоторые тождества регулярных выражений, такие как
ассоциативность конкатенации, дистрибутивность конкатенации
относительно объединения и др. В разделе 5.3 доказывается, что
регулярные выражения задают в точности класс автоматных языков. В
разделе 5.4* формулируется теорема о классификации автоматных
языков по их сложности, измеряемой звездной высотой (необходимой
глубиной вложенности итераций при задании данного языка
регулярным выражением).
5.1. Определение регулярного выражения
Пентус А. Е., Пентус М.Р
Определение 5.1.1. Регулярное выражение над алфавитом $2
определяется рекурсивно следующим образом: 0 является регулярным
выражением; 1 является регулярным выражением; если п £ 52, то а
является регулярным выражением; если е и f являются регулярными
выражениями, то (t p/j, (е-/) и тоже являются регулярными
выражениями.
Для экономии скобок будем считать, что операция * связывает сильнее
(то есть имеет более высокий приоритет), чем умножение, а умножение
связывает сильнее, чем сложение. Вместо e-f часто пишут просто ef.
Пример 5.1.2. Пусть Е={а,6}. Тогда ((и-Ь)*-(1+а)) является
регулярным выражением над алфавитом 52 •
Определение 5.1.3. Каждое регулярное выражение е над алфавитом 52
задает (denotes, represents) некоторый язык над алфавитом
(обозначение Z(ej ). определяемое рекурсивно следующим образом:
£(а) {а}, если абЕ,
£(0) 0,
Z(l) {Е},
£(«+/) £(ej U L(f),
Це-f) £(е) £(/),
£(е*)^£(е)’.
Заметим, что в правой части последнего выражения символом
обозначена итерация языка (см. определение 1.2.7).
Вместо часто пишут просто е.
Пример 5.1.4. Пусть Е — {о, &} - Согласно определению
= {(ab)n | п 0}U {(ab)"a | п 0).
Определение 5.1.5. Язык L называется регулярным если он задается
некоторым регулярным выражением.
Определение 5.1.6. Пусть е - регулярное выражение. Тогда 7-*- е*е-
Упражнение 5.1.7. Упростить регулярное выражение ( (а+bc) *) *
Упражнение 5.1.8. Найти праволинейную грамматику для языка ab а
Упражнение 5.1.9. Найти праволинейную грамматику для языка
( (а+Ы а) *.
Упражнение 5.1.10. Найти полный детерминированный конечный
автомат для языка (а+Ь)*(aab+abaa+abb) (а+Ь)*.
Упражнение 5.1.11. Найти полный детерминированный конечный
автомат для языка (а+Ь) * (а (Ь+1) abb+baa) (а+Ь)*.
Упражнение 5.1.12. Найти полный детерминированный конечный
автомат для языка (Ь+с) ((ab) *с+ (Ьа) *) *.
Упражнение 5.1.13. Найти полный детерминированный конечный
автомат для языка (abab) + (aba) *.
Упражнение 5.1.14. Найти полный детерминированный конечный
автомат для языка (с+<а+Ь+с) (b+а(Ь+с)*а))*(a+b+с).
5.2*. Свойства регулярных выражений
Лемма 5.2.1. Регулярные выражения образуют ассоциативное
полукольцо с операциями (0, +, 14 •), то есть для любых регулярных
выражений е, f и г выполняются следующие тождества:
1. e+f = f+е;
2. е+0 = е;
3. (е+ f) 4-g- б 4 (/ + ?);
4- е-1 = t ;
60
Пентус А.Е., Пентус М.Р
5- 1-е — е ;
6- = e-(f-g) :
7- e-(f+g) - tf+eg ;
8- i/+9)-e = f-e+g-e :
9. p-0 = Q :
10. ил П.
Равенство понимается как равенство языков, задаваемых регулярными
выражениями.
Лемма 5.2.2. Для любых регулярных выражений е и f выполняются
следующие тождества:
1. е+е = е ;
2. (1+е + ее + . . . +еп-1) (еп) * = е* для любого и 1 ;
3. (e*f)*e* = (e+f)*;
4. l+e(fe)*f = (ef)‘.
Лемма 5.2.3. Для любых регулярных выражений • , f и д, если е =
ef+ди * £(/'1, то е = gf*.
Упражнение 5.2.4. Упростить регулярное выражение 0 .
Упражнение 5.2.5. Упростить регулярное выражение (a+b+ab) .
Упражнение 5.2.6. Упростить регулярное выражение (а Ь) +(Ь а) .
Упражнение 5.2.7. Упростить регулярное выражение ( (b+a) *b+l)b*.
Упражнение 5.2.8. Упростить регулярное выражение
( (ab+aab) *а*) *.
Упражнение 5,2.9. Упростить регулярное выражение
(abbaab+abbaaba) .
Упражнение 5.2.10. Упростить регулярное выражение (а+Ь)
(a(a+b) a+b(a+b) b).
Упражнение 5.2.11. Упростить регулярное выражение (eb”
(1 + с (d+ab*c) *а) b*f) *eb*c(d+ab*c) *.
5.3. Теорема Клини
Определение 5.3.1. Назовем обобщенным конечным автоматом аналог
конечного автомата, где переходы помечены не словами, а регулярными
выражениями. Метка пути такого автомата - произведение регулярных
выражений на переходах данного пути. Слово w допускается
обобщенным конечным автоматом, если оно принадлежит языку'
задаваемому меткой некоторого успешного пути
Замечание 5.3.2. Каждый конечный автомат можно преобразовать в
обобщенный конечный автомат, допускающий те же слова. Для этого
достаточно заменить всюду в метках переходов пустое слово на 1, а
каждое непустое слово - на произведение его букв.
Замечание 5.3.3. Если к обобщенному конечному автомату добавить
переход с меткой 0. то множество допускаемых этим автоматом слов не
изменится.
Пример 5.3.4. Пусть £ = {а, Ь, с} - Обобщенный конечный автомат
(Q,S, А,7,Г) ,гдеQ - {1,2,3},I = (1,2},F = {3},
Д = {(1.0,2), (2,Ь"Ьа,2). (2,Ь*.3)),
fc’ba
допускает все слова в алфавите кроме слов, содержащих подслово
62
Пентус А.Е.. Пентус М.Р
аа.
Теорема 5.3.5 (теорема Клини). Язык L является регулярным тогда и
только тогда, когда он является автоматным.
Доказательство. Пусть е - регулярное выражение. Индукцией по
построению е легко показать, что задаваемый им язык является
автоматным (см. теорему 3.1.1).
Обратно, пусть язык L распознается некоторым
(недетерминированным) конечным автоматом с одним начальным
состоянием и одним заключительным состоянием. Существует
эквивалентный ему обобщенный конечный автомат
{Q, S, Д, {<21}, {</2}} > гДе 91 92- Если есть несколько переходов с
общим началом и общим концом (такие переходы называются
параллельными ), заменим их на один переход, используя операцию +.
Устраним по очереди все состояния, кроме qx и q2. При устранении
состояния q нужно для каждого перехода вида {рр, /р„ g) , где pi q,
и для каждого перехода вида /2,^2} • гДе Р2 Ч> добавить переход
(pi. /19*/2, ₽2 ) • гДе регулярное выражение g - метка перехода из q в
q (если нет перехода из q в q, то надо добавить переход {р1% А/2.^2)
), и снова всюду заменить параллельные переходы на один переход,
используя операцию А
После устранения всех состояний, кроме qx и q2, получится
обобщенный конечный автомат {{др, 92}- Д'. {91 } {92}) »гДе
Д' ~ {{91, Ell. 91), <91. £12,92), <92* Е21, 91), {(ft, E22,92>}-
Очевидно, что £- L(e*tE12 («22 +€‘2ie*1ei2j’ j-Пример 5.3.6,
Рассмотрим язык, распознаваемый конечным автоматом
63
Тот же язык порождается обобщенным конечным автоматом
Л/1 - (t<n..ft,e3.ft},E.Ai,{gi},{52}),
где
Д1 - «91,0,54), <92,й>,д2), <д2,6ос,д4),
<ft,o,ft), <ft,c,ft). fft.l-ft), <54,6,94)}-
Ь сЪ
После устранения состояния 33 получается обобщенный конечный
автомат
Дз - (53,06,52), (g2. bae, 54),
{в4, (s4,Ы-1-с,в4>}.
Можно упростить регулярные выражения и получить
Дз = {<51.0,54), {вз,сЬ,д2), (52,600,54),
(54,0.51). (в4-С,5з), (54,6+0,54)}-
После устранения состояния q4 и упрощения регулярных выражений
получается обобщенный конечный автомат
А/з — . ya}. Е, Аз. {91}, {9а}л
где
Аз - {(gi,a(6+c)*aTQi). (gi. а(6+с)*с,д2),
(92s 6ое(6+с)*а, ql}, (g2, сЫ-Ьсс(Ы-с)*с, g2)}-
а(Ы-с)“о сЬ+Ьис(Ь+с)*с
Следовательно, язык L (М) задается регулярным выражением
(а(6+с)*а)*о(6+е)*е-
•tc&+6ac(6+c)*c4-fcoc(fc4-c)*£2iaffc+e)*o)*&(6-t-c)*c)*.
Упростив это регулярное выражение, получим
Е(Л/) — L^o^aG^-6^-c^-c(cЬ)^:feac)*c^c&l’,,).
6S
Упражнение 5.3.7. Найти
порождаемого грамматикой
регулярное
выражение для языка,
S -> ЬТ,
S —»
Т cR,
1’ > eU,
R dT,
U ->£.
Упражнение
5.3,8. Найти регулярное выражение для языка
{и? е {Ml* I (М- - Нь)41
Упражнение 5.3.9. Найти регулярное
выражение для языка
Z1 П La П £з, где LT = (aaab+c+d) *, L2 = (a*ba*ba*bc+d) *,
((a+b)*c(a+b)*cd)
Упражнение 5.3.10 Найти регулярное выражение для дополнения языка
(a+b) *bbb (а+Ь) * в алфавите {а, Ы.
Упражнение 5.3.11 Найти регулярное выражение для дополнения языка
(ab+ba)*(1+а+Ь) в алфавите { а, Ь).
Упражнение 5.3.12 Найти регулярное выражение для дополнения языка
(a+b) * (aab+abaa+abb) (a+b) * в алфавите {а, Ь}.
Упражнение 5.3.13 Найти регулярное выражение для дополнения языка
(аа (ab) *bb (ab) *) * в алфавите {а, b}.
5.4*. Звездная высота
Определение 5.4.1. Звездная высота (star-height) регулярного выражения
(обозначение sh (е) ) определяется рекурсивно следующим образом:
66
Пилус А.Е., Пентус М.Р Математическая теория формальных языков
sh(a) О,
sh(O) О,
sh(l)^l,
sh(e4 f) max(sh(£),sh(/)),
sh(e•/) max(sh(E), sh(/) j,
sh(e*) 1 -f-sh(e).
Пример 5.4.2. Пусть S = (a, &. с} - Тогда
sh((a*+b*+ab)*+(ab*c)*) = 2.
Определение 5.4.3. Звездной высотой регулярного языка L (обозначение
sh (L) ) называется минимум звездных высот регулярных выражений,
задающих этот язык.
Замечание 5.4.4. Регулярный язык L является конечным тогда и только
тогда, когда s h (L) = 0.
Теорема 5.4.5. Пусть |Е| 2- Тогда для любого n Е N существует тако1
регулярный язык Z, С Е*, что sh (L) = п.
Доказательство можно найти в книге Саломаа А. Жемчужины теории
формальных языков. - М.: Мир, 1986 с.41-46.
Пример 5.4.6. Пусть Е — (а, и
r={wes* |(Мо-М4В}.
Тогда sh (L) = 2. Действительно, язык L задается регулярным
выражением (ab+ba+ (aa+bb) (ab+ba) * (aa+bb) ) * и не задается
никаким регулярным выражением меньшей звездной высоты.
Замечание 5.4.7. Неизвестно, верен ли аналог теоремы 5.4.5 для
обобщенных регулярных выражений, в которых, помимо итерации,
конкатенации и объединения, разрешена операция дополнения.
67
Упражнение 5.4.8.Уменыиить звездную высоту регулярного выражения
(a*+b*+ab) *.
Упражнение 5.4.9-Уменьшить звездную высоту регулярного выражения
(с (а*Ь) *) *.
Упражнение 5.4.10.Уменьшить звездную высоту регулярного выражения
(a(ab)*b)*.
Упражнение 5.4.11. Существует ли таити регулярный язык I. С
что sh (L) =2?
68
Синтаксические моноиды
В данной лекции рассматривается понятие синтаксического моноида и
приводится доказательство еще одного критерия автоматности
формального языка, который можно сформулировать в терминах классов
эквивалентности слов по взаимозаменяемости. Приведены примеры
практической реализации критерия и предоставлены упражнения для
самостоятельного решения
Основная цель данной лекции - доказать еще один критерий
автоматности формального языка. Этот критерий можно
сформулировать в терминах классов эквивалентности слов по
взаимозаменяемости (однако формальные определения буцут даны без
использования понятия класса эквивалентности). Слова х и у
считаются взаимозаменяемыми (относительно языка L ), если при
замене в любом слове из языка L подслова, совпадающего с х, на у
снова получится слово из языка L и наоборот. В разделе 6.3 фактически
доказывается, что язык L является автоматным тогда и только тогда,
когда соответствующее отношение взаимозаменяемости разбивает
множество всех слов рассматриваемого алфавита на конечное число
классов эквивалентности.
Но сначала мы докажем аналогичный результат для отношения
взаимозаменяемости не подслов, а префиксов (раздел 6.1),
Соответствующие классы эквивалентности слов позволяют построить
минимальный детерминированный конечный автомат для заданного
языка. Известен и другой метод нахождения минимального
детерминированного конечного автомата (раздел 6.2), но этот метод
можно применять только тогда, когда уже имеется какой-нибудь
детерминированный конечный автомат, распознающий данный язык. В
конце лекции доказывается, что классы эквивалентности по
взаимозаменяемости относительно автоматного языка сами являются
автоматными языками.
6.1. Множества правых контекстов
Определение 6.1.1. Пусть L С Е* и у £ Е*. Тогда множество правых
69
контекстов слова у относительно языка L определяется следующим
образом:
- {* е л-1 ^е£}.
Пример 6.1.2. Пусть £ _ {а, и £• _ {а"6а" | п 0} - Тогда
1. C^(g1) - {afeb&fc+i | fc > 0}
2. если i j.to c£J= {ai-J}
3. если i < j,TO C^)(g76q.'') = 0 ;
4. если |^|£, > 1,to = 0.
Определение 6.1.3. Для любого состояния р полного
детерминированного конечного автомата (Q, S, Д, I, и любого
слова w обозначим через Л w (pl такое состояние q, что существует путь
из р в q с меткой w (в силу полноты и детерминированности такое
состояние существует и единственно).
Лемма 6.1.4. Если языкЬ распознается полным детерминированным
конечным автоматом (Q, 2, Д,/,, то
|{с^(г/) | з/е е»}| < |Q|.
Доказательство. Пусть I {s }. Введем обозначение
J - {c^'W I у е Е-}.
Определим функцию /: 7 —» Q , положив f (А) равным Ajf(fi), где
у - некоторое слово, для которого выполнено условие С^(^) — А
(если существует несколько таких слов у, то можно использовать,
например, первое среди них в лексикографическом порядке).
Заметим, что для любых слов и и v, если то
Av(<s) - Следовательно, функция f является инъективной. Но
тогда | J| |Q| .
Пример 6.1.5. Рассмотрим язык L, порождаемый полным
детерминированным конечным автоматом (Q, £, Д,/, Л’) из
примера 2.6.4. Тогда
{с^(у) | у е s’} = {с^(Е),с^(а),с^(Ц}.
C^(ej = {(ад)" | п 0} U {(од)па | п -> 0},
с£'(а| = | п S 0}и{(Ьа)" | 0},
= «з.
Лемма 6.1,6. Если L С. S* и множество | у Е S*} конечно,
то язык L является автоматным.
Доказательство. Язык L распознается полным детерминированным
конечным автоматом (Q, А, Г, /П .где
<?={с£М |»еГ},
I )скг)И}.
{с^Шз/ёЛ}.
Л gC£’b),«,cJ’(w)> | У е X*. а ё Е}.
Пример 6.1.7. Пусть S = {tt,fe} - Рассмотрим автоматный язык L =
а+Ь*. Обозначим
Пентус А. Е., Пентус М.Р
5, = С^(е),
C^bal.
ft = C^(t.) = 0,
?оь с£'(а6).
Тогда {с£\у) I л е I?}- = {QE,q„,Qb,q„b} • Язык L распознается
полным детерминированным конечным автоматом (Q, S. Д. /. J1’) .
где Q — fgs, go, .д, 5„ь} , I — {gs}, Г — До,(ы|.
A = {{5,, a. сД. (qs,b.qb}. (qa,a,qa), Д„. Л, G'„H.
<Sb,O-9b), (Sal.P-, 4'j, <воЬ-Моь)}-
Теорема 6.1.8. Язык I. С E* является автоматным тогда и только тогда,
когда множество | у € S1*} конечно.
Доказательство. Необходимость доказана в лемме 6.1.4, достаточность -
в лемме 6.1.6.
Замечание 6.1.9. В силу леммы 6.1.4 полный детерминированный
конечный автомат, построенный в доказательстве леммы 6.1.6, является
минимальным (по количеству состояний) среди всех полных
детерминированных конечных автоматов, распознающих заданный
язык. Можно доказать. что любой минимальный полный
детерминированный конечный автомат, распознающий заданный язык,
72
изоморфен этому автомату.
Упражнение 6.1.10. Пусть £ — и
Л = {W 6 s* I Ыо. = 1. |w|b = 2}.
Сколько элементов содержит множество | у Е ?
Упражнение 6.1.11. Найти минимальный полный детерминированный
конечный автомат для языка {ab, abb} *.
Упражнение 6.1.12. Найти минимальный полный детерминированный
конечный автомат для языка
{п62т‘ I п 0} и {r7,2r‘+1 I п 0}.
Упражнение 6.1.13. Найти минимальный полный детерминированный
конечный автомат для языка
{,(7.2г“ I п > 0} и {64n I n J 0}.
Упражнение 6.1.14. Найти минимальный полный детерминированный
конечный автомат для языка
{атщЬ" | m > 0, п > 0, |и|:3}.
6.2. Минимизация детерминированных конечных
автоматов
Определение 6.2.1. Говорят, что слово w различает состояния р и q
полного детерминированного конечного автомата £, Д, Д ,
если одно из состояний А заключительное, а другое не
является заключительным.
Определение 6.2.2. Состояния р и q полного детерминированного
конечного автомата (Q, S, Д, J, Z1’) называются различимыми
73
(distinguishable), если существует слово w, которое их различает.
Замечание 6.2.3. Пусть полный детерминированный конечный автомат
{Q, X, A, задает язык L. Рассмотрим произвольные слова
и Е Е* и и ё Е*- Состояния Ди(дг) и Дг(дв) различимы тогда и
толью» тогда, когда * (дI С j1 (v).
Теорема 6.2.4. Существует быстрый алгоритм, позволяющий по
произвольному детерминированному конечному автомату находить
минимальный (по количеству состояний) автомат среди
детерминированных конечных автоматов, эквивалентных исходному
автомату.
Доказательство. Без ограничения общности можно предположить, что
дан полный детерминированный конечный автомат Е, А,/, ,
все состояния которого достижимы из начального состояния (для
обеспечения полноты достаточно добавить одно состояние). Для
каждого натурального числа i определим на множестве Q отношение
эквивалентности =3:
р =п q <=> F и fl € Fl или (р F и q F).
р =i+i q <=> p=i q и Ao(p) =i Аа(д) для каждого а Е Е.
Легко видеть, что р =г q тогда и только тогда, когда никакое слово
длины не больше i не различает р и q. Обозначим n = I Q |. Легко
проверить, что для любого к п отношение =fc совпадает с
отношением =„—1. Используя классы эквивалентности отношения
=П—1 как состояния, можно построить минимальный полный
детерминированный конечный автомат. Уцалив из него бесполезное
состояние (из которого не достижимо ни одно заключительное
состояние), если такое имеется, получим искомый минимальный
детерминированный конечный автомат.Пример 6.2.5. Рассмотрим
полный детерминированный конечный автомат
({1,2,3,4,5,6], {а, 6}, А, {1}, {1,3}’ , где
Пентус А.Е., Пентус М-Р Математическая теория формальных Я‘.
Д-{{1.а,2), (2,6,3), (3,а, 4), (4,6,1), (4, а, 5), (5,а,5),
(1,6,6), (2, а, 6), (3,6,6), (5,6,6), (6, а, 6), (6,6,6)}.
ь
Он эквивалентен минимальному детерминированному конечному
автомату {{{1,3}, {2.4}}. {а.б}, Д'. {{1.3}}. {{1.3}}) . где
Д' - {({1,3}, а, {2,4}), ({2.4}. Ь. {1,3};.}.
Замечание 6.2.6. Неизвестно, существует ли быстрый
(полиномиальный) алгоритм, позволяющий по произвольному
конечному автомату находить минимальный автомат среди всех (не
обязательно детерминированных) конечных автоматов, эквивалентных
исходному автомату.
Упражнение 6.2.7. Найти минимальный полный детерминированный
конечный автомат для языка, порождаемого грамматикой
С -> aD,
С 6Л’,
D —* аЁ,
D>bH.
—* aD,
Ё 6Г,
Н -> аС.
Н -> ЪЁ,
Df,
Н -> £.
Упражнение 6.2.8. Найти минимальный полный детерминированный
конечный автомат для языка
(1+(а +Ь)*Ь)Ъ(а+Ь)*.
Упражнение 6.2.9. Найти минимальный полный детерминированный
конечный автомат для языка
(a+b)*(aaba+(aabb+bbaa)abbb)(a+b)*.
Упражнение 6.2.10. Равны ли регулярные выражения
(aa+b+ab)* и ((a+b)*b+l)(aa)*?
Упражнение 6.2.11. Равны ли регулярные выражения
(a+b)*aa(a+b)*bb(a+b)* и (ab+b)*aa(a+b)*bb(a+ba)*?
Упражнение 6.2.12. Равны ли регулярные выражения
((ba+bb)(aa+ab)*)*a и b(aa+ab+ba+bb)*(aa+ba)?
Упражнение 6.2.13. Равны ли регулярные выражения
(са+cb+сс+(а+Ь+(а+с))+с)(а+Ь+с)*
и
c(a+b +Ьс)++(а +Ь+с)* (ас+сс)(а+Ь+Ьс)* ?
6.3. Множества двусторонних контекстов
Определение 6.3.1. Пусть I_ С £* и у Е Е*. Тогда множество
контекстов ( множество двусторонних контекстов ) слова у
относительно языка L определяется следующим образом:
CL(y) - {(a.z) е Е* х S’ I xyz е £}.
Пример 6.3.2. Пусть S — {а, и £ _ {алЬал | п 0} - Тогда
'С А.Е., Пентус М-Р Математическая геор
С£(п‘) - {'o’.o'iZ ’+" ) | т :? 0. it Js 0} U
U{(Et+‘+mhAnm) | к Zf 0, m 4,- 0),
{(o\ am) | к 0- nO 0. к + i — tn u .?}.
cl\v) ~ 0> если Ыь > !
Лемма 6.3.3. Если C£(-Ui) — С£(цз),то — С^\ц2).
Доказательство. Из определений следует, что
C^(B) = {zeE-|(e,z)€Ct(BI}.
Лемма 6.3.4. Если Cl(ui) — Cl («2)» то Ct(tiiw) — Cl (из*’) и
Cl (rixi) = Cl (vua) -
Доказательство. Пусть ClJ«1) = QUir?) и (.r.z) € Ciftiirl- Тогда
Е L - Следовательно, t;z) Е Ctfiii)- Далее, получаем, что
Е С 1,(112). хизГл Е L И {x.z) Е CLtW2t’). Второе
равенство доказывается аналогично.
Лемма 6.3.S. Если Cl(^1) = Cl(U2) и Cl(«’1) = Cl^), то
Cl(^1^1) — Cl(«2*'2)-
Определение 6.3.6. Пусть L С 5J*. Тогда множество
SyntM ач {С£Ы I у е £*}
называется синтаксическим моноидом (syntactic monoid) языка L.
Определение 6.3.7*. Полугруппой (semigroup) называется
непустое множество М с ассоциативной бинарной операцией х-.
Определение 6.3.8*. Пусть (А/, -А-) - полугруппа. Элемент g (= Д/
называется единицей (unit), если е + ж = х = 3.’ + Г для каждого
дем-
Определение 6.3.9*. Моноид (Л/, е) - это полугруппа (Д/, *) с
единицей g (= jjj.
Теорема 6.3.10*. Определим бинарную операцию
HaSynt (L) следующим образом:
Cl(u) * Cl (г) CLltro).
Тогда (Synt(jL) ,-Л, Cl(s)} является моноидом.
Теорема 6.3.11. Синтаксический моноид Synt (L) конечен тогда и
толы© тогда, когда язык L является автоматным.
Доказательство Пусть множество Synt(L) конечно. Согласно лемме
6.3.3 множество | у G Е*} тоже конечно. В силу леммы
6.1.6 язык L является автоматным.
Обратно, пусть язык L распознается некоторым конечным автоматом
Л/ — (Q, 2D, Д, I. , не содержащим переходов с метками длины
больше единицы. Поставим в соответствие каждому слову у множество
CQx Q , определенное следующим образом:
П'м(у) = {{р,?} £ Q < Q I существует путь из р в q с меткой у|.
Леи© проверить, что если — Ггд-Дуа)» то
Cl(3/1) — CL(gfe)- Следовательно, | Synt(£)| < 2^, где n = | Q I.
Пример 6.3.12. Рассмотрим конечный автомат М из примера 2.1.14.
Тогда
1- Ггм(е)-{<1,1), (2,2)} ;
2. если п 1» то Ттм((а6Г) = {(1.1)} >
3. если и 1, то = {(2,2)} ;
4. если п 0. то 1т1И((а6)"о) —{(1.2)}
5. если п U, то 1тм(6(лй)") — {{2,1}} :
6- ТглДтпау) - 0 ;
7- Tr*f= &
Лемма 6.3.13. Пусть/, СЕ*, п € FIи Для каждого слова у Е У?*
длины г найдется такое слово д? £*, что |д-| < пиС^^а,) — Cjrft/j •
Тогда
Synt(z) - (сцв) | в е s", |в| < n}.
Доказательство. Индукцией no к. п можно доказать, что для каждого
слова у Е У* длины к найдется такое слово х f= X*, что |д:| < л и
Cjr (а') — (у) - В шаге индукции используется лемма 6.3.5.
Упражнение 6.3.14. Сколько элементов в синтаксическом моноиде языка
а+Ь над алфавитом (а, Ь} ?
Упражнение 6.3.15. Сколько элементов в синтаксическом моноиде языка
Ь+а+ над алфавитом {а, Ь} ?
Упражнение 6.3.16. Сколько элементов в синтаксическом моноиде языка
(аа +Ь) над алфавитом { а, b } ?
Упражнение 6.3.17. Сколько элементов в синтаксическом моноиде языка
(ab) * (ba) *+а* над алфавитом {а, Ь}?
Упражнение 6.3.18. Сколько элементов в синтаксическом моноиде языка
а(Ь+с)*а(а+Ь+с)*+Ь(а+с)*Ь(а+Ь+с)*+с(а+Ь)*с(а+Ь+с)"
над алфавитом {а,Ь,с}?
6.4*. Классы эквивалентности слов
Лемма 6.4.1. Пусть/, С У*и у Е У* - Тогда
Пентус А.Е., Пентус М-Р Математическая теория формальных языков
СЕ. r(S)-(E* KE*)-rt(s).
Определение 6.4.2. Пусть L С £* и х € £*• Обозначим через [з?]^
язык {у £ S* | С^\з/) — С^'(х)}- . Обозначим через [.!]£ язык
{у G Е* | Ct(si) = Cl(x)} •
Пример 6.4.3. Пусть I, С £*. Множества вида [□;]£ образуют
разбиение множества на классы эквивалентности. Множества вида
[-!] L образуют разбиение множества £* на классы эквивалентности.
Пример 6.4.4. Пусть £ — {а, 6} и £ - {а7г6а'г | п 0} . Тогда
[(иа|£’ = {n‘6aJ | 0 sg i < j} U {i/ е 2* | |ji|b > 1},
[daaji = {o.*6a*+2 | i 0}.
Лемма 6.4.5. Если язык i, G £* является автоматным, то для каждого
слова д: <= £* языки [ат] j1' и [а:] £ являются автоматными.
Доказательство. Пусть язык L распознается конечным автоматом
Л/= (Q.S. Д,ЛП , не содержащим переходов с метками длины
больше единицы. Будем использовать обозначение Тгм из
доказательства теоремы 6.3.11. При любой фиксированной паре
{p.q}^Q<Q язык ЛР д.м = {у € Е* | (р, q} G Triw(у)}
является автоматным (он распознается конечным автоматом
(Q, 5Z, Д, {р}, {?}) )- Для каждого слова z € Е* язык
К-..w = {у € Е* | ТТд./ (у) = 1¥м(*)} является автоматным, так
как он представим в виде пересечения конечного семейства автоматных
языков:
Пентус А. Е., Пентус М.Р
Каждый из языков [x]L и [з.']^ является объединением конечного
семейства автоматных языков:
Иь= U ик"= и »-..«
Замечание 6.4.6. Из теоремы 6.1.8 вытекает, что если язык L
автоматный, то существует лишь конечное число различных множеств
[а:|^ . Аналогичное утверждение верно для множеств [а;]/, (см.
теорему 6.3.11).
Пример 6.4.7. Рассмотрим язык
L — {(ай)11 | п > 0} U {(аЬ)"а | п > 0}
над алфавитом Е = {а, 6} - Тогда
Нс' = W;
= tifn-TKf + (а+&) * (аа+-bb) (а+1) *:
Ht-1:
[ntijc = (ab)+;
[6а]1 = (6a)+;
[a]L = (пЦ*а:
|t.]t = Ь(аЬ)«;
|cci|c fn II l
Упражнение 6.4.8. Существуют ли такие языки Li С Е* и L-2 С Е*,
что язык L-l является автоматным, но язык
£з — {еЕЕ’ | m/E £1 для некоторого слова у Е £2}
не является автоматным?Упражнение 6.4.9. Существуют ли такие языки
L j С Е* и £,2 С Е*, что язык Lx является автоматным, но язык
L3 = {яг Е Е* | ху Е Li для всех слов у Е L2}
не является автоматным?Упражнение 6.4.10. Существует ли такой
автоматный язык L С Е*, что язык
Мах(£) {.г Е £ | ху L дчя всех слов у Е Е+}
не является автоматным?
Теорема 6.4.11. Язык L С Е* является автоматным тогда и только тогда
когда существует такое отношение эквивалентности /? С Е* Ч Е*> что
R разбивает Е* на конечное множество классов эквивалентности, L
является объединением некоторых из этих классов эквивалентности и
для любых а; £= Е”. у Е S*, ? Е Е* из xRy следует xzRyz.
Замечание 6.4.12. Теоремы 6.1.8 и 6.4.11 образуют теорему Майхилла-
Нерода.
82
Неоднозначность в контекстно-свободных грамматиках
В данной лекции рассматривается класс контекстно-свободных языков,
которые находят применение в разнообразных программных продуктах,
таких как компиляторы, средства форматирования исходного кода,
средства статического анализа программ, синтаксические редакторы,
системы верстки, программы просмотра форматированного текста,
поисковые системы. Приведены практические примеры и упражнения
для самостоятельного решения
Перейдем к более богатому классу языков - к контекстно-свободным
языкам. Они находят применение в разнообразных программных
продуктах, таких как компиляторы, средства форматирования исходного
кода, средства статического анализа программ, синтаксические
редакторы, системы верстки, программы просмотра форматированного
текста, поисковые системы.
Начнем рассмотрение контекстно-свободных языков с введения понятия
деревьев вывода, что позволит определить важное для компьютерных
приложений понятие однозначности контекстно-свободной
грамматики. Чтобы не вдаваться в детали определения изоморфизма
ориентированных деревьев, будем использовать в определении
однозначности понятие левостороннего вывода (раздел 7.2).
Соответствие деревьев вывода и левосторонних (а также
правосторонних) выводов понадобится также в лекции 13.
Из класса всех контекстно-свободных языков можно выделить подкласс
тех языков, для которых существует хотя бы одна однозначная
грамматика. В разделе 7.3* доказывается, что все праволинейные (то
есть автоматные) языки принадлежат этому подклассу.
В последнем разделе этой лекции приводятся важные конкретные
примеры однозначных контекстно-свободных грамматик,
моделирующих системы правильно вложенных скобок и польскую
(префиксную) запись выражений.
7.1. Деревья вывода
83
Определение 7.1.1. Выводам в контекстно-свободной грамматике
соответствуют так называемые деревья вывода ( деревья разбора,
derivation tree, parse tree) - некоторые упорядоченные деревья, вершины
которых помечены символами алфавита TV U 52- Корень дерева
отвечает начальному символу. Каждому символу слова wj, на которое
заменяется начальный символ на первом шаге вывода, ставится в
соответствие вершина дерева, и к ней проводится дуга из корня
Полученные таким образом непосредственные потомки корня
упорядочены согласно порядку их меток в слове Для тех из
полученных вершин, которые помечены символами из множества N,
делается аналогичное построение, и т. д.
Кроной (yield) дерева вывода называется слово, записанное в вершинах,
помеченных символами из алфавита
Пример 7.1.2. Рассмотрим контекстно-свободную грамматику
S SS,
S-tab,
S aSb.
Выводу
S => SS Sab => SSab —> abSab => ababab
соответствует следующее дерево вывода.
Крона этого дерева вывода - аЬаЬаЬ.Упражнение 7.1.3. Перечислить
все деревья вывода в грамматике
84
Пентус А.Е., Пентус М-Р Математическая теория формальных языков
s ьа,
к^сгт,
2 —» а,
2 —» Ьа.
Упражнение 7.1.4. Существует ли праволинейная грамматика без е -
правил, в которой некоторое слово имеет бесконечно много выводов?
7.2. Однозначные контекстно-свободные грамматики
Определение 7.2.1. Вывод в контекстно-свободной грамматике
называется левосторонним ( левым, leftmost derivation), если на каждом
шаге вывода заменяется самое левое из всех вхождений
вспомогательных символов (то есть каждый шаг вывода имеет вид
и Д6 => и,30 , где (Д —> 0) € F. 1А G S* и & 6 (Лг U SJ* )- Иногда
в левосторонних выводах вместо _д> пишут \lmarrow.
Правосторонний ( правый ) вывод определяется аналогично. В
правосторонних выводах вместо => пишут \ rmarrow.
Пример 7.2.2. Вывод
S => SS => Sab => SSab abSab => ababab
из примера 7.1.2 не является левосторонним.
Лемма 7.2.3. Для каждого слова, выводимого в контекстно-свободной
грамматике, существует левосторонний вывод.
Лемма 7.2.4. Пусть G - контекстно-свободная грамматика над алфавитом
Е- Пусть (= . Тогда существует взаимно-однозначное соответствие
между левосторонними выводами слова w в грамматике G и деревьями
вывода в грамматике G, кроной которых является w.
Пример 7.2.5. Рассмотрим дерево вывода из примера 7.1.2. Ему
соответствует левосторонний вывод
85
S -> SS => SSS => abSS => ababS => ababab.
Im Im Im Im Im
Определение 7.2.6. Контекстно-свободная грамматика называется
неоднозначной (ambiguous), если существует слово, которое имеет два
или более левосторонних вывода (устаревший термин - неопределенная
грамматика). В противном случае контекстно-свободная грамматика
называется однозначной (unambiguous).
Пример 7-2.7. Контекстно-свободная грамматика из примера 7.1.2
неоднозначна. Слово ababab имеет два левосторонних вывода:
S => => SSS ==> abSS => ababS => ababab
Im lin Im Im Im
S => SS => abS => abSS => ababS => ababab.
Im Im Im Im Im
Пример 7.2.8. Пусть
свободная грамматика
S = {p, #.).(, “i,Л, V} - Контекстаo-
S -» SVD,
S-> D,
D -r I? AC,
D->C,
с — к
V - V#,
V ->p
порождает множество всех булевых формул, составленных из
переменныхр, р#, р##, ..., с помощью скобок и операторов ,
Л и V • Эта грамматика является однозначной.
Определение 7.2.9. Контекстно-свободный язык называется
существенно неоднозначным (inherently ambiguous), если каждая
контекстно-свободная грамматика, порождающая этот язык, является
неоднозначной.
Пример 7.2.10. Язык, порождаемый контекстно-свободной грамматикой
из примера 7.1.2, не является существенно неоднозначным. Он
ев
порождается однозначной грамматикой
S -> Ч \
1 —tab.
Г aSb.
Пример 7.2.11. Пусть Е = £q, &, с} - Контекстно-свободный язык
{akbmcn I k - m или m • п} является существенно
неоднозначным. Доказательство этого факта можно найти в [АхоУль, с.
234-236].
Упражнение 7.2.12. Однозначна ли контекстно-свободная грамматика
К —> а,
К ->Ь.
к к+к.
К к-к
с алфавитом Е = {а, Ь,—^Упражнение 7.2.13. Однозначна ли
контекстно-свободная грамматика
К —* а,
К > Ь.
К ^КК,
К -кк
с алфавитом Е~ {а, 6, ]-, -^Упражнение 7.2.14. Однозначна ли
контекстно-свободная грамматика
К -> а,
К -> 6,
К -t (К +К).
К -> (К-К)
В7
с алфавитом X — {0,6,+, —?Упражнение 7.2.15. Однозначна
ли контекстно-свободная грамматика
Е ЕсЕ,
Е + Edh,
Е —> аЕЬ,
Е—*£?
Упражнение 7.2.16.Найти однозначную контекстно- свободную
грамматику, эквивалентную грамматике
S —> aS»
S aSb,
S—t с.
Упражнение 7.2.17.Найти однозначную контекстно-свободную
грамматику, эквивалентную грамматике
S —*• aSaaaa,
S —* aSaay
S —> aaSa,
S^b.
7.3*. Однозначные праволинейные грамматики
Теорема 7.3.1. Каждый праволинейный язык порождается некоторой
однозначной праволинейной грамматикой. Другими словами, ни один
праволинейный язык не является существенно неоднозначным.
Доказательство. Согласно теоремам 2.4.3 и 2.7.1 исходный язык
распознается некоторым детерминированным конечным автоматом.
Применив к нему конструкцию из доказательства теоремы 2.4.1,
получим однозначную праволинейную грамматику.
Замечание 7.3.2. Этот факт можно получить также из более общей
88
теоремы 12.2.6 с учетом теоремы 12.2.1.
Упражнение 7.3.3. Найти однозначную праволинейную грамматику,
порождающую язык а * ( (а+Ь) (а+Ь) ) *Ь*.
Упражнение 7.3.4. Найти однозначную праволинейную грамматику
эквивалентную грамматике
£ —> ТаааТ,
£ -> ГЬЫзТ,
Гal.
Т ->b‘l\
Т->Е.
Упражнение 7.3.5. Найти однозначную праволинейную грамматику
эквивалентную грамматике
S Ь£,
S —» aal,
S -»• aW,
Г abZ,
1 -*bbZ,
Z -» aZ.
Z -> bZ,
Z ->e.
Упражнение 7-3.6. Существует ли праволинейная грамматика в
нормальной форме с п вспомогательными символами, не
эквивалентная ни одной однозначной праволинейной грамматике с
количеством вспомогательных символов 2 п - 1?
7.4. Языки Дика и Лукасевича
Определение 7.4.1. Языком Дика (Dyck language) над 2 г буквами
называется контекстно-свободный язык над алфавитом
{а х, b ]_, а2 г к>2 г - • - г ап, Ьг}, порождаемый грамматикой
89
Пентус А.Е., Пентус M.l
S —> flj. Sbj s
S —► a,.bb,.S.
Замечание 7.4.2. Словами этого языка являются последовательности
правильно вложенных скобок п типов (если считать символ левой
скобкой, а символ соответствующей правой скобкой).
Теорема 7.4.3. Словоюнад алфавитом { а, Ь} выводится в грамматике
5 ->е,
S -> aSbS
тогда и только тогда, когда
На = |11’|Ь
и для всех слов ат □ ? j ' выполняется неравенство
Ш & Иь-
Теорема 7.4.4. При любом положительном целом п грамматика из
определения 7.4.1 является однозначной.
Определение 7.4.5. Языком Лукасевича (Lukasiewicz language) над n + 1
буквами называется контекстно-свободный язык над алфавитом
{ а0, а1г . . -,ап}, порождаемый грамматикой
S —«• Пи,
S —г Q1S.
S —» daSjS.
S »O„S".
90
Теорема 7.4.6. CnoeowHafl алфавитом , а0, а1г . . -, ап} принадлежит
языку Лукасевича надг + 1 буквами тогда и только тогда, когда
- 1)м=, = -1
и для всех слов .г С w, кромех = и, выполняется неравенство
i)M=. & °-
£=□
Теорема 7.4.7. При любом и £ PJ грамматика из определения 7.4.5
является однозначной.
Упражнение 7.4.8. Принадлежит ли слово aababb языку,
порождаемому грамматикой
S -> aSbS,
SЕ?
Упражнение 7.4.9. Принадлежит ли слово
cacbcbbacacccaaaacabcaa языку, порождаемому грамматикой
S —J а,
S->bSr
S cSS?
Упражнение 7.4.10. Эквивалентны ли грамматика
Т * а,
Т^'П\
т->ттъ?
и грамматика
Пентус А.Е, Пентус М-Р Математическая теория формальных языков
R —‘41,
R —+ Ra.
R -> RRb?
Упражнение 7.4.11- Описать язык, порождаемый грамматикой
/ —> ab,
/ —* аНЬ,
/ — FF.
Упражнение 7.4.12. Описать язык, порождаемый грамматикой
F —* а,
J1' —»ct'F,
F -> dFFF.
Упражнение 7.4.13. Найти однозначную контекстно-свободную
грамматику, порождающую язык {и? £ {a, i)* | lii'la 1Мь} -
92
Нормальные формы контекстно-свободных грамматик
В данной лекции рассматривается доказательство того, что каждая
контекстно-свободная грамматика эквивалентна некоторой контекстно-
свободной грамматике специального вида, а именно грамматике в
нормальной форме Хомского. Этот факт используется в доказательствах
многих теорем о контекстно-свободных языках и является очень
важным. Приведены также практические примеры и самостоятельные
упражнения
Основная цель этой лекции - доказать, что каждая контекстно-
свободная грамматика эквивалентна некоторой контекстно-свободной
грамматике специального вида, а именно грамматике в нормальной
форме Хомского (раздел 8.3). Этот факт используется дальше в
доказательствах многих теорем о контекстно-свободных языках. Два
вспомогательных результата, на которые опирается приведение
грамматик к нормальной форме Хомского, выделены в отдельные
разделы в начале лекции.
В конце лекции доказывается, что каждую контекстно-свободную
грамматику можно также привести к нормальной форме Грейбах.
8.1. Устранение бесполезных символов
Определение 8.1.1. Пусть дана порождающая грамматика
G____(Лг, 5L, Р, 5) • Символ Д £ дг называется полезным (useful),
если существуют такие слова cf Е (TV U £)*> /?E(ArLJS)* и
w € S*» что S =5> о Дй и Q Ай => щ? • Символ Д £ дг называется
бесполезным (useless), если он не является полезным. Символ Д <= Дг
называется порождающим (generating), если существует такое слово
W € S* • что А ==> W Символ Д Д? называется достижимым если
существуют такие слова q £ (Лг U £)* и что
S^aA3.
Лемма 8.1.2. Пусть дана контекстно-свободная грамматика
93
G — {iV, 53, P, 5). в которой все символы из N являются
порождающими. Пусть N’ - множество всех достижимых символов
[рамматики G, а Р' - множество тех правил из р, которые не содержат и
одного символа из множества ДГ N* • Тогда в контекстно-свободной
грамматике (TV*. 53, Р’, S) все символы из N* являются
порождающими. \end{lemma}
Теорема 8.1.3. Пусть дана контекстно- свободная грамматика
G = (7V, 23, P,S) и X(G) 0 • Тогда существуют такие множества
A' С А и Pr С Р, что в контекстно-свободной фамматике
{A*, 53, Pr, S) нет бесполезных символов и она эквивалентна
исходной грамматике.
Доказательство. На первом этапе удалим все непорождающие символы
(удалим также каждое правило, содержащее хотя бы один такой символ).
На втором этапе из полученной грамматики удалим все недостижимые
символы (и правила, их содержащие). Согласно 8.1.2 на втором этапе
ни один порождающий символ не может стать непорождающим.
Пример 8.1.4. Рассмотрим контекстно-свободную фамматику' с
правилами
S -> их, ТГ -> YZY. Г-> ГГ
S VZ, И’ —* uab, Г-> aU
1' —> аа, X Ха, Y >€
Т->ЪЪ, X -> ХЬ, Z^ п
U —> aUa, Л -»£, Z^b.
и ъиь,
Vх ->aTb,
V —»• bl 'а.
Удалив четыре правила, содержащие непорождающий символ U,
получим грамматику Gj. В ней символ X является недостижимым
^цалив три правила, содержащие X, получим грамматику Gg с
94
правилами
S -> VZ, ГГ -> YZY, У УУ,
Т —* оа. ТИ —* aab. У
Т -> ЬЬ, Z T V,
V - о1Ъ, Z-^b.
F —> Ь'1 а,
Очевидно, что L(G) = L(G2) и грамматика не содержит
бесполезных символов.
Упражнение 8.1.5. Найти контекстно-свободную грамматику без
бесполезных символов, эквивалентную грамматике
s^srt,
S ->€,
R —* aRa,
R->b,
Т -> аТ.
8.2. Устранение эпсилон-правил
Теорема 8.2.1. Пусть язык Г„ является контекстно-свободным. Тогда язык
L — {е} порождается некоторой контекстно-свободной грамматикой
без е - правил.
Доказательство. Пусть дана контекстно-свободная грамматика
= {JV, 52, Рч S), порождающая язык L, Проведем серию
преобразований множества Р.
Если для каких-то A€N,B€N, Q Е (2V U S)* и (3 £ (N U У)*
множество Р содержит правила В —* д Л;? и Д —> f, но не содержит
правила В —> п>3, то добавим это правило в Р. Повторяем эту
95
процедуру пока возможно.
Теперь исключим из множества Р все правила вида Д —> Е -
Полученная грамматика порождает язык — {с}-
Пример 8.2.2. Рассмотрим язык L, порождаемый грамматикой
S —> Е.
5 -» aSbS.
Язык L {е} порождается грамматикой
S -*• aSbS,
S > abS,
S —* aSb,
Sab.
Упражнение 8,2.3. Найти контекстно-свободную грамматику без е -
правил, эквивалентную грамматике
S aSb.
8.3. Нормальная форма Хомского
Определение 8.3.1. Грамматика в нормальной форме Хомского (
грамматика в бинарной нормальной форме, квадратичная грамматика,
grammar in Chomsky normal form) - контексгио-свободная грамматика
^Дг, X, .P, S) , в которой каждое правило имеет один из следующих
трех видов: S—»£,Д—Ю>Л—t ВС. где АЕ N. В Е N - {S} ,
CeN {S),aEX-
96
Д -»а,
В * RB.
В->Ь
Пример 8.3.2. Грамматика
S - RR,
S + АВ,
R—> RR,
R-> АВ,
является грамматикой в нормальной форме Хомского.
Теорема 8.3.3. Каждая контекстно-свободная грамматика эквивалентна
некоторой грамматике в нормальной форме Хомского.
Доказательство. Пусть дана контекстно-свободная грамматика
G____ {N,y.,P4S}- Проведем ряд преобразований этой грамматики
так, что порождаемый ею язык остается неизменным.
Если правая часть какого-нибудь правила содержит символ S, то
заменим грамматику (TV, 53, Р, S) на грамматику
(N и {SJ.S.PU {So -> S}.S„).
где Sq - новый символ, не принадлежащий множеству JV U 53-
Заменим во всех правилах каждый терминальный символ а на новый
нетерминальный символ Та и добавим к множеству Р правила а —f а.
для всех
Устраним правила вида Д —» q, где |ct | >2, заменив каждое из них
на ряд более коротких правил (при этом добавляются новые
нетерминальные символы).
Теперь устраним все правила вида Д______> f • где А не является
начальным символом. Это можно сделать так же, как в доказательстве
теоремы 8.2.1.
Если для каких-то Д £ ,V, В G N и Q € (TV U 53)* множество Р
содержит правила Д —> jB и В —» се > но не содержит правила
97
X —> Q, то добавим это правило в Р. Повторяем эту процедуру, пока
возможно. После этого исключим из множества Р все правила вида
А-r В-
Пример 8.3.4. Грамматика
aUbU,
U -^S,
и -> ba
эквивалентна следующей грамматике в нормальной форме Хомского:
S[i -г Е, С -К ви,
So —к АО, c-tbt
о -> ис, и -К В А,
о -> ви, О-» АП,
dь, А а,
В^Ь.
Теорема 8.3.5. Если контекстно-свободный язык не содержит пустого
слова, то он порождается некоторой грамматикой, в которой каждое
правило имеет один из следующих двух видов: Д —> q, ,4 —» ВС» где
Аем, в еЛ'-{s}, се N {S}.aez-
Упражнение 8.3.6. Найтн контекстно-свободную грамматику в
нормальной форме Хомского, эквивалентную грамматике
/ —к nb,
/ ’ —» аС'й,
/ -к ВС.
8.4* . Нормальная форма Грейбах
98
Определение 8.4.1. Грамматика в нормальной форме Грейбах (grammar in
Greibach normal form) - контекстно-свободная грамматика {JV, 53, Р, S) ,
в которой каждое правило имеет один из следующих четырех видов:
А—ю. А—тВ, A—faBQ, где А е N, В е Л .
Пример 8.4.2. Грамматика
S -»aS'i,
S —> al \
Г -> bS,
т-*ь
является грамматикой в нормальной форме Грейбах.
Замечание 8.4.3. Некоторые авторы разрешают в грамматиках в
нормальной форме Грейбах использовать также правила вида Л —к а/3
, где X G TV» fl. 6 53» $ С (в определении 8.4.1 разрешены, только
если |,3| 2 )-
Теорема 8.4.4. Каждая контекстно-свободная грамматика эквивалентна
некоторой грамматике в нормальной форме Грейбах.
Доказательство. Докажем теорему для контекстно-свободных языков, не
содержащих пустого слова. Согласно теореме 8.3.5 исходный язык
порождается некоторой грамматикой G ~ {N, 53, Р, S) , в которой
каждое правило имеет вид Д_____► а или Д___► ВС • гДе А 6 Лг>
Вел-- {£}, <7 е лг {.S}. а е >-
Введем | N | 2 новых вспомогательных символов, соответствующих
упорядоченным парам из множества Лг ч Лт. Новый символ,
соответствующий паре (Д, В} , будем обозначать (А\В). Построим
грамматику "почти в нормальной форме Грейбах" G = 53, Р. S) ,
положив Лг = 7V и {(А\В) | A G Л\ В £ 7V} и
99
Р - {(Л\А) е | А е Л} U
и{(С\Е)^А(Л\Е1)(В\£)|(В^СЕ1)еР, АеЛ', Fe.VJU
U [Л -» а I (А -> а) е Р} U
U {S -t n(A\S) I (Л -> а) е Р).
Если в этой грамматике заменить
{(С\В) А(.4\П)(В\В’) I (В > СЕП е Р, А е N, £ е .¥} и
U{A-> с I (Л —- а) е Р}
на
{(С\й -» aiA\Dl(B\AJ I (B^CDi е Р, е Р, В е лг},
получим эквивалентную ей грамматику в нормальной форме Г^рейбах.
Осталось лишь доказать, что L((j) = L(G) -Сначала проверим
L- * ,-г_,
индукцией по длине слова 'у Е Л’*, что если
(СДЛ) 4 7(Л») для любого В е ,У. Чтобы провести шаг
индукции, допустим, что fВ —> С D) Е Р и
F Л В/3 => CDj3 САауЗ,
то
где и -у — IqZ? . По предположению индукции имеем
и (A\.D) a(D\D)o Подключая эти выводы к
правилу (С\В) 5 А(Л\О)(В\Ь)
и используя
получаем искомый вывод Аа>3(£' \-&).Докажем теперь, что
для любого 'у Е >V* равносильны утверждения ^7 и
. В одну' сторону' это следует из только что доказанного.
Доказательство того, что если 7, то Е? ^7, проведем
юо
индукцией по длине слова 'у Е ЛГ* • Чтобы провести шаг индукции,
допустим, что (В-»СЛ)ЕР, (С\-^) А(АХ-£?Х^Х^ ),
(-^Х-^) Q, С®\-^ ) Д и 'у — АецЗ. По предположению
индукции и & . Получаем искомый вывод
F Л ВЗ => CD{3 А САа/3.
с; с а
Теперь убедимся, что Z.(G) = L(G)- Рассмотрим произвольное слово
Ои« 1... От, где m > О И а; Е S для всех I < т.. Пусть
£=> A0Ai...Am, => flutli . . . Qms
а а
где Д Е Лт для всех г т. Тогда
S aa(A0\S) => aflAi... Am => ati^i... о™.
e с. с:
Обратно, пусть
S tzufAiAS) ф 0цА1... Ат ф аиО1 .. ат,
гд₽ Af Е Л' для всех г т. Тогда
S Ao А1 . . . Am flodl - . . От-
с: G
Пример 8.4.5. Грамматика
S->R1\ V -»VT.
1’^Ь, V—Rl\
/?7R, R^a
эквивалентна следующей грамматике в нормальной форме Грейбах:
101
Пентус А. Е., Пентус
S -> оС,
С аЛ,
D —* aDE,
D > ЬЕ,
aDE.
ЬЕ,
Здесь С, D, Е и F соответствуют символам (A\S), (А\Т), (V\T) и
(U\T) из доказательства теоремы 8.4.4 (удален 21 бесполезный
символ).
Теорема 8.4.6. Пусть язык L контекстно-свободный. Тогда язык L — J
порождается некоторой грамматикой в нормальной форме Грейбах без с
правил.
Пример 8.4.7. Грамматика
5 -> aR,
R ЬНГ,
R -*£,
Т -> cSR,
эквивалентна следующей грамматике в нормальной форме Грейбах без
Е -правил:
aR, bRT. 1 cSR.
s-> а, R-? ЬТ, i ^cS.
bR,
R-> ъ,
Упражнение 8.4.8. Найти контекстно-свободную грамматику в
нормальной форме Грейбах, эквивалентную грамматике
102
Пентус rt.t., Пентус м.к мгпематическая теория формальных языков
Г —+ ab,
F —* aFb,
F -» FB:
Упражнение 8.4.9. Найти контекстно-свободную грамматику в
нормальной форме Грейбах, эквивалентную грамматике
S-> АВ,
В->АВ,
А -> ВБ,
А—ь а,
В->Ь.
Упражнение 8.4.10. Найти контекстно-свободную грамматику в
нормальной форме Грейбах, эквивалентную грамматике
К ^Fb,
F -» £,
F —* aFbF.
Упражнение 8.4.11. Найти контекстно-свободную грамматику в
нормальной форме Грейбах, эквивалентную грамматике
£ -> a J ,
Т -> аТ Та,
Т -> Ь.
103
Основные свойства контекстно-свободных языков
В данной лекции рассматриваются основные свойства контекстно-
свободных языков, приведены некоторые теоремы для класса линейных
языков, а также доказательство того, что пересечение контекстно-
свободного языка с автоматным языком является контекстно-
свободным. Также приводятся практические примеры и упражнения для
самостоятельной проработки
В лекции 2 были доказаны лемма о разрастании и свойства замкнутости
класса автоматных языков. Некоторые из этих теорем имеют аналоги
для класса контекстно- свободных языков (разделы 9.1 и 9.4), но этот
класс не замкнут относительно дополнения и пересечения (раздел 9.5)
Лемма о разрастании для контекстно-свободных языков формализует
явление "периодичности" в этих языках. Для полноты картины в
разделах 9.2* и 9.3 приведены некоторые аналогичные теоремы для
класса линейных языков, хотя ни в теории, ни в практических
приложениях класс линейных языков значительной роли не играет.
В разделе 9.6 доказывается, что пересечение контекстно-свободного
языка с автоматным языком является контекстно-свободным. В
сочетании с леммой о разрастании этот факт дает удобное средство,
позволяющее во многих задачах доказать, что заданный язык не
является контекстно-свободным. Еще одно необходимое условие
контекстной свободное™ сформулировано в разделе 9.7*.
9.1. Лемма о разрастании для контекстно-свободных
языков
Лемма 9.1.1 (pumping lemma, лемма о разрастании, лемма о накачке,
лемма-насос) Пусть L - контекстно-свободный язык над алфавитом 5^.
Тогда найдется такое положительное целое число р, что для любого
слова w Е L длины не меньше р можно подобрать слова
гс, гц j:, у, z € Ti*, для которых верно uvxyz — w, vy t ( то есть
v £ или у £ ), |1лгу| < р и uvlxy2z Е L для всех z е N-
104
Доказательство. Пусть язык L порождается грамматикой в нормальной
форме Хомского G = ^Дг, 5j, Р, S) Индукцией по к легко доказать,
что для любого дерева вывода в грамматике G длина кроны дерева не
превышает 2к-2. где к - количество вершин в самом длинном пути,
начинающемся в корне дерева и заканчивающемся в некоторой
вершине, помеченной символом из
Положим р = 2 'N ।. Пусть L и |w| > р. Зафиксируем
некоторое дерево вывода с кроной w в грамматике ( Рассмотрим самый
длинный путь в этом дереве. Этот путь содержит не менее INI +2
вершин. Среди них найдутся две вершины с одинаковыми метками,
причем их можно выбрать среди последних | N | + 2 вершин
рассматриваемого пути. Выберем слова u, v, х, у и z так, что uvxyz
= w, поддерево с корнем в одной из найденных вершин имеет крону х
и поддерево с корнем в другой найденной вершине имеет крону vxy.
Из того что G - грамматика в нормальной форме Хомского, заключаем,
что vxy х. Неравенство |wr/| 2'J' следует из того, что самый
длинный путь в соответствующем слову vxy поддереве содержит не
более | N | +2 вершин. Для каждого г £ И можно построить дерево
вывода с кроной uv^-xy^z, комбинируя части исходного дерева вывода.
Пример 9.1.2. Рассмотрим язык L — {а”6псп | 71 0| над
алфавитом {а, Ь, с}. Утверждение леммы 9.1.1 не выполняется ни для
какого натурального числа р. Действительно, если uvxyz = арЬрср,
|vy| > о и |игу| р, то |vy|a = 0 или |vy|c = 0.
Следовательно. I uvvxyyz | а = р или I uvvxyyz I с = р. Так как
I uvvxyyz | > Зр, то iiwxyyz L - Из этого можно заключить, что
язык L не является контекстно-свободным.
Теорема 9.1.3. Каждый контекстно-свободный язык над однобуквенным
алфавитом является автоматным.
Доказательство. Пусть дан контекстно-свободный язык L над алфавитом
{а}. Согласно лемме 9.1.1 найдется такое натуральное число р, что
105
множество [А* £ N | аЛ Е / } является объединением некоторого
семейства арифметических прогрессий, причем у каждой прогрессии
первый член и шаг не больше числа р. Так как существует лишь
конечное число прогрессий натуральных чисел с таким ограничением,
рассматриваемое семейство конечно. Следовательно, язык L является
автоматным (используем пример 2.1.18).
Упражнение 9.1.4. Является ли
{щ?и? | it е {«,&}*} ?
Упражнение 9.1.5. Является ли
{П7ЛЛ | 0 « i < j < *} ?
Упражнение 9.1.6. Является ли
| 0, т Oj. ,
контекстно-свободным язык
контекстно-свободным язык
контекстно-свободным язык
Упражнение 9.1.7. Является ли контекстно-свободным язык {am m
простое}?
Упражнение 9.1.8. Является ли контекстно-свободным язык
I п < 0} и {акЪ1ат | к 0, I > О, т < 52} ?
Упражнение 9.1.9. Является ли контекстно-свободным язык
{гг е {о, 6, с}* I |w|o — |™|b — |ш|с} ?
Упражнение 9.1.10. Является ли контекстно-свободным язык
{a"frw6am | w Е {а, Ь}*7 |w|a. — п 4- тп} ?
Упражнение 9.1.11. Является ли контекстно- свободным язык
{вето | и Е и Е {c,d}*, w Е |u|Q ~ |ш|ь» |ъ’|с = |i’|d}
Упражнение 9.1.12. Является ли контекстно-свободным язык
{агис | и Е р € {cd}*, w Е {«,&}*, |n|Q = |«?|с, = |из|ь}
Упражнение 9.1.13. Является ли контекстно-свободным язык {akbmcn
106
| к < max(m,n) }?
Упражнение 9.1,14. Является ли контекстно-свободным язык {akbmcn
I k > max(m,n)}?
Упражнение 9.1.15. Является ли контекстно-свободным язык
{a"6"aIi6" | n > 0} LJ {a2fcb2feambm | Jfe 2» 0, m >- 0} U
U {afe£>2/ba.fl.2<bfe | к 0, 0}?
Упражнение 9.1.16. Каком}' классу принадлежит язык, порождаемый
грамматикой
S-> TcV.
Г-tbV.
V -+ аУа,
F-» £,
ас—* а?
Упражнение 9-1,17. Существуют ли такие контекстно-свободные языки
Z-l С {а, b}4 и Z2 С {б,с}*, что язык £j — £2 не является
контекстно-свободным?
9.2* . Лемма о разрастании для линейных языков
Определение 9.2.1. Линейная грамматика в нормальной форме - это
такая линейная грамматика, в которой каждое правило имеет вид
Л —+ е , 4 —+ а, 4 -+ аВ или Д —> Ва, где Д е N, BeN,
a G X-
Теорема 9.2.2. Каждая линейная грамматика эквивалентна некоторой
линейной грамматике в нормальной форме.
Теорема 9.2.3. Если линейный язык не содержит пустого слова, то он
порождается некоторой линейной грамматикой в нормальной форме без
е - правил.
107
Теорема 9.2.4. Язык L является линейным тогда и толью тогда, когда язы
/. — является линейным.
Лемма 9.2.5. Пусть L - линейный язык над алфавитом $]. Тогда найдется
такое положительное целое число р, что для любого слова wEL длин
не меньше р можно подобрать слова it, "У, х, у, z € Т7*, для которых
верно uvxyz = w, vjf £ (то есть и s или у f ),
I- |?дг| р и uv'xy'z € L для всех г G N-
Доказательство. Пусть язык f. — порождается линейной
грамматикой в нормальной форме С = {Дг, S, Р, S) без s -правил.
Положим р = | N | + 1. Пусть w^L и | ш| р Зафиксируем
некоторое дерево вывода слова w в грамматике G. Рассмотрим самый
длинный путь в этом дереве (он начинается с корня и заканчивается
некоторым листом, помеченным символом из J2 ). Этот путь содержит
не менее | N | +1 вершин, помеченных элементами N. Среди первых
| N | + 1 вершин рассматриваемого пути найдутся две вершины с
одинаковыми метками. Выберем слова u, v,x, у и z так, что uvxyz =
w, поддерево с корнем в одной из найденных вершин имеет крону х и
поддерево с корнем в другой найденной вершине имеет крону vxy.
Пример 9.2.6. Рассмотрим язык £ = {a"’feI7! | m 0. n > О}
над алфавитом (а, b}. Утверждение леммы 9.2.5 не выполняется ни
для какого натурального числа р. Следовательно, язык L не является
линейным.
Упражнение 9.2.7. Какому классу принадлежит язык
{a"b"(cd)m | n > I, m > 1}?
Упражнение 9.2.8. Какому классу принадлежит язык
{akblc”'d" | к < п, I >
Упражнение 9.2.9. Какому классу принадлежит язык
108
[akblcma"bnch | Jt > 1, I < m, n > 3}?
9.3. Свойства замкнутости класса линейных языков
Пример 9.3.1. Пусть £ — {а, &, с} - Язык {atcwR | и G {а. 6}’}
является линейным, так как он порождается грамматикой
S —> aSa,
S -> bSb,
S->c.
Пример 9.3.2. Рассмотрим алфавит £ — {а, й, с} Язык
| О < тп < п, Л- 11}
является линейным, так как он порождается грамматикой
S —> Sc, 1' —+ ctf’Ь,
S-,T. T->Tb,
Г->Ь.
Теорема 9.3.3. Если и L2 - линейные языки над алфавитом £, то
Z-i U Lj, тоже линейный язык.
Доказательство. Пусть язык Lx порождается линейной грамматикой
(Al, 23, .Pi. Si} и L2 порождается линейной грамматикой
, где №—.«?• Тогда £j U £2 порождается
грамматикой
{Лг1 UAi и {Т},£,Р1 и Р2 и {Г -> Si, 1 -> S2}, Т),
где J’ Wj U ЛГ2 U £.Пример 9.3.4. Рассмотрим алфавит
£ — {а,Ь,с} - Язык
109
Пентус А.Е., Пентус М-Р Математическая теория формальных языков
L - Е* - {в"Ь"с" | n S 0)
является линейным, поскольку
£ — £i U £2 U (S* - £з)»
где языки
£1 = {дт61Ъс'! | т п, к 0}, £2 = {amt”c5 | п к, т >- 0}
являются линейными, а язык
£3 = {amh"rL | m > П, п > О, к > 0}
является автоматным, и можно применить теоремы 9.3.3, 3.2.1, 2.4.1 и
лемму 1.5.13.
Упражнение 9.3.5. Пусть S__ {а,6, с} • Является ли линейным язык
Е* - {ига |и е {а,б}*}?
Упражнение 9.3.6. Пусть S — {а, 6, - Является ли линейным язык
Е* — {wcun | и Е {й.Ь}*}?
Упражнение 9.3.7 Найти линейную грамматику порождающую язык
{а, й, с}* — £j» где Lx порождается грамматикой
£' —> baFaan,
к —> Ьпп.Ь'Ь,
—* Ьасааа,
£' —► baacb.
9.4. Свойства замкнутости класса контекстно-
свободных языков
Теорема 9.4.1. Если L - контекстно-свободный язык, то L тоже
ио
контекстно-свободный язык.
Доказательство. Пусть язык L порождается контекстно-свободной
фамматикой (jV, Е, Р, S} • Тогда язык L’ порождается грамматикой
U {Z},E,PU (2* -> ST, Т -->
где Т £ N U Е-
Теорема 9.4.2. Если Lx и Ъ2 - контекстно-свободные языки над
алфавитом £, то £j - L2 тоже контекстно-свободный язык.
Доказательство. Пусть язык Lx порождается контекстно-свободной
фамматикой ££Vj, Е, S\} и L2 порождается контекстно-свободной
фамматикой Е, ^2- 81} • М Г1 Лэ — 0. Тогда £j . £2
порождается фамматикой
(М и и {Г}. E.F1 и Рэ и {Г -> S1S2}. Г}.
где Т ЛГ1 U Лт2 Ь Е-
Теорема 9.4.3. Если Lx и .2 - контекстно-свободные языки над алфавите
£, то £ [ U L? тоже контекстно-свободный язык.
Доказательство. Пусть язык Lx порождается контекстно-свободной
фамматикой (2V1, £, S\} и L2 порождается контекстно-свободной
фамматикой (2V2, S, Р2, S2) > гДе МПЛз- С1- ТогДа £1 U £а
порождается фамматикой
{Лг1иЛ'2ир,}.Е,Р1иР2и{Г^51, Т -^S2}:iV
где J TVi U Nz U Е-
Теорема 9.4.4. Если L - контекстно-свободный язык, то £R тоже
контекстно-свободный язык.
Упражнение 9.4.5. Является ли контекстно-свободным язык
{гр Е {a.ft.с}* | / |w|b или |w|b |w|c} ?
Упражнение 9.4.6. Найти контекстно-свободную грамматику для языка
Xi U Ха» где LT порождается грамматикой
Е —> а,
г -> йх,
X' —+ сХ'Х',
а язык Ь2 порождается грамматикой
F-taM, М ->аЕ,
F -> сЛ/, Л-J -> ЬЕ,
АГ -> Е.
9.5. Пересечение и дополнение контекстно-свободных
языков
Теорема 9.5.1. Неверно, что для любых контекстно-свободных языков L т
и Т2 язык Xi П Ха тоже контекстно-свободный.
Доказательство. Положим Xi — {amfcmcn | J71 5= 0, п О} и
Х2 — {пт6г“с^ | ??г 25 О, п 25 0} • В примере 9.2.1 было доказано,
что язык X1 Г| Ха не является контекстно-свободным.
Теорема 9.5.2. Неверно, что для любого контекстно-свободного языка
X С Е* язык £* — X тоже контекстно-свободный
Доказательство. Положим X — £* — {аГ1йп сп | 72 25 0} . где
S — {а, Ъ, с р - В примере 9.3.4 было доказано, что язык L является
линейным (и следовательно, контекстно-свободным).
Упражнение 9.5.3. Является ли контекстно-свободным язык
112
{п}* - {а"? I п 0} ?
Упражнение 9.5.4. Является ли контекстно-свободным язык
{а,й}* — {ww | w 6 {а,6}*} ?
Упражнение 9.5.5. Существует ли такой линейный язык L над
алфавитом {а,Ь}, что язык ZR Г) Z не является контекстно-
свободным?
9.6. Пересечение контекстно-свободного языка с
автоматным языком
Теорема 9.6.1. Если Lx - контекстно-свободный языки ' 2 - автоматный
язык, то язык Zj Г1 Za является контекстно-свободным.
Доказательство. Пусть ( Дг, Е, Р, S) контекстно-свободная
грамматика, порождающая язык Lj. Без ограничения общности можно
считать, что множество Р содержит только правила вида А —а и
А —> а, где A е N, а € Е и q € N* (см. теорему 8.3.3), Пусть
(Q, Е, А,/, Р} ~ конечный автомат, распознающий язык L_2. Без
ограничения общности можно считать, что для каждого перехода
(д, 37, г?) € А выполняется равенство | х | - 1 (см. лемму 2.3.3).
Построим контекстно-свободную грамматику ' Дг, Е. Р. S} ,
порождающую язык Zj Г) Z2- Положим
JV = {5j и (Q z Л Q1.
Р - [s —> (р, s, Л | р е Т, ч е Р} и
и {(р, .4, q) л а I (р, а, д) е (А —> а) е Г} U
и {{рг.А,р„)-f (Po.B1,p1J...(p„_1.B„,p^ I
(А в,..е F, Р„ е <2............Р„ е <2}.
ИЗ
где fi - новый символ (не принадлежащий множеству Q \ JV X Q
).Пример 9.6.2. Пусть S- {а,Ь,с}- Рассмотрим контекстно-
свободный языкЬ порождаемый грамматикой
S -» а,
£-»6£,
S -» cSS,
и автоматный язык Lj, распознаваемый конечным автоматом
Л£ = (Q.E.A.A н . где Q = {1,2},] = {1},F = {2},
Д-[(1,о,2), (1,с, 2), (2,0,1), (2,6,1)}.
Тогда язык Г| JL2 порождается контекстно-свободной грамматикой
S —> £12,
£12 —* а,
£21 —* и,
£21 —* Ь£ц,
£22 Ь£12»
£и —* CS21S11,
£и —* CS22S21,
£12 —* с£г1£12.
£12 -f CS22S22-
Здесь 8ц, S12, S21 и S22 соответствуют символам (1.S, 1) ,
£, 2) , {2, £, 1) и £, 2) из доказательства теоремы 9.6.1.
Теорема 9.6.3*. Если Lx - линейный язык и L2 - автоматный язык, то
язык Z, j П JL2 является линейным.
Пример 9.6.4*. Пусть S —{а,Рассмотрим линейный язык Llf
114
порождаемый грамматикой
5 —> aaSaa,
S -> bSb,
S -tE,
и автоматный язык L2, распознаваемый конечным автоматом
Л/ — (Q.E.A, Л/1) > где Q = {1,2,3}, I - {1},F - {3},
Д= {(1,0,1), (1,п,2), (2,6,3), (3,а,3), <3,6,3}}.
Тогда язык Z х П £ 2 порождается контекстно-свободной грамматикой
S —» 51з,
5ц —*• по5цсм,
512 —* аа5цоо,
513 —* Q61513QQ,
51з —гю523се-я,
5зз —* па533аа,
5ц -> 65ц 6.
51з —+ 6513 6.
51з —* 65126.
5зз —> 65336.
5за —* 65336.
5ц —«• с,
53з ~
Эту грамматику можно упростить, заменив Бц и S33 на один
символ.Упражнение 9.6.5. Найти контекстно-свободную грамматику для
языка Lj П где Lx порождается грамматикой
£ —* аЕа,
F +Ы-'Ь,
115
Пентус А.Е., Пентус М.Р
а язык Ь2 порождается грамматикой
Л -> аМ,
Л' ьк,
М -к аК.
м — ьк.
М —
Упражнение 9.6.6. Найти контекстно-свободную грамматику для языка
il П Г.з» где Lj порождается грамматикой
/* —> at‘a,
F -> Ы-Д
Г-»е,
а язык Ь2 порождается грамматикой
К > аМ, М -> аК.
К -> йА/, К с.
К ЬК,
Упражнение 9.6.7. Является ли контекстно-свободным язык
{а^п^Ь" | п > О, U0}
Упражнение 9.6.8. Является ли контекстно-свободным язык
{(аЬ)™3 | п 0} U {наш | w Е {а, 6}*}
Упражнение 9.6.9. Существует ли над алфавитом {а,Ь} такой
линейный язык L, что язык | и Е L, UV € £} не является
контекстно-свободным?
9.7* . Теорема Парика
Замечание 9.1.7. В этом разделе предполагается, что зафиксирован
некоторый линейный порядок на алфавите 52. Пусть
£ — {ад,..., ап } •
не
Определение 9.7.2. Через ф^ будем обозначать функцию из S* в
определенную следующим образом: Ф^(и') — (|w|Q1, - < |?Т | а,) •
Аналогично, каждому языку Г, С S* ставится в соответствие
множество С N11, определенное следующим образом:
Фе(£) {Фг(ад) | w Е £}.
Пример 9.7.3. Пусть £= {щ.Пз} и L = {ах, а2а2а1}•
Тогда ФЕ(Ь) = {(1,0), (1,2)}.
Определение 9.7.4. Пусть В С 35” и Р С РГ‘. Тогда через L(В, Р)
обозначается множество
{Ь I pi I ... -I и | Ь е В, 1:^0, pi......ц е Р}.
При этом множество В называется системой предпериодов множества
L (В, Р). Множество Р называется системой периодов множества
L(B,P).
Определение 9.7.5. Множество Д С называется линейным (linear),
если А = L (В, Р) для некоторых конечных множеств В и Р.
Определение 9.7.6. Множество j4 С называется полулинейным
(semilinear), если оно является объединением конечного числа линейных
множеств.
Теорема 9.7.7 (Теорема Парика). Если язык Г_. С S* является контекстно
свободным, то множество фЕ(£) является полулинейным.
Доказательство можно найти в [Гин, с. 207-211].
Пример 9.7.8. Пусть S— {а, 6}- Рассмотрим язык
L = {а7П&71 | т > п или тп простое} • Можно проверить, что
множество ФЕ(£) не является полулинейным. Следовательно, язык L
не является контекстно-свободным.
117
Теорема 9.7.9- Если множество >1 С является полулинейным, то
существует такой автоматный язык L, что А = Фт; (X).
Доказательство. Докажем это для произвольного линейного множества
A. L(BrP) (на полулинейные множества утверждение
распространяется по теореме 3.1.1). Рассмотрим конечный автомат
Л/ = Л.ЛХ) , где Q = {1,2}, I = {1},Е = 121 и
U{(2.aJ‘...o* .2) | eF).
Очевидно, что Фр(£(А/)) =
Замечание 9.7.10. Теорема 9.3.1 является следствием теорем 9.7.7 и
9.7.9.
Упражнение 9.7.11. Является ли контекстно-свободным язык
{cim2bn | т 0, п > 0} LJ {а^Ъ” | 0 п < ш}
118
Автоматы с магазинной памятью
В данной лекции рассматриваются автоматы с магазинной памятью, в
которых помимо ограниченной памяти, хранящей текущее состояние,
имеется потенциально бесконечная память, используемая как магазин.
Даются необходимые определения, и доказывается, что автоматы с
магазинной памятью распознают в точности контекстно-свободные
языки. Приведены примеры практического использования автоматов с
магазинной памятью и приведены упражнения для самостоятельной
проработки
Подобно тому, как лраволинейным грамматикам соответствуют
конечные автоматы, контекстно-свободным грамматикам соответствуют
автоматы с магазинной памятью (МП-автоматы). В таком автомате,
помимо ограниченной памяти, хранящей текущее состояние, имеется
потенциально бесконечная память, используемая как стек (магазин), то
есть структура данных, где в каждый момент доступен только тот
элемент, который был добавлен позже остальных присутствующих на
данный момент элементов.
Для нагледности стек обычно изображают вертикально, так, что
доступный элемент данных (вершина) навддится наверх/. Но при
формальном определении конфигурации (мгновенного состояния) МП-
автомата удобно считать все содержимое стека конечной
последовательностью символов, то есть словом (в алфавите, в котором
перечислены все возможные данные, "умещающиеся” в одной ячейке
стека). Прежде чем определить конфигурацию, придется принять
произвольное соглашение о том, в каком порядке записывать
содержимое стека в этом слове. В этой книге считается, что вершина
стека находится в начале слова (то есть слева). В разделе 10.1 даются
необходимые определения. В разделе 10.2 доказывается, что МП-
автоматы распознают в точности контекстно-свободные языки.
10.1. Определение автомата с магазинной памятью
Определение 10.1.1. Автомат с магазинной памятью ( МП-автомат,
магазинный автомат, стековый автомат, pushdown automaton) - это
119
Пентус А.Е., Пентус М-Р
шестерка Д/ = (Q, Е, Г, I,, где Q. Е- Г и Д - конечные
множества, I С Q, }•' С Q и
Л С (Q < Е* .< Г) X (Q X Г*).
Здесь Q - множество состояний, Е - входной алфавит, р - алфавит
магазинной памяти (stack alphabet), Д - множество переходов (transition
relation), элементы I называются начальными состояниями, элементы F
- заключительными или допускающими состояниями.Пример 10.1.2.
Пусть Q = {1,2 }, £ = {а, 6} . Г {Л,В}.
((2,а,А)Л2,е)), «2,&,B). <^)>Ь
I — 1, / =2- Тогда (Q, Е, Г, Д, Г, - МП-автомат.
Замечание 10.1.3. МП-автоматы можно изображать в виде диаграмм
состояний На диаграмме каждое состояние обозначается кружком, а
переход - стрелкой. Каждое начальное состояние распознается по
ведущей в него короткой стрелке. Каждое допускающее состояние
отмечается на диаграмме двойным кружком. Стрелка с пометкой
Л", .7 : “у, ведущая из р в q, показывает, что х, является
переходом данного МП-автомата.
Пример 10.1.4. Ниже приведена диаграмма МП-автомата из примера
10.1.2.
Определение 10.1.5. Конфигурацией МП-автомата называется любая
тройка (q, w, q) , где q € Q, w 6 S*» Q 6 Г* •
120
Определение 10.1.6. Определим на множестве всех конфигураций М 11-
автомата Л/— (Q, S, Г. Д, 2, /’’) бинарное отношение ( такт
работы ) следующим образом. Если {{р.ж, 3}, (?*7)) Е Д • w G S* и
о е Г*.то h (q,№,7q)
Замечание 10.1.7 Обычно из контекста ясно, о каком МП-автомате идет
речь. Тогда вместо будем писать |- .
Пример 10.1.8. Для МП-автомата из примера 10.1,2 выполняется
{1 , abba. t) h (1, bba .А) и (1, abba. e) H (2, abba, e} .
Определение 10.1.9. Бинарное отношение определяется как
рефлексивное, транзитивное замыкание отношения |- .
Пример 10.1.10. Для МП-автомата из примера 10.1.2 выполняется
(1,кВА) и (Кобба, е) Ё {2,e,s) .
Лемма 10.1.11. Если (р.х, Qi) (g.E.Qa} и (r.e.ctj)
то {p,a:iy, Ofi.cij) Ё (г, 5, од) -
Доказательство. Лемму легко доказать индукцией по коли честву тактов в
вычислительном процессе, ведущем из конфигурации ад} в
конфигурацию {Q.E.O2) •
Определение 10.1.12. Слово щ допускается МП-автоматом
= (Q, Х:, Г. Д. Г, .К) , если найдутся такие состояния g Е I и
9 6 К, что (s, w,e) Г {ц.е,е) .
Определение 10.1.13. Язык, распознаваемый МП-автоматом,
множество всех слов, допускаемых этим МП-автоматом. Язык,
распознаваемый МП-автоматом М, обозначается L (М).
Замечание 10.1.14. Обычно в учебниках используется более узкое
определение МП-автомата, но это не меняет класса языков,
121
Математическая теория формальных языков
Пентус А.Е., Пентус М.Р
распознаваемых МП-автоматами.
Пример 10.1.15. Пусть Ц/ - МП-автомат из примера 10.1.2. Тогда
£(Л/) - [?гчп | к Е {а,6}*}
Пример 10.1.16. Пусть Е— {а, 6, с}- Рассмотрим МП-автомат
Л/ = (<2,Е,Г, где Q — [1,2,3,4.5}, Г —{.4,В}. т
- 11),F - 14,51 и
Д {«1,О,е),(1,А)), «1.6,е), (1,В)),
«1,с,е), (2,с)),
«2,а,А>,(2,Е)), «2,6,В),{2,е)),
«2,и,В).(3,е)), «2,6,А),(3,е)),
«2,е.А),(4,е)). «2.е.В).(4.Д.
«2,6,0, (5,с)), «2,а.е),(5,е)),
«3,О,е),(3,е)), «3,6,е),(3,е)),
«З.е.е). (4, е)>,
«4,е,А),(4,е», ((1,е, В), (4, е»,
«5, а, е) , (5, е)), ((5,6, е) , (5, е))}.
Тогда £(Af) - {ист/1 и Е {а,й}*7 т Е {а,й}*, u / г’п} -
Определение 10.1.17. Два МП-автомата эквивалентны, если они
распознают один и тот же язык.
Замечание 10.1.18. В данном пособии не рассматриваются
преобразователи с магазинной памятью (pushdown transducer) обобщение
автоматов с магазинной памятью посредством добавления "выходного"
потока (см. (7, 3.5] или [2, 3.1.4]).
Замечание 10.1.19. Некоторые авторы изменяют определение
допускаемых слов следующим образом: слово w допускается МП-
автоматом {Q, S, Г, Л, [, />') , если найдутся такие состояния g Е / и
§ Е F и последовательность q Е Г*,что {g, w,с) (g, с, ci) - Такое
определение не изменяет класса языков, распознаваемых МП-
автоматами.
Замечание 10.1.20. Некоторые авторы добавляют в определение МП-
автомата седьмую компоненту - Zq, называемую маркером магазинной
памяти (start pushdown symbol), и изменяют определение допускаемых
слов следующим образом: слово w допускается МП-автоматом
(Q, S, Г, Д, I, • если найдутся такие состояния sEl и
q Е Ь\ что (s, w, Ид} l~ (g, . Такое определение не изменяет
класса языков, распознаваемых МП-автоматами.
Замечание 10.1.21. Класс языков, распознаваемых МП-автоматами, не
изменится также, если использовать следующую естественную
комбинацию двух предыдущих определений: слово w допускается МП-
автоматом (Q, Е, Г, Л, Г, Zo; , если найдутся такие состояния
s Е f и q Е -Ь и последовательность q Е Г*, что
{s, w, Zo) £ (g, t , or) .
Замечание 10.1.22. Некоторые авторы добавляют в определение МП-
автомата маркер магазинной памяти Zq, отбрасывают множество F и
изменяют определение допускаемых слов следующим образом: слово w
допускается МП-автоматом (Q, S, Г, Л, I, Z(j) , если найдутся такие
123
состояния s (= { и gEQ. что (s,w, Иц} l~ - Это также не
изменяет класса языков, распознаваемых МП-автоматами.
Упражнение 10.1.23. Найти МП-автомат, распознающий язык
{о"6" I и > 0}
Упражнение 10.1.24. Найти МП-автомат, распознающий язык
{n’fr' с/‘ | г — j или j — fc}
Упражнение 10.1.25. Найти МП-автомат, распознающий язык
{«’ Е {а,6}* | |ш|а = |w|b}
10.2. Характеризация контекстно-свободных языков
Теорема 10.2.1. Если язык L является контекстно-свободным, то
существует МП-автомат, распознающий этот язык.
Доказательство. Пусть язык L порождается контекстно-свободной
фамматикой (ДГ, £, Р, S} , в которой каждое правило имеет вид
А —> иуЗ, где А Е Лг» w Е S* и 13 Е Лг* (в силу теоремы 8.8.3
такая фамматика существует). Положим Г — N> Q — 112, / 1,
/ - 2 и
Д = {«1, (2,5))} U {«2, гг, Л). <2,0}) \ (А ™В) Е Р}.
Можно доказать, что £2, u, S) р- (2,5,0:} тогда и толью тогда, когда
существует левосторонний вывод (здесь у, £ и о € Лт*
).Пример 10.2.2. Пусть Е — {а. Ь. C,<f} • Контекстно-свободная
фамматика
124
Пентус А.Е.. Пентус!
S —> а,
S bcl'S,
T^cSS,
Г -> dTT
и МП-автомат {{1,2}, Е, {5, J'}. Д. {1}, {2}) , где
Д-{{(1,с,с}.{2,5», «2,с,5),(2,55», «2, о, SJ, <2.е)>,
{{2,i.c,S),{2,T5», ((2,с,7%{2,55», ((2, d,1 >, (2.1 1»},
задают один и тот же язык.
Лемма 10.2.3. Каждый МП-автомат эквивалентен некоторому МП-
автомату (Q, S. Г, A, I. t) > где | 11 = 1, | F | = 1 и каждый
переход ((р, х, ]3}, £ А удовлетворяет требованиям |,г| 1 и
|.<э| + Ы- 1-
Пример 10.2.4. Рассмотрим МП-автомат Д/ — (Q, S, Г. A* I,/') > где
Q = J = r={l}.E = {a,b,c,d}.I-{Л,В}.
Д-{«1,а,А»(1,с», «1,6,В»(1,с»,
«1.с,е>,'1,А», «l,d,A>,( ,AB»}.
Ь.Вге
Он эквивалентен МП-автомату Л1* ~ A*, Z, К) . где
125
Пентус А.Е., Пентус М.Р
Математическая теория формальных языков
Q'= {1,2,3} и
Д'-{((1.о,.Ц.(1.£», «1ДВ),(1,£)), ((1,с,£), (1.А}>,
((l,d,A>.'2.£>i ((2,с,£>,'3,В)), «3,е.£),(1,А))}.
Ь.В:е
Пример 10.2.5. Рассмотрим МП-автомат Д/ _ 53, Г, Д, /, /'} » где
Q = I = F = {1} . S = {о, Ь,с} . Г = {Л} .
Д-{((1,о,£),(1,А>), «1,Ь,Л)Л,-£», ((1,с,е),(1,£))}.
Он эквивалентен МП-автомату Д/* - (Q’, 53, Л\ I, Л ) , где
О'= {1.2}, Г'= {А.Г} И
Д' _ {{(1,0, £), (1, А», «1, d. Л), (1, с)),
«1,с,£),!2,7 », «2,£,7),!1,£})}.
CE.fljl
Пример 10.2.6. Рассмотрим МП-автомат Д/ — (Q, S, Г, A, Z, , ще
126
Q—1—f={1.2]. £ = {а,Л}.Г={С7}.
Д-{«1,О,£)Т(1.С7))Т «1ЛС),(1,е»,
«2,М,(2,С», «2,0,0, (2,е))}.
Он эквивалентен МП-автомату Л-1/— (QJt 53, Г\ Дл,jF*J) » где
Q' = {О,1,2,3} , Г' = (Д 7}, I' = [0}, f = (3} .
Д' - Д U {«О, е, Е). (1, !)), «0, е, А (2, Г)),
«1,е,Г),(3,£», ((2.Е,Г|),е)}}.
а е:С
Теорема 10.2.7. Если язык L распознается некоторым МП-автоматом, то
является контекстно- свободным.
Доказательство. Пусть язык L распознается МП-автоматом
(Q. S. Г. Л. - Без ограничения общности можно считать, что
I— {&.}, F—{ди} и каждый переход 0}, (9.7)) G Л
127
Пентус А.Е., Пентус М.Р Математическая теория формальных языков
удовлетворяет требованию |,3l + |'у| — 1- Построим искомую
контекстно-свободную грамматику S, Р, S) , положив
М = 'Ap.g I р £ Q: qEQ},S - Д., и
Р- {4р,р ,с |р е <?} и
и { А„,( -• гД,.гцА.е I «р, {д,С}/ е Д.
((r.v.c),(«.e»eA. се г. tee}.
Можно доказать, что |~ е) тогда и толью тогда, когда
Лр.д => а? (здесь т £ Е* ).Пример 10.2.8. МП-автомат
Л/= ({1,2}.Е,Г.Д.{1},{2}),ще S = |а,6},Г = {D,E},
Д {«1.а6,<г),(1.£)>. «1,™,£),(!,с)), «1,6,с), (2. О»,
«2, а, с), (1,0», «2,а,О),(2,с», «2,6, Е}, {2,с))},
ab.S:E S.D'.S
и контекстно-свободная грамматика
S —> abTaaS,
S -> abSbU,
s -> ьии.
Г —* аЬТааТ,
1 ~^е,
U —> aSU,
U
задают один и тот же язык. Здесь S, Т и U соответствуют символам
Аг 2» Al i и А2 2 из доказательства теоремы 10.2./.Упражнение 10.2.9.
Найти МП-автомат, распознающий язык, порождаемый грамматикой
128
Пентус А.Е., Пентус М.Р Математическая теория формальных языков
/• —> аРй,
F —> afr'a,
F —> а.
Упражнение 10.2.10. Найти контекстно-свободную грамматику,
порождающую язык {гг Е {п, b}* | |u?|Q — |ш|ь}
Упражнение 10.2.10. Найти контекстно-свободную грамматику,
порождающую язык {щ? £ {a, b}*: | |w|Q |ш|ь}
Упражнение 10.2.10. Найти контекстно-свободную грамматику,
порождающую язык {w Е [а,&}* | |ш|а = 2|ш|ь}
10.3*. Автоматы с магазинной памятью с
однобуквенными переходами
Теорема 10.3.1. Каждый МП-автомат эквивалентен некоторому МП-
автомату (Q, S, Г, А,, где |Q| = 2 и каждый переход
((р, х, 0}, (?,7)} Е Л удовлетворяет требованиям | х | = 1, |;3| 1
И |7| с 2.
Доказательство. Пусть исходным МП-автоматом распознается
контекстно-свободный язык L, С S*. Согласно теореме 8.4.6 язык
} порождается некоторой контекстно-свободной грамматикой
/Дг, У:, P,S}, в которой каждое правило имеет вид А —t а7, где
Ae.V> a Е 53, Q £ №* и |^у| <' 2- Аналогично тому, как было
сделано при доказательстве теоремы 10.2.1, положим р__N> Q =
{1,2},I = {1},
({1.2}. еслиеЕ!,
{2}. еели£^£.
А = {((2?fllA},(2>7N | (А 4 в?) е F} U {{(1,а,е)Д2>7)) | (5^ п7) € F}.
129
Пентус А. Е., Пентус М.Р
Теорема 10.3.2. Каждый МП-автомат эквивалентен некоторому МП-
автомату (Q, Е, Г. A. J. / ) , в котором каждый переход
({р. Л, 3}, (д»т)) € А удовлетворяет требованиям | х | = 1, |Д| 1
И |у| € 1
Доказательство. Пусть исходным МП-автоматом распознается
гантекстно-вободный язык £ С Е*- Согласно теореме 8.4.6 язык
£, — } порождается некоторой контекстно-вободной грамматикой
G = {N, Е, Р, S) > в которой каждое правило имеет один из
следующих трех видов: A _f о, А аВ. A -f аВС, где А £ Д'.
.£? € :V, 67 G Af • о 6 52• Легко добиться того, чтобы в правилах
грамматики G вспомогательные символы в правой части (то есть
символы В и С ) были отличны от начального символа S.
Положим Q — j\r (J {_1_) , где I Дг. Далее, положим Г — JV,
{£. L}.. если •- g L,
если в £ L.
I ={.?}, г =
А = {((А,а,с), (В,С» I (Л аВГ) eP}U
и{((А,а.е>,(В.Е)) | (А^вВ)еР}и
и {((А, а. В), (D, с)) I >Л : о) е Р. De Л' {5}}и
и(((Да.С).(1А))|Ц-«)еР}.
Упражнение 10.3.3. Найти для языка, порождаемого грамматикой
S ^а Т Т,
£t
Т -»67 ТА
Т —»с,
L r -> а Т,
МП-автомат, в гатором каждый переход .5}, (д^'у)} G А
130
Пентус А.Е., Пентус М-Р Математическая теория формальных языков
удовлетворяет требованиям I х I = 1, |/il 1 и |-у| < 1 .Упражнение
10.3.4. Найти для языка, порождаемого грамматикой
S^al'U.
ГaUT.
T->b.
и М
Lr > о,
МП-автомат, в котором каждый переход ((р, а;, 0}, 6 А
удовлетворяет требованиям |а’| — 1. |,3| 5^ 1 и | у| 1.
131
Дополнительные свойства контекстно-свободных
языков
В данной лекции рассматриваются свойства контекстно-свободных
языков, которые уцобно доказывать с привлечением автоматов с
магазинной памятью, а также формулируются два критерия контекстной
свободности, интересных в основном с теоретической точки зрения.
Приведены практические примеры и упражнения для самостоятельного
решения
В этой лекции излагаются те свойства контекстно-свободных языков,
которые удобно доказывать с привлечением автоматов с магазинной
памятью. В первых двух разделах приводятся некоторые свойства
замкнутости класса контекстно-свободных языков (замкнутость
относительно деления, взятия гомоморфного образа и полного
гомоморфного прообраза). В конце лекции формулируются два критерия
контекстной свободности, интересных в основном с теоретической
точки зрения.
11.1* . Деление контекстно-свободных языков
Теорема 11.1.1. Пусть - контекстно-свободный язык над алфавитом v
и 1,2 - автоматный язык над алфавитом Тогда язык
{a’ G X* | € L2) &У G £1} является контекстно-свободным.
Доказательство. Пусть (Qi, X, Г1, Aj, Д, £1) - МП-автомат,
распознающий язык L-p Без ограничения общности можно считать, что
для каждого перехода ,3), G выполняется
неравенство |,г| 1-
Пусть {Q21 23, Аг, Д, " конечный автомат, распознающий язык
Ь2- Без ограничения общности можно считать, что
Q1 П (Qi HQ2) -0
132
и для каждого перехода qJ Е Д2 выполняется равенство I х I =
1.Тогда язык | (Зу Е £2) ОД £ £1} распознается МП-
автоматом Л, ££') , где Q — Qj и (Qi _•< Q2)> 1 т1»
£ — £1 х £2 и
Л = Al U
U{({pi,e,e),((₽i,P2),e)) ||>1 е<3ь ₽2 !Л|и
U{({{pi.P2).c,(3),((<?i,ffi’),7)) I /3),<51,-у» ейъ
{рг. a.q?} е Л1 для некоторого а € 53} U
и{({(Р1.₽2).Е,^},((?1,р2),7))Ц(₽1,г,^,(вь7»еЛь РзеОзЬ
Пример 11.1.2. Пусть S = {к, fe} . язык!^ распознается МП-автоматом
и язык Ь2 распознается конечным автоматом
Следуя доказательству теоремы 11.1.1, получаем, что язык
[а- Е S* | (Зу е £э) ОД G £1}
распознается МП-автоматом, изображенным ниже.
133
Пример 11.1.3. Пусть £ — {а,6}, Lj — {гу £ Е* | |w|Q = |ш|ь} и
Z2 = {а" | п 2} - Тогда
{а: Е Е* | (Зу Е Ea)xy £ la j - {ш £ Е* | |w|c + 2 |щ?|ь}.
Пример 11.1.4. Пусть £ = {а, 6} . Zi = {tr Е Е* | tl’ — w® } и
— {шшЬЬг? I « G Е*. t' G S*}. Тогда
{.г Е Е* | (Зу Е Lz)xy Е £1} - Е*.
Замечание 11.1.5. Пусть £ = ^а, Ь,с} и £ С Е*. Язык L {с}
является контекстно-свободным тогда и только тогда, когда язык L
является контекстно- свободным.
Упражнение 11.1.6. Существует ли такой контекстно-свободный язык
L С Е*, что язык Subw не является контекстно-свободным?
Упражнение 11.1.7. Существует ли такой контекстно-свободный язык L
над алфавитом {а,Ь}, что язык {гг | (Зп О) гга2" Е £} не
является контекста о- свободным?
Упражнение 11.1.8. Существует ли такой контекстно-свободный язык!
над алфавитом {а, Ь}, что язык
{и е 1 и, 6}* | (Эт О) (Эп О) (ab)miBbJ" е £}
134
Пентус А. Е., Пентус М.Р
не является контекстно-свободным?
11.2. Гомоморфизмы и контекстно-свободные языки
Теорема 11.2.1. Для любого гомоморфизма h.: S* —> Г* и контекстно-
свободного языка L С языкЬ(Ь) является контекстно-свободным.
Доказательство. Приведем здесь доказательство, использующее МП-
автоматы, хотя эту теорему легко доказать и с помощью контекстно-
свободных грамматик. Пусть язык L распознается МП-автоматом
(<2,Е1,Г,Д,ЛК) . Тогда язык h (L) распознается МП-автоматом
(С,Е2,Г,Д', Л J'), где
Пример 11.2.2. Пусть Si — {a, fe, с} и — {а, £>} Рассмотрим
контекстно-свободный языкЪ, порождаемый грамматикой
S —> uSSt\
S-->b4
и гомоморфизм h: S" —> £*, заданный равенствами h(a) = а,
h (b) = ЬЬа и h(c) = а. Тогда язык h(L) порождается
контекстно-свободной грамматикой
S —* aSSa,
S -> bba,
Упражнение 11.2.3. Пусть гомоморфизм h,; {а, Ь, с}* —* {и, 6}* задан
соотношениями h (а) = Ь, — Е, К (с) = а. Рассмотрим язык
L, порождаемый грамматикой
13S
Пентус А.Е., Пентус М.Р Математическая теория формальных языков
S —> а,
S->bS.
S —> cSS.
Найти контекстно-свободную грамматику для языка h (L).
Теорема 11.2.4. Для любого гомоморфизма h : S* —* Е* и контекстно-
свободного языка L С S* языкЬ-1 (L) является контекстно-свободны»
Доказательство. Введем обозначение
Л = {х G S2 I х =1 h(G) Для некоторого а Е Sj}.
Пусть язык L распознается МП-автоматом (Q, Г, Д, 7\-f*) • Без
ограничения общности можно считать, что для каждого перехода
{{р.Я, й}, £ А выполняется неравенство |д?| 5^1- Можно
проверить, что в этом случае язык h-1 (L) распознается МП-автоматом
((/, ЕЬ Г, Д', Г, F') , где
Q'=A*<J.
С" - {г} > Г.
4'={(((е.р)-П-е),((йЛ).с)) |а£Е1, peQ}U
U {({-.с, 7},- | (<у;, .г,/1), {7, -у)) С X а™еЛ}-
Пример 11.2.5. Пусть = {с. d,e} и Sz = £ci, &} Рассмотрим
гомоморфизм h: S* —заданный равенствами h(c) = аа,
h(d) = Ъ и h (е) = bba. Пусть контекстно-свободный языкЪ
распознается МП-автоматом {Q, Е2. Г. А, ) . где Q = {р},
Г-{.4),1 - <р>, f - (р),
Д = {((р. а, е), (р, А)), ((р, Ъ. А), (р, е))}.
136
Тогда язык h-1(L) распознается МП-автоматом
(О', Е1, Г, Д', Г, Г') , где Q' — {р, ,ра,роо,рь,рь„ИЬ.} •
I' = {йЬ = {Ре} и
Д'- {((»,с,е),(д,а,е)), ((ps,d,e),(pb,c)), ((pB,e,c).(jjbba,c)),
(ДгМ)), ((P™,e,£),(pQ,j4)), ((рь,с,Л),(ре,Е)),
Язык h 1 (L) также порождается контекстно-свободной грамматикой
S cTUdS,
1 -^ci'UU,
и -> dl.
137
Пешус A.F... Пентус М-Р Математическая теория формальных языков
Упражнение 11.2.6. Пусть гомоморфизм h: Ь, с}* —? {а, 6}* задан
соотношениями h (а) = ab, h(b) = aaba, h(c) = Ь.
Рассмотрим язык L, порождаемый 1рамматикой
S aS,
S —> aSbS,
S —> bSaS.
Описать язык h-1 (L) .Упражнение 11.2.7. h: {c,d, e}* {tz, b}*
задан соотношениями h(c) = a, h (d) = ba, h(e) = bb.
Рассмотрим язык L, порождаемый грамматикой
В -> aBBa,
B^b.
Найтн контекстно-свободную грамматику для языка Ь-
1 (L) .Упражнение 11.2.8. Пусть гомоморфизм h; {с, d. е}* ? {а, Ь}*
задан соотношениями = bba, h(d) = аа, Л.(е) = Ь-
Рассмотрим язык Г,, порождаемый грамматикой
S —» aSbS,
S->E.
Найтн контекстно-свободную грамматику для языка б'
1 (L) .Упражнение 11.2.9. Обозначим через L язык, порождаемый
грамматикой
S -* aSb,
S —» ba.
Рассмотрим гомоморфизм /ij ; й, с, d, е, /}* {G, 6, с}*,
заданный соотношениями
hj(a) = ас,
h](b) = be,
hj(c) = аа,
138
hj(d) = ab ,
hj(e) = ba,
h^f) = bb ,
и гомоморфизм /12: {о, ft, r, d, r, f }* —* {a, b}*, заданный
соотношениями
h2(a) = a ,
h2(b) = b,
h2(c) = ab ,
h2(d) — aa,
h2(e) = bb ,
h2(f) = ba.
Найти контекстно-свободную грамматику, порождающую язык
Zi2(^i l(L {с,с})).
11.3. Представления контекстно-свободных языков
посредством гомоморфизмов
Теорема 11.3.1. Рассмотрим алфавит^_____0.3-bi, Ьэ, с}- и язык
L() С Е*, порождаемый контекстно-свободной грамматикой^’ 0:
S — СЬ1Ь261-КС А —»ai, R ‘Е,
С-кт, А —> 02. /?-► Га1^'61.
С eDC, A R —г Га2, ГЬ2,
П < А, А > Ь2, т -* я,
D—>AD. Т -> RCC.
Произвольный язык.£ С Е* является контекстно-свободным тогда и
только тогда, когда существует такой гомоморфизм h : Е" —* Ед, что!
= h-1 (ъ0)или£ = /z-l(Lp U {&})•
139
Пентус А. Е., Пентус М.Р
Доказательство. Достаточность следует из теоремы 11.2.4. Приведем
теперь идею доказательства необходимости (полное доказательство
можно найти в [Сал, с. 103-109]).
Пусть дан произвольный контекстно-свободный язык L. Согласно
теореме 8.4.6 язык Z { _ | порождается некоторой контекстно-
свободной грамматикой {{ Ai,..., An}, S, F, Ai) .в которой каждое
правило имеет один из следующих трех видов: Д,- —* q, А. —* <тА7,
Л,- -г аА,А1 , где a g
Определим вспомогательную функцию ft, ставящую в соответствие
каждому символу из 53 конечный язык над алфавитом £(1 следующим
образом:
h(a) = {Mah I (А, -» о) G F} U
и {6] &2^1с1а2а1 I (А,- —+ oAj) Е Р}и
U I (Аг —► сА?-А^) Е F}.
Искомый гомоморфизм п определяется следующим образом: если
h(a) - {rui,W2,...,w},
ПОЛОЖИМ
/г(а) — cwicu^c... сидо.
Пример 11.3.2. Пусть £ = {с/. «у} • Рассмотрим язык L,
порождаемый грамматикой
Ai ->/,
Ai —> dA]_A2.
Аа —* /Аз,
Аа - /АаАз,
Aj -> д.
Тогда L = h-1 ( Lq ), где гомоморфизм h задан равенствами
h(d) — сЬфгЬ^а^а^ ia2aic,
h(f) — cb1b2b1cb1b2b2b1a1a2a2a2a1cb1b2b2b1a1a2a232aiaia2a2alc’
h(g) = cbjbzbzb^jc.
Рассмотрим, например, слово df fg Е L. Проверим, что слово
h (dffд) выводится в грамматике Gq из теоремы 11.3.1. Очевидно, что
S => сЬ^Ь-гЪу Ис С помощью последних пяти правил грамматики Gq
можно вывести, что
Я =< С 61^262610102020201^'^6162^2^261-
Осталось найти такие шесть выводимых из С слов Wi.....Юц, что
ft(d№) -
= cbj 62 61 czi a2Oi Оу о2 о iii'i 62 61 a2 Qi 11'5 u?G 6]62 &i с.
Подходят слова
«1 = С,
W2 = c,
W3 = cbib2b2bia1a2a2a2aicbib2b2biaia2a2a2a]aia2a2aic,
w4 = cbib2bic,
Wjj = cb ^^^13^2323231313282310,
w6 = c.
Теорема 11.3.3 (Теорема Хомского-Шютценберже). Язык £, (Z 52*
является контекстно-свободным тогда и только тогда, когда существуют
такие натуральное число п, автоматный язык Lj над алфавитом
~ {flj, 61,62, Ь2,..., щ, и гомоморфизм
h: Х’.что L = fliL^ n£t),rfle rf* - язык Дика над
2п буквами.
Доказательство можно нантн в [Лал, с. 331-333].
141
Упражнение 11.3.4. Рассмотрим языкЬр порождаемый грамматикой
S -г aShS.
и язык L2, порождаемый грамматикой
S —> bbSa.
S -4£.
Найти такой гомоморфизм h; {а, 6}” —* {а., 6}*, что
Й11 П {а~Г | т 2 0, п > 0}) = £2.
142
Пентус А.Е., Пентус М.Р
Детерминированные контекстно-свободные языки
В данной лекции рассматриваются детерминированные контекстно-
свободные языки. Формулируется ряд свойств этого класса языков,
рассматривается важность детерминированных контекстно-свободных
языков для теоретической информатики, которая заключается в том, что
для каждого такого языка можно указать быстрый алгоритм,
распознающий принадлежность слова этому языку. Приведены
практические примеры и упражнения для самостоятельного решения
К сожалению, теорема о детерминизации не переносится с конечных
автоматов на автоматы с магазинной памятью. Возникает важный для
практических приложений класс языков, распознаваемых
детерминированными автоматами с магазинной памятью (то есть
такими автоматами с магазинной памятью, которые ни в какой
конфигурации не могут выбирать между несколькими очередными
тактами). Точные определения этого класса автоматов и
соответствующего класса языков даны в разделе 12.1. Чтобы получить
полезный и естественный с точки зрения практики класс, нужно
добавить в конец каждого слова специальный символ, называемый
маркером конца слова. Языки из выделенного таким образом класса
называются детерминированными контекстно-свободными языками. Во
втором разделе лекции формулируется ряд свойств этого класса языков.
Важность детерминированных контекстно-свободных языков для
теоретической информатики обусловлена тем, что для каждого такого
языка можно указать быстрый алгоритм, распознающий
принадлежность слова этому языку
12.1. Детерминированные автоматы с магазинной
памятью
Определение 12.1.1. Будем говорить, что два перехода МП-автомата
11 (й.Тз» являются
совместными, если
1- Pi
р2•
2. а?! Е или а,:2 L -i~i;
3- it?L с За или З2 Г 31 •
Определение 12.1.2. МП-автомат называется детерминированным
(deterministic), если он имеет ровно одно начальное состояние и все
переходы этого автомата попарно несовместны.
Пример 12.1.3. МП-автомат И из примера 10.2.8 не является
детерминированным, так как переходы ({2, а, с), (ls и
(2.е)) совместны.
Определение 12.1.4. Язык L над алфавитом £ называется
детерминированным контекстно-свободным языком, если существует
детерминированный МП-автомат. распознающий язык 7, - над
алфавитом SU{$}. где - дополнительный символ, не
принадлежащий множеству Символ называется маркером конца
строки.
Пример 12.1.5. Рассмотрим алфавит £ = {а, 6}. Язык
L — {a”’fen | т — п или и = 0} - детерминированный контекстно-
свободный язык, так как язык £•{$) порождается
детерминированным МП-автоматом (хотя язык L не порождается
никаким детерминированным МП-автоматом).
Пример 12.1.6. Язык L, распознаваемый МП-автоматом М из примера
10.2.8, является детерминированным контекстно-свободным языком,
так как язык _£,-{$} порождается детерминированным МП-автоматом
АГ = (11,2,3,4}. {о, Ь,{А}. Д'. {1}, {4}),
где
Д' {«l,at,£),(l,.e)>, ((1,аа,А),(1,£)), <(1,Ь,£>.(2,£)),
«2,6, А). {2, е)), «2,О,£),(зЖ, «2.#.£),(4,£»,
«3, иЬ,е), (3, Е}}, ((3, b,s), (2, е))}.
144
Пентус А.Е., Пентус М.Р
О.Ь.£аЕ
®.€:Е
Упражнение 12.1.7. Является ли детерминированным контекстно-
свободный язык {a"b2mnfema11 | m > 0. п 0} ?
12.2*. Свойства класса детерминированных языков
Теорема 12.2.1. Каждый автоматный язык является
детерминированным контекстно-свободным языком.
Доказательство. Утверждение следует из теоремы 2.7.1.
Лемма 12.2.2. Каждый детерминированный МП-автомат
Л/= (Q, S, Г, Д. Г.эквивалентен некоторому
детерминированному МП-автомату Л/* = (О\ Г*» Д*, 1', > где
для каждого перехода {(р.х,/5). выполняется неравенств!
И + 1/31^1-
Доказательство. Пусть дан детерминированный МП-автомат
Л/ — (Q, X, Г, Д. Д . Назовем избытком перехода
((р.-г.^Двл)) е Л
натуральное число так(0, |а.'| 4- |/3| - 1)- Докажем лемму индукцией
по сумме избытков всех переходов.Шаг индукции. Пусть существует
переход
145
Пентус А.Е., Пентус М.Р
«й>,^4А).(до,7о)> еЛ
с положительным избытком. Рассмотрим четыре случая.
Случай 1. Д П (({ро} X {е} а Г*) < (Q < Г*)) — 0- Обозначим
первый символ слова х0 через ао. Преобразуем МП-автомат М в
эквивалентный ему детерминированный МП-автомат с меньшей
суммой избытков всех переходов. Для этого добавим новое состояние г
и переход {{ptu do, е). {г, е)) . Каждый переход вида
(q^)) заменим на переход {(г, {q, 7}} - К
полученному таким образом детерминированному МП-автомату
применимо предположение индукции.
Случай 2. Д П (({ро} * S* X {е}) X (Q х Г*)) = 0. Обозначим
первый символ слова Зр через Ср. Преобразуем МП-автомат М в
эквивалентный ему детерминированный МП-автомат с меньшей
суммой избытков всех переходов. Для этого добавим новое состояние г
и переход ({ро,Е, Со), • Каждый переход вида
({ро.-Г,СоД,(д,7)) заменим на переход {{г, х, /3). {д, -/}} К
полученному таким образом детерминированному МП-автомату
применимо предположение индукции.
Случай 3. Существует переход ((ро?Е, е), G А- Тогда
переходы «й>..Ги, .Йо), (ffo, 7о>> и ({р0, е, с), (gi. тЩ совместны
Противоречие.
Случай 4. Существуют переход /Зх}, (<£ь71)) бЛ и переход
((Ро,Х2,е), (Q2.72)) Е Л. где '31 и 372 ^Е- Тогда переходы
и <{P0^2,eMffb72)) совместны.
Противоречие.
Лемма 12.2.3. Каждый детерминированный МП-автомат
Л/— 53. Г. Д»/./ ) эквивалентен некоторому
детерминированному МП-автомату Д/" — 53, Г\ Д?. J7, , где
146
каждый переход {{р, ж, Д), (g^)) € удовлетворяет условиям
И 4-|/?| <1И 131 4 |7|-1.
Доказательство. Сначала применим лемму 12.2.2. затем преобразуем
МП-автомат так, чтобы для каждого перехода ^р.ж, ,3),
выполнялось неравенство |j-| 4- |/3| + |')| 1 (см- пример 10.2.4), и в
заключение заменим каждый переход вида х, t), {(?,£}) на два
последовательных перехода (см. пример 10.2.5).
Лемма 12.2.4. Пусть$ S, L С £*и язык/, - порождается
некоторым детерминированным МП-автоматом. Тогда этот язык
порождается также некоторым детерминированным МП-автоматом
(С. S и {*}. Г. Л. I. П , где Q = Ch и <5з, Qi П Q2 = 0,
Д AnUAuUAa,
An С (<5, х Е* Г*) (Qi < Г*),
Д12 С (Q! :< {*} .< Г’) Ч (С?2 X Г),
Ах, С (<2з х {г} X Г*) х (Q, >. Г*).
I С Qi, У' С С?2И каждый переход
((р,г,$,(5,7» £ Л
удовлетворяет условиям |ж| + |/3| 1и |,3| 4- |'у| = 1-Доказательство.
Применив лемму 12.2.3, получим детерминированный МП-автомат
{Qr, S U {$}, А.*, I', - Построим искомый МП-автомат
(Q. S U {$},]?, Л. I. F) , положив Q — Q’ .< {1.2} ,
Ql-Q'40’ Q2-Q'>:{2}, Г = Г.
У = F' {2} .
Ли - | ((р,аЯ, (5,7» е Д', х е £•},
Л12 = {«(Р-1’.®.3>#2),7» I «Р-S. в),(5,7» е Д'}.
Л22 = | «Р,£,/3» (5.7» е Л'}.
147
Теорема 12.2.5. Язык Г_. С Е* является детерминированным контекстно-
свободным языком тогда и только тогда, когда найдется такой
детерминированный МП-автомат = {(J*, S, Г\ Д'. jf1"') > что
£ = для некоторых иЕГ’*}.
Доказательство. Достаточность проверяется легко. Докажем
необходимость. Рассмотрим МП-автомат
ЛГ = 'Qi U <?2. Е и {#}, Г, Д11U Д12 U Дгз. {5.}, F).
о котором говорится в лемме 12.2.4.Для любых q е г* и п с q2
введем обозначение
Д^^а, Н) = {р € Qz | (р,н,а} (7,с,£) для некоторого q С Н}.
Очевидно, что Д^Чу. Д^1 (а, Н)} = A^f-yo, Н) для любых
О g Г*, у € Г* и Н С фа-Построим искомый МП-автомат
(Qr, Е, Г', Д', , положив
Q' Q1 >' T’FQz).
Г'^ГхР«?2),
г={(?», д^.т-
Г = {{р,я) | «р,#,Е).(в,с))еД12. hcq2,
((р,:г,СШс»еД11, HQQ2. KQQ2]U
и {{((Р, Я),х,е), ((?, Д2-Дс, Н)), I
!(р, ж. Е>, (?- Q) € Аи, И С <22 }.
(Напоминаем, что через обозначается множество всех
подмножеств множества 02-Жндукцией по количеству тактов работы
можно доказать, что
148
Пилус А.Е., Пилус М-Р Математическая теория формальных языков
«e.,AJ21(£,24),w,e) Р Щ,ЯП).ЩС1,Я1)(С3,Я2)...(С„,/Щ)
Л/'
тогда и только тогда, когда
(9и,гл,еИ (g,c-,Ci<h|..GJ
И
Hk - 1^(СМ(\+1...С..П
для каждого к п.
Теорема 12.2.6. Пусть L - детерминированный контекстно-свободный
язык. Тогда язык!, не является существенно неоднозначным.
Доказательство. Пусть дан детерминированный контекстно-свободный
язык!.. Рассмотрим МП-автомат
Л/ = (Q1 U <Эз, Е и {#}, Г, Дц U Д12 U Аза. (Щ. F).
о котором говорится в лемме 12.2.4. Применив к этому МП-автомату
конструкцию из доказательства теоремы 10.2.7, получим однозначную
контекстно-свободную грамматикуС, порождающую язык Г. - -[$1 .
Стирая в этой грамматике все вхождения символа jjj, получим
контекстно-свободную грамматикуС1, порождающую язык L.
Так как МП-автомат М не содержит переходов, ведущих из Q2 в Qx, а
символ *jj встречается только на переходах, ведущих из С-, в Q2, то в
каждом G* -выводе однозначно определяется правило, которому в G
соответствует правило, содержащее Поэтому существует
естественное однозначное соответствие между деревьями вывода в
грамматике G' и деревьями вывода в грамматике G (при этом кроны
соответствующих друг другу деревьев различаются только символом jjj
). Следовательно, грамматика G ’ тоже является однозначной.
Теорема 12.2.7. Дополнение каждого детерминированного контекстно-
свободного языка является детерминированным контекстно-свободным
149
языком.
Доказательство можно найти в [7, с. 110-116] или [2, с. 212-217].
Пример 12.2.8. Язык £ = {afebTT!cri I к ?п или тп п} над
алфавитом {а, Ь, с} не является детерминированным контекстно-
свободным языкам, так как его дополнение не является контекстно-
свободным.
Теорема 12.2.9. Неверно, что для любых детерминированных
контекстно-свободных языков L , и Ь2 язык Li ГI £j тоже является
детерминированным контекстно-свободным языком.
Доказательство. Достаточно рассмотреть детерминированные
контекстно-свободные языки и Ъ2 из доказательства теоремы 9-5.1.
Теорема 12.2.10. Неверно, что для любых детерминированных
контекстно-свободных языков Lx и Ь2 язык £j U £2 тоже является
детерминированным контекстно-свободным языком.
Доказательство. Утверждение следует из теорем 12.2.7 и 12.2.9 и закона
де Моргана.
Упражнение 12.2.11. Является ли детерминированным контекстно-
свободный язык {afebmc” | к < max(wi,n)} ?
150
Синтаксический разбор
В данной лекции рассматриваются формальные определения,
связанные с прямыми синтаксическими анализаторами, определяется
понятие синтаксического разбора и связанные с ним специфические
определения. Приведены практические примеры и упражнения для
самостоятельной проработки
В этой лекции даются формальные определения, связанные с прямыми
(то есть читающими входную строку слева направо) синтаксическими
анализаторами. В первом разделе доказывается, что для языков из
класса LL (1) можно построить основанный на детерминированном
автомате с магазинной памятью анализатор, который создает дерево
разбора, двигаясь снизу вверх, то есть от листьев к корню (в теории
контекстно-свободных грамматик принято изображать деревья с корнем
наверху). Во втором разделе формулируется аналогичный результат об
анализе свер^ вниз для грамматик из класса 1). При этом понятие
анализа снизу вверх формализовано в терминах последовательности
правил, примененных в левостороннем выводе, а понятие анализа
сверху вниз - в терминах обращенной последовательности правил,
примененных в правостороннем выводе.
13.1. Нисходящий разбор
Определение 13.1.1. Процесс нахождения дерева вывода слова w в
заданной контекстно-свободной грамматике называется
синтаксическим разбором или синтаксическим анализом (parsing).
Определение 13.1.2. Протоколом левостороннего вывода в контекстно-
свободной грамматикеG = {Л’, 5Z, Р, 5) будем называть
последовательность правил, примененных в этом выводе. Формально
говоря, протоколом левостороннего вывода
является последовательность
151
(Ai -> cti)........(A„ - a„),
где для каждого i n, если мЛ — uJ30 и для
некоторых к е Е*, В £ А, б € (jVU Е)*, 3 € (Лг U Е)". то Ai+1
= В и Q»+i = j.Пример 13.1.3. Рассмотрим контекстно-свободную
грамматику
S -> г.,
S —» dS,
S —»• aSeSb.
Дереву вывода
соответствует левосторонний вывод
S => aSeSb => aeeSb => acedSb => acedcfe.
Протоколом этого вывода является последовательность
(S —* (S —* с)» (S —♦ dS), (£ —> с).
Лемма 13.1.4. Разным левосторонним выводам в одной и той же
контекстно-свободной грамматике соответствуют разные протоколы.
Замечание 13.1.5. Протокол левостороннего вывода в контекстно-
свободной грамматике является естественным описанием
соответствующего дерева вывода в порядке префиксного обхода
(preorder traversal). (При префиксном обходе упорядоченного дерева
152
первым посещается корень этого дерева, затем выполняется
префиксный обход первого непосредственного потомка корня, затем
второго и т. д.)
Например, протокол левостороннего вывода из примера 13.1.3 задает
процесс постепенного конструирования дерева вывода, изображенный
ниже.
S
Ь
153
Пентус А. Е., Пентус М.Р
Определение 13.1.6. Левым разбором (left parse) слова w в контекстно-
свободной грамматике G называется протокол любого левостороннего
вывода слова w в грамматике G-
Пример 13.1.7. Левым разбором слова
aceaacecbecbb
в грамматике из примера 13.1.3 является последовательность
(S —» aSeSb), (S с), {S —»aSeSb),
(S aSeSb), (S с), (5 -» с), (5 -> с).
Определение 13.1.8. Процесс нахождения левого разбора слова w в
заданной контекстно-свободной грамматике G называется нисходящим
разбором (top-down parsing).
Определение 13.1.9. Вычислительным процессом МП-автомата М будем
называть конечную последовательность его конфигураций, каждая из
которых (кроме первой) получается из предыдущей одним тактом
работы автомата М.
Пример 13.1.10. Рассмотрим МП-автомат
ab.S:E S.D'.e
vJ b.S:D U
из примера 10.2.8. Последовательность
(1?6а6,е), (2,ab,D)T (1, b,DD), {2,£,DDD},
{2,e,DD‘), (2,e,D},
является вычислительным процессом этого МП-автомата.
Определение 13.1.11. Если в некотором вычислительном процессе МП-
автомата Л/ ~ \Q, S:, Г. Д» Z, первая конфигурация имеет вид
154
Пентус А. Е., Пентус М.Р
(s, W7e} , где s Е I и W Е S’* j а последняя конфигурация имеет вид
где q Е i~\ то будем говорить, что этот вычислительный
процесс допускает слово w.
Пример 13.1.12. Вычислительный процесс из примера 13.1.10
допускает слово ЪаЬ.
Замечание 1,3.1.13. МП-автомат М допускает слово тогда и
только тогда, когда некоторый вычислительный процесс МП-автомата И
допускает слово w.
Определение 13.1.14. Протоколом вычислительного процесса МП-
Автомата Л/~ (Q, S, Г. Д. Г,/*) будем называть
последовательность переходов, примененных в этом вычислительном
процессе. Формально говоря, протоколом вычислительного процесса
<5i,wl,oi),..<в„,ш„,о„)
является последовательность переходов
((«),£l,.Sl),{51.'n)), !»,&>}, (Чг,,'in/!,
где для каждого 1 между 1 и г слово xj_ определяется равенством
Шг—1 аЦ'Щ, а через ,3, и 'J’i обозначены кратчайшие слова из Г*,
удовлетворяющие условиям
«в;-1,г„а;1,<9„7;)) < Л,
Q.-1 =
о, =>.£
для некоторого слова С, Е Г*.Пример 13.1.15. Протоколом
вычислительного процесса из примера 13.1.10 является
последовательность
«2,а,е),(1,Р)), «1,(.,с),(2,Р)).
({2.е.Р).(2.Е>}. «2,е.Р),(2.е)>, «2.Е,Р).'2.е)).
155
Определение 13.1.16. Для каждой контекстно-свободной грамматики
G = (JV, Е. Р. S) обозначим через (7$ контекста о- свободную
грамматику (Лг U }, ЕU {$}, Ps,5») , где $ и Ss - два
различных новых символа, не принадлежащие множеств Л' U Е> и
— Р U > 5$} - Грамматику G^ будем называть фамматикой
с маркером танца строки. Терминальный алфавит грамматики G<$ (то
есть множество £ U {$} ) буцем обозначать через £g.
Нетерминальный алфавит Д U {»$$} буцем обозначать через Д$.
Пример 13.1.17. Рассмотрим контекстно-свободную грамматикуС с
терминальным алфавитом Е — (го, п, +, , (, ), $} ,
вспомогательным алфавитом N = {S, А, В, С} и правилами
A t А+В, В —> в*с, »М),
A -г .1-В, в в /с, ( .т —ь т..
/та в, вс, (7 —> п.
Ей соответствует следующая фамматика f7jj ( : маркером танца строки:
т , в в —> в*с. (И),
Л— 1+В, в в/с, С —k чп,.
Л > А-В, в -> с. С п.
Л~В.
Замечание 13.1.18. Очевидно, что £((7$) = L(G) • {$) .
Лемма 13.1.19. Если , где е (.'V U £:)• иве (Л' U S)*,
то в — е •
Доказательство. Очевидно, что если “ ф , то слово о? не содержит
символа .5$.
156
Пентус А.Е., Пентус М.Р
1еперь докажем индукциеи по длине вывода, что если * < s , то
б___е - Пусть на последнем шаге в этом выводе применялось правило
(Л > С р.
Если |q‘|$ > 0, то Л = .Sig, что невозможно (очевидно, что если
Sih **-' ’
“ , то слово о? не содержит символа 5$ ).
Если |о|jg 0. то рассмотрим два случая. При
S3S Л- ТДСфФв
равенство б — f обеспечивается предположением индукцией. Случай
£$ Л =>
с$ <-й
невозможен, так как предположение индукции дает — £ •
Определение 13.1.20. Пусть даны контекстно-свободная грамматика
G — {N, Е, Р, 5) и МП-автомат Д/ — (Q, Е, Г. Д. Г, Р) . Будем
говорить, что МП-автомат М - нисходящий магазинный анализатор (или
предсказывающий анализатор, top-down, left-to-right parser, predictive
parser) для грамматики G, если и существует такой
гомоморфизм Г: Д* —* Р^, что для каждого вычислительного
процесса (МП-автомата М ), допускающего слово w С £|, образ
протокола этого вычислительного процесса при гомоморфизме г
является протоколом некоторого левостороннего вывода слова м в
грамматике (?$. (При задании гомоморфизма г конечные множества Д
и Р$ рассматриваются как два алфавита.)
Пример 13.1.21. Рассмотрим контекстно-свободную грамматику из
примера 13.1.17. Язык Z.(G$) распознается недетерминированным
МП-автоматом Л/ — ({1, 2}^ Е,Г. А. {1}, {2}) , где
157
Пентус А.Е., Пентус М-Р Математическая теория формальных языков
Г-{А.В,С,+-
И
Д {((l,E,e),(2,AS)),
«2,е,А>,(2.А+В)), <(2,е,А>,(2,А-В)), «2,е,А>.(2,В»,
"2,£,В),(2,В*0>, ((2,t.B),(2,B/0), ((2,£,В), (2,0),
«2,(.0,(2,А)1 «2, т,0,(20), ((2,^,0, (2,е)),
"2.+.+),'М),
'(2,-.-4'20),
((2, *.*1,(20),
((2./,/),(20).
((2,),)), (20),
((2,#.#/,(20)}.
Легко убедиться, что МП-автомат М является нисходящим магазинным
анализатором для грамматики G из примера 13.1.17.
Определение 13.1.22. Сентенциальной формой (sentential form)
грамматики G — ^Д’, 53. Р, S) называется любое слово в алфавите
Дг □ J}, выводимое из начального символа S.
Пример 13.1.23. Слова S, aSeaceSbb, aceaacecbecbb являются
сентенциальными формами грамматики из примера 13.1.3.
Определение 13.1.24. Пусть дана контекстно-свободная грамматика
G — {N, Г, Р, 5) - Определим три функции FIRSTq, FOLLOW^
и DIRECTOR^ > связанные с грамматикой G. Для краткости будем
писать просто FIRST, FOLLOW и DIRECTOR.
Функция FIRST ставит в соответствие каждому слову £ (-V U S)*
множество тех терминальных символов, с которых начинаются слова,
выводимые из uj, то есть
158
FIRSTS) {6 € E | (30 € (N U E)*) A 66}.
Функция FOLLOW ставит в соответствие каждому нетерминальному
символуА множество тех терминальных символов, которые могут
встречаться в сентенциальных формах непосредственно справа от А, то
есть
FOLLOW(X) — {Ь G Е | (3q € (JVU Е)*) (39 € (Аг U Е)*) Я £ ?;А66}.
Функция DIRECTOR ставит в соответствие каждому правилу
(Л —> q) G Р множество терминальных символов, определяемое
следующим образом: если а Е >то
DIRECTOR^ -> а) — FIRST(ct) U FOLLOW(Л),
иначе
DIRECTOR^ -> а) — FIRSr(of).
Пример 13.1.25. Рассмотрим контекстно-свободную грамматику из
примера 13.1.3. Очевидно, что
L'lRS'i'Ic) {с},
EIRST(dS) = (<!},
EIRST(aSeSb) — {а ]
EOLLOW(S) = {fc,e},
DIRECiOR(S • с) - {с},
DIRECi'ORfS -> dS) = {d}.
DIRECi'OR(S -> aSeSb) {a}.
Пример 13.1.26. Рассмотрим контекстно-свободную грамматику из
примера 13.1.17. Очевидно, что
1S9
Пентус А.Е., Пентус М.Р Математическая теория формальных языков
DIRECTOR^ -> С) -
DIRECTOR^ -> В/С) = {(,т.п},
DIRECTOR^ -> В*С) =
Пример 13.1.27. Пусть контекстно-свободная грамматика
G = (JV. S. Р, S) не содержит бесполезных символов. Пусть даны
правило (Д —> q) G Ри символ <= J7. Тогда утверждение
b е DIRECTOR^ > о)
равносильно тому, что найдутся такиед; £Е*, if 6 S*h
ее GV us)*, что
S => хАО и Jici-в => xby.
Теорема 13.1.28. Пусть дана контекстно-свободная 1рамматика
G — (N, Е, Р,$) Пусть(7g — Е$. Pg, £$} - соответствующая
контекстно-свободная 1рамматика с маркером конца строки,
приведенная в определении 13.1.16. Обозначим черезММП-автомат
{Q, >-S,l {л}}, 1,1С
Q={^e4IM^ Oufe},
Г — U Ejn
A = {((g„£.,e),(E,Si))}U
и {((с. а.с), (а, с)) I п е E,}U
U{((a,E,ci),(£,f))|ceEs}U
U{((6,e,4},(6,a» | Ь е DIRfcG'lORG,(A »а)}.
Тогда МП-автоматМявляется нисходящим магазинным анализатором для
грамматики С.
Доказательство. Индукцией по количеству тактов можно доказать, что
160
о *
если (y,W,3) Г" (£,£,£), где и € то г.$ VZ1?. Следовательно,
L(M) С L(GS}.
С другой стороны, докажем, что если в грамматике выводится
и где ueEjj, jeiNUEf, ЬеЕ(,
W Е Sj.TO (Ь, -Ц!, 3) £ (<Е, Е, е) .
Проведем доказательство индукцией по сумме длины слова bw и длины
вывода ft . Случай |bw| = 1, 3— bw образует базис
индукции (очевидно, что (Ь,Е,Ь) 1г е) )- Проверим теперь шаг
индукции. Так как 3 => Ь1£' и bw E, то 3^ £ Если 3 — . где
А Е jV »то вывод 3 ^¥-'- имеет вид
А& => аб => bw,
где (Д —► п) Е и в силу леммы 13.1.27
b Е DIREjC FORg^ (А —т о). Отсюда получаем, что
Аб) Н (b, W, Q0) , и остается применить предположение
индукции для левосторонних выводов ’S 'май и Q0 => bw ру-ли
□/ А
же 3 ~ а.З' ♦ где а Е то, очевидно, а = b и Р . Если
ш — то — $ и в силу леммы 13.1.19 3' — S > но этот случай уже
рассмотрен в базисе индукции. Пусть Тогда w = b’w’ для
некоторых b! Е и 'w' Обозначим и ’ = ub. Применяя
предположение индукции для левосторонних выводов 3 и
, получаем (b1 ,wr, 3'} - Согласно построению
МП-автомата М имеем
161
Пентус А.Е., Пентус М.Р
(&, 6W, Ь$) Н (е. b'-w', ,3’) h (br, wf, /3*).
Шаг индукции доказан. Теперь легко проверить, что выполняется
i(G$) С £г(А-7)-Гомоморфизм г: А* -= задается
соотношениями
r({{b.E,A}.{b,a))) = (Л -> j5L
г(<)) - £ для остальных & G А.
Пример 13.1.29. Рассмотрим контекстно-свободную грамматику из
примера 13.1.3. Грамматика с маркером конца строки имеет правила
1
S^c,
S ->dS,
S -s- aSeSb.
Соответствующий нисходящий магазинный анализатор М, построенный
в теореме 13.1.28, имеет приведенный ниже вид.
162
G — (iV, 53, P, S) принадлежит классу LL(1), если для любых двух
правил (Д —>а) Е Р» и (Л —* /?) Е Р$, где а ,3, множества
DIRECTOR^ (4—> се) и DIRECTOR^ (А—*/3) не
пересекаются.
Замечание 13.1.31. Первая буква L в названии класса LL (1) означает,
что входное слово читается слева направо (left-to-iight). Вторая буква L
означает, что строится левосторонний вывод (leftmost derivation). Число 1
указывает на то, что на каждом шаге для принятия решения
используется один символ неразобранной части входного слова.
Пример 13.1.32. Грамматика из примера 13.1.3 принадлежит классу
LL (1), а грамматика из примера 3.1.17 этому классу не принадлежит.
Теорема 13.1.33. МП-автомат М, построенный в теореме 13.1.28 по
контекстно-свободной грамматике G, является детерминированным
тогда и только тогда, когда грамматика G принадлежит классу LL(1).
Теорема 13.1.34. Грамматики из класса LL(1) порождают только
детерминированные контекстно-свободные языки.
Теорема 13.1.35. Пусть контекстно-свободная грамматика
Ст — <ЛГ, 53, Р, jS) не содержит бесполезных символов. Система
множеств FIRST(iJJ (где о? Е (Лг US)* ) состоит из наименьших (
по включению ) множеств, удовлетворяющих следующим условиям:
1. если => с, то b Е FIRS'L^fr?/’) Для Есех Е 53 и
i^E (ATUE)* ;
2. если ff) => Е , то FIRST(A) С FIRST (rt>A?£) для всех A^N
ф Е (jV U 53)’ ;
3. если (Д -+ ct) Е Р.то FIRST(b) С FIRSTS).
Теорема 13.1.36. Пусть контекстно-свободная грамматика
G — {Л1 2 3. 53. Р. 5) не содержит бесполезных символов. Система
163
множеств FOLLOW(Д’) ( где Д £ JV ) состоит из наименьших ( по
включению ) множеств, удовлетворяющих следующим условиям:
1. если В € А и (А —» € Р, то
FIRST(p) С FOLLOW(B) ;
2. если В € jV, (А —* *?B?i’) е Ри At ,то
FOLLOW(A) G FOLLOW(В).
Замечание 13.1.37. Теоремы 13.1.35 и 13.1.36 дают алгоритм проверки
принадлежности контекстно-свободной грамматики G классу LL (1).
Можно предположить, что грамматика G не содержит бесполезных
символов (их можно устранить).
Сначала необходимо вычислить значения FIRSTg^ (»j) параллельно
для всех слов и.?, являющихся суффиксами правых частей правил
грамматики G«f. Для этого постепенно пополняем множества
FIRSTS^ (uj) (начав с пустых множеств), используя условия,
приведенные в теореме 13.1.35.
Затем необходимо вычислить значения FOLLOWg#(A) параллельно
для всех вспомогательных символов А. Для этого постепенно
пополняем множества FOLLOW(А) (начав с пустых множеств),
используя условия, приведенные в теореме 13.1.35.
В заключение вычислим значения DIRECTOR/?* (А —* £>) для всех
правил Д —>q, следуя определению функции DIRFC'L'OR» и
проверим условия из определения 13.1.30.
Теорема 13.1.38. Пусть даны контекстно-свободная грамматика
G — {N, 53, P,S} и символ Д <= jy. Пусть
Р— Ро и{Л —> Лсц,....Л ‘Ла„,Л > ,91,..../I
где множество Ро не содержит правил с левой частью А и ни одно из
164
слов ,..., 3m не начинается с символа А. Тогда грамматика G
эквивалентна контекстно-свободной грамматике
G1 — (Дг U {xV}. X, Р', S} , где А* - новый символ, не
принадлежащий множеству Д ' LI и
Р’ = Pt, U [-4 ->&А'...............4 >i3,,.A'. A' -s^'ai.........Ai -» A'q„, .4'
Пример 13.1.39. Если к контекстно-свободной грамматике из
примера 13.1.17 два раза применитьпреобразование из теоремы 13.1.38
(для вспомогательного символа А и для вспомогательного символа В ),
то получим эквивалентную грамматику G ’ с правилами
В + CD.
А—^ BE. D -» *CD, С —i ??i.
Е -> +ВЕ, D ->/CD, С-» п.
£ -> — BE, D->e,
Е —> Е,
После упрощения получаем грамматику G * ’ с правилами
5 ->Л«, D -> *CD. С (CDE).
Л CDE, D /CD, С —» т.
Е -> +CDE, £?-*£, С п.
Е -> -CDE,
Е -+£,
Язык L (G ’ ’) распознается детерминированным МП-автоматом
.w-(Q.E.Г.Д.I.F), W Г= {C.A’.D.).*},
Г - {<?►} • f = {£} и
165
A {«ft.,£,£),(£,CDb’«»,
Йе.*.£>),{е.С\ОД,
«£,/,D>.{£,CD)),
«Е. +.!>£), (e, ODb,),
(iE.-.DM.iE.CDf)),
«e,),DK)|,(e,E)>,
((e,*,CAS),(e,e)),
((E.m. C), (e.e)),
(Kh.C),(£,e)J,
((еД.С),(£,С£Ж)))}.
Можно доказать, что МП-автомат М является нисходящим магазинным
анализатором для грамматики
Л -> CDE, D -> *СО, C^{CDE)
Е 4-СОЛ’, D -> /СО, С —» 7П.
Е -> —CDE, О »£, С —> п.
Е->€,
Пример 13.1.40. Пусть £ — —, *} и Аг — {Л, В, С} .
Рассмотрим контекстно-свободную грамматику G с правилами
Л CDE. D *CD,
Е -CDE, D^e,
Е е, С пъ,
С" —* п.
Грамматика с маркером конца строки имеет правила
166
л$,
*CD,
CDE.
E > -CDE.
E
Соответствующий нисходящий магазинный анализатор М, построенный
в теореме 13.1.28, имеет приведенный ниже вид.
Легко убедиться, что грамматика G принадлежит классу LL (1) и МП-
автомат И является детерминированным.Упражнение 13.1.41
Существует ли детерминированный нисходящий магазинный
анализатор для грамматики
S -> bScS,
S^bS,
S^ai
Упражнение 13.1.42. Принадлежит ли грамматика
167
Пентус А.Е., Пентус М.Р Математическая теория формальных языков
S —» а,
S->bS,
S-tcSS
классу LL (1) ?Упражнение 13.1.43. Принадлежит ли грамматика
S —> я,
S->Sb,
S-» SSc
классу LL (1) ?
13.2. Восходящий разбор
Определение 13.2.1. Протоколом правостороннего вывода в
контекстно-свободной грамматике С? = (Лг. Е. Р. S} будем называть
обращенную последовательность правил, примененных в этом выводе
Формально говоря, протоколом правостороннего вывода
является последовательность
(41. -т о„),
где для каждого i<n, если о.’3. — T]Bv и u.’3.+i — для некоторых
у € (Лг и Е)*> В € N, v е Е*, (3 е (Лг и Е)*, то ап_г = е и
Qn_j = 1 .Пример 13.2.2. Рассмотрим контекстно-свободную
грамматику
5-^ г
S-kIS
S —>• aSeSb
и дерево вывода
168
Пентус А. Е., Пентус М.Р
из примера 13.1.3. Этому дереву вывода соответствует правосторонний
вывод
S => aSeSb => aSedSb => aSedcb => acedcb.
Протоколом этого вывода является последовательность
(.S- с). (.4 >с), (S->rfJ|, tS -nScSb',.
Лемма 13.2.3. Разным правосторонним выводам в одной и той же
контекстно-свободной грамматике соответствуют разные протоколы.
Протокол правостороннего вывода в контекстно-свободной грамматике
является естественным описанием соответствующего дерева вывода в
порадке постфиксного обхода (posiorder traversal). (Постфиксный обход
упорядоченного дерева можно определить рекурсивно так: сначала
выполняется постфиксный обход первого непосредственного потомка
корня, затем второго и т. д., а в самом конце посещается корень дерева.)
Например, протокол правостороннего вывода из примера 13.2.2 задает
процесс постепенного конструирования дерева вывода, изображенный
ниже.
169
Пентус А. Е., Пентус М.Р
Определение 13.2.5. Правым разбором (right parse) слова w в контекстно-
свободной грамматике G называется протокол любого правостороннего
вывода слова w в грамматике (
Пример 13.2.6. Правым разбором слова aceaacecbecbb в
грамматике из примера 13.2.2 является последовательность
(S с)т -» с), -» с), (S -> aSeSfe).
(S->c), aSeSb). (S -t aSeSb).
Определение 13.2.7. Процесс нахождения правого разбора слова w
в~заданной контекстно-свободной грамматике G называется
восходящим разбором (bottom-up parsing).
Определение 13.2.8. Пусть даны контекстно-свободная грамматика
170
G = {N, E, P, 5) и МП-автомат AJ = (Q, E, Г, Л. I, F} - Будем
говорить, что МП-автомат М - восходящий магазинный анализатор
(bottom-up, left-to-right parser) для грамматики G, если Z.(Af) _ L(Gtj)
и существует такой гомоморфизм Г: Д' —> Р^ , что для каждого
вычислительного процесса (МП-автомата М ), допускающего слово
W Е образ протокола этого вычислительного процесса при
гомоморфизме г является протоколом некоторого правостороннего
вывода слова w в грамматике G«j.
Пример 13.2.9. Рассмотрим контекстно-свободную грамматику G'<j из
примера 13.1.17. Язык i^G$) распознается недетерминированным
МП-автоматом Л/ = ({1,2},Е,Г, А, {1}, {2}) . где
г_{д в.с,
и
Д {((1,+,Е),(1,+)), ((1,-,е),(1,-)),
(--О).
«1,Е.С*В),(1,В», <(1,£,С).(1.В}),
«1,),Л(>,(1.С7». «1,п.£),(1,С)),
((1,М),(2,£))}.
Можно проверить, что МП-автомат М является восходящим магазинным
анализатором для грамматики G из примера 13.1.17.0пределение
13.2.10. Контекстно-свободная грамматика G = (Лг, Е, Р, S)
принадлежит классу LR(1), если для любых гд Е (Л$ U Е$)*,
^2 € (Лг$ U Е^)*, j4j G Ад и Ла £ Лг$ U Eg, b £
Vi Е из Е 52$, оа Е (7V$ U Е$)*> о?а Е (Arg U Sj)1* из
условий
171
Ss Л ijiAibfi,
Ss -i
A -> Q1) e C;,
(A2 —* 0-?j G F$,
Oi'i = ’/2'-2
следует, что Aj = А2и Qi — Cl2.
Замечание 13.2.11. Классу LR (1) принадлежат те языки, для которых
возможен восходящий разбор слова при чтении слева направо с
заглядыванием на один символ вперед.
Замечание L3.2.12. Буква L в названии класса LR(1) означает, что
входное слово читается слева направо (left-to-right). Буква R означает, что
строится правосторонний вывод (rightmost derivation). Число 1 указывает
на то, что на каждом шаге для принятия решения используется один
символ неразобранной части входного слова.
Теорема 13.2.13. Для каждой грамматики из класса LR(1) существует
детерминированный восходящий магазинный анализатор.
Доказательство можно найти в [2, с. 420-447].
Теорема 13.2.14. Грамматики из класса LR(1) порождают только
детерминированные контекстно-свободные языки.
Теорема 13.2.15. Каждая грамматика из класса LL(1) принадлежит
также классу LR (1).
Упражнение 13.2.16. Найти все правые разборы слова ЬЬасЬа в
грамматике
S > bScS,
S->bS,
S —> а.
172
Упражнение 13.2.17. Найти детерминированный восходящий
магазинный анализатор для грамматики
S -+ а,
S->Sbt
S -> SSc.
Упражнение 13.2.18. Найти детерминированный восходящий
магазинный анализатор для грамматики
S —>
S->bS,
S —>
173
Алгоритмические проблемы
В данной лекции рассматриваются понятия вычислимости,
разрешимости, перечислимости и универсальных моделей вычислений.
Рассмотрены алгоритмические проблемы, связанные с контекстно-
свободными грамматиками, вводятся термины "массовая задача",
"индивидуальная задача", "схема кодирования", "задача распознавания",
"алгоритмическая проблема". Приведены практические примеры и
задачи для самостоятельной проработки
Основная цель этой лекции - дать определения понятий, необходимых
для математически строгой формулировки результатов следующих двух
лекций. Для более подробного ознакомления с вычислимостью,
разрешимостью, перечислимостью и универсальными моделями
вычислений следует обратиться к какому-либо вводному курсу по
теории алгоритмов, например [30, с. 93-106, 109-121] или [5,с. 8-20,
112-123]. В разделе 14.1 фиксируется конкретная модель вычислений -
машина Тьюринга и даются определения (недетерминированной)
машины Тьюринга, детерминированной машины Тьюринга и
вычислимой функции. В разделе 14.2 определяются разрешимые и
перечислимые множества. В разделе 14.3 вводятся термины "массовая
задача", "индивидуальная задача", "схема кодирования", "задача
распознавания", "алгоритмическая проблема". В 14.4* формулируется
теорема о соответствии машин Тьюринга грамматикам типа 0, а также
теорема о нормальной форме для грамматик типа 0. В разделе 14.5
формулируется известная неразрешимая проблема - проблема
соответствий Поста. На сведЕнии именно к этой алгоритмической
проблеме основываются все доказательства неразрешимости в лекции
16, где рассматриваются алгоритмические проблемы, связанные с
контекстно-свободными грамматиками.
14.1. Машины Тьюринга
Определение 14.1.1. Машиной Тьюринга называется семерка
Л/ = (<2,Е,Г,гь,ДД,Г,
174
где Q, Г и А - конечные множества, X С Г, Ьл € Г — S, I С Q,
Ь CQ и
Л с ((У- (’) хГ) ... (Q < 1 X {-1,0,1}).
Здесь Q - множество состояний £ _ входной алфавит ( внешний алфавит
), Р - ленточный алфавит (tape alphabet), Ьо - бланк ( пробел, пустой
символ, blank symbol), А - множество переходов, I - множество
начальных состояний, F - множество заключительных состояний.
Определение 14.1.2. Конфигурацией машины Тьюринга называется
любая четверка (a;. q, д, у} , где ж £ р*, q Е Q, 0 £ Г» У € Г*.
Определение 14.1.3. Определим на множестве всех конфигураций
машины Тьюринга М бинарное отношение ( такт работы )
следующим образом.
Если ((р, д),{qtc,O}} € Л. то
Н (з\ д, с, у}
для всех ат £ Г* и у € Г* .Если ({р. ц}, 1)) G Л.то
(я*,р, о., dy} F {хс, q, d, у) и {х,р, а, е} h (же, д, е)
для всех ат £ Г*, у 6 Г* и d G Г-Если ((р,д), с, -1)} € Л, то
а, у) h (ат, q. d, су} и (е .р. а,у} F (е, 6о, су}
для всех ат £ Г*, у € Г* и d Е Г-
Замечание 14.1.4. Если из контекста ясно, о какой машине Тьюринга
идет речь, вместо , буцем писать просто |- .
Определение 14.1.5. Как и для МП-автомата, для машины Тьюринга
175
бинарное отношение определяется как рефлексивное, транзитивное
замыкание отношения |-.
Замечание 14.1.6. Если F (хз, 921^2. У?} - то для
любых fc £ N и I <= 3J найдутся такие ??г £ Is} и ЭТ € И • что
(Ьс^1,51.П1,иЬи) (6pi3.52.C2,!>2bS) •
Замечание 14.1.7. Конфигурацию Ь^'а', у, иногда изображают
сокращенно q .
Замечание 14.1.8. Машины Тьюринга можно изображать в виде
диаграмм. При этом каждое состояние обозначается кружком, а переход
- стрелкой. Каждое начальное состояние распознается по ведущей в
него короткой стрелке. Каждое заключительное состояние отмечается на
диаграмме двойным кружком. Стрелка с пометкой а : с к, ведущая из р в
q, показывает, что ({р, a.J, (g, с, Jc}} является переходом данной
машины Тьюринга. Обычно на диаграммах вместо чисел -1, 0, 1
(обозначающих движение влево, стояние на месте, движение вправо)
используются буквы L, N, Г. соответственно.
Пример 14.1.9. Рассмотрим машину Тьюринга
м- (Q, Е, Г. 8ь,Д
где Q-{0.1.2.3}, Е-{п). Г-{и.1}, t>,, — й, 7={0},
t -{3},
Д = {((О,6), (1,6,1», «1, „J, (2. Ь. 1)), ((2. а). {1.6.1)), «1.6), (3. Ь, 0))}.
Можно проверить, что для любого Jfc £ JY выполняется следующее:
176
Ъа^+1 Н аак,
о 1
I* Ас
аа г аа ,
nn2t+1 Р ь.
1 3
Определение 14.1.10. Машина Тьюринга
(<?,Е.Г.60,Д.рЛ
называется детерминированной, если множество I содержит ровно
один элемент и для каждой пары [р* д) g (Q - .< Г существует не
более одной тройки [qte, к) EQ дГ х {-1,0,1} со свойством
{{p,a'),{q,c,k)) е Д.
Пример 14.1.11 Машина Тьюринга из примера 14.1.9 является
детермини рованной.
Определение 14.1.12. Пусть f - частичная функция из S* в JJ*.
Детерминированная машина Тьюринга
.1/- (О.Е,Г,6и XI, 1‘)
вычисляет (computes) функцию f тогда и только тогда, когда для каждого
слова -щ £ S* О если f (w) не определено, то не существует таких
р 6 L q G F, а Е г. х Е Г*, У € г*, что
(е, р, Ьи, ш) Г (х, (7, а, у);
2) если f (w) =z, то для некоторых р £ I, q Е К, пг Е N и п Е N
выполнено условие
<е,рД,™)£(ь;г,5,ь0.3ед.
Определение 14.1.13. Частичная функция из в называется
вычислимой, если существует детерминированная машина Тьюринга,
вычисляющая эту функцию.
177
Пентус А.Е., Пентус М.Р
Пример 14.1.14. Машина Тьюринга из примера 14.1.9 вычисляет
следующую частичную функцию:
если число п четно,
/«и -
не определено, если число п нечетно.
Пример 14.1.15. Рассмотрим детерминированную машину Тьюринга
(<?,Г,Г,6с,Д.7.Г),
Q {1,2,3,4,5,6,7.8.0,10.11.12,13.14},
S = {al,
Г = {и, 6},
6о = 6,
' = {!}.
f ~ {}.
Д = {«1,6» (2.6,1»,
«2.6» (7.6.0)), «2.а). <3.а,-1»,
«3,6» (3, а, 1)» «3, а» (4.6,1»,
«4, 6» (5, Ъ, -1», ((4, а), (8, а, О»,
«5,6), (6.6,-1)),
«6,а» (6,а, — 1», «6,6), (7,6,0»,
«8,6), (8,6,1)), «8, а), <0, а,1»,
«9, а), <9, а, 1», «9,6), (10.6,-1»,
«10,о), (11,6,—!)),
((11,6). (11.6.0)), ((И, а), (12.6.- 1)),
{(12, о), (12, а, -1», «12,6), (13,6, -1»,
«13,6),{13,6,-1», ((13, а),(14,6, -1»,
«14, а),(8, а, 1)), «14.6),(3, 6,1»}.
178
Пентус А.Е., Пентус М.Р
Можно проверить, что для любых г £ ГЯ, j Е ?? и Jt £ N
выполняется следующее:
tat+2 f abaak,
1 8
Д<ш2 A w+2,
Б 7
аЬ^+1с1аь+® £ а,+2Ьаа\
в в
ai+2!^+W+2 £ oi+1^+2aafc,
в в
а^+1ааЛ+^+й Ё ab’+2aak.
в в
Следовательно,
6ai+(J+2)=ft[lbi+11Ici;+2
1 в
ba(fc+z>2 F Ьак+2.
1 7
Рассматриваемая машина Тьюринга вычисляет следующую частичную
функцию:
179
=
аУ", если y/n E N,
не определено, если y/n £ N.
Замечание 14.1.16. Тезисом Черча-Тьюринга (а иногда просто тезисом
Черча ) называется следующее неформальное утверждение: для каждой
вычислимой в интуитивном смысле частичной функции из S* в S*
существует машина Тьюринга, которая эту функцию вычисляет.
Упражнение 14.1.17. Найти детерминированную машину Тьюринга с
входным алфавитом [ а}, вычисляющую функцию f, заданную
соотношением
f(a") = an+1.
Упражнение 14.1.18. Найти детерминированную машину Тьюринга с
входным алфавитом (а}, вычисляющую функцию f, заданную
соотношением
/(о") = е.
Определение 14.1.19. Зафиксируем два различных символа а и b и
положим S — {а, 6} • Пусть к - положительное целое число и f -
частичная функция из в pf. Детерминированная машина Тьюринга
вычисляет функцию f тогда и только тогда, когда для любых
натуральных чисел ^1,... 7 гад выполняются следующие условия:!)
если /(raj,..., Пд) не определено, то не существует таких р£ I,
q € а. € Г, ж 6 Г*, У Е Г*, что
(е, р, 6, а"16а"2h... ЬаЛк) £ (ж, q, а, у}:
2) если 5..., пд) — I. ТО для некоторых р £ Г, q Е F, тга G N
и га (Е PI выполнено условие
{Е,р.^а"'Ъа^Ь...ЬаП1'; Р (6т. в. Ьи, (Л'1).
1В0
Упражнение 14.1.20. Рассмотрим
Тьюринга, изображенную на рисунке.
детерминированную машину
а:Ыл
Какую функцию из pj в р] она вычисляет?Упражнение 14.1.21.
Рассмотрим детерминированную машину Тьюринга, изображенную на
рисунке.
181
Какую функцию из К х N в J( она вычисляет?
14.2. Разрешимые и перечислимые множества
Определение 14.2.1. ГЪворят. что детерминированная машина Тьюринга
182
с выделенным состоянием алразрешает (decides) язык £, С 5J*, если
1) для каждого слова w Е L найдутся такие m Е N и ?? Е FI» что
£ <6™,g„,60,6JJ ;
2) для каждого слова w Е 5J* — L найдутся такие ??? Е N и п Е N,
что (f,Qb?b01w) 1^ {Ь^*,дг,6|гкЬ^) - Состояние qa называется
допускающим ( принимающим, accept state), состояние qr называется
отвергающим ( непринимающим, (reject state).
Пример 14.2.2. Рассмотрим детерминированную машину Тьюринга
A/ = (Q,E.r.8h.A,{<fc}.{e..b}),
где Q-{0,1,2,3,4,5}, Е-{а}, Г-{а,6}. Ьи = Ь. = О,
— 4, qT — 5 и
Д = {<(0,6), <1.6.1)),
«1, о), <2,6,1}}, «2, о), (3,6,1», «3, а), <1,6,1)),
((1,6), (4,6,0)), «2,6), <5,6,0)), «3,6), (5,6,0))}.
<х:ЬП
Эта машина Тьюринга разрешает язык {aJn | n Е N] -Определение
14.2.3. Язык L над алфавитом Л называется разрешимым или
рекурсивным (decidable, recursive), если существует детерминированная
машина Тьюринга
(Q, Е, Г, 60, А, {д,}. {?„, ?,})
183
(с выделенным состоянием qa ), которая разрешает язык Ь.Определение
14.2.4. Говорят, что машина Тьюринга
М - (Q, Е, Г, Ьо, A, {ft,}, {ft,})
допускает ( принимает, accepts) слово щ , если для некоторых
тек И п е Н (e.Q„6ii,u.') F (tg‘, ft„bo,bj) •
Определение 14.2.5. Язык, допускаемый машиной Тьюринга М, - это
язык, состоящий из всех допускаемых данной машиной Тьюринга слов.
Определение 14.2.6. Язык называется перечислимым ( рекурсивно
перечислимым. полуразрешимым, recursively enumerable), если
существует детерминированная машина Тьюринга, допускающая этот
язык.
Замечание 14.2.7. В определении 14.2.6 можно отбросить требование
детерминированности машины Тьюринга.
Теорема 14.2.8. Каждый разрешимый язык является перечислимым.
Доказательство. Пусть дана машина Тьюринга
.4 (Q, Е, Г, Ь,. Л. {ft.}, {ft,, ft,}'
с выделенным состоянием qa, которая разрешает язык L С Е*. Тогда
машина Тьюринга
лг' = (ч,й.г,ь0,л.{®.},{9„})
допускает язык L.
Пример 14.2.9. Если в машине Тьюринга из примера 14.1.15 заменить
переход {{6. а), {6, а. 1)) на {{6. а}, (6, Ь, — 1)), то получится
машина Тьюринга, допускающая язык | л 6 - Следовательно,
этот язык является перечислимым. Можно доказать, что он даже
является разрешимым.
184
Теорема 14.2.10. Существует такая машина Тьюринга над
однобуквенным алфавитом £ — {а}, что язык, допускаемый этой
машиной Тьюринга, неразрешим.
Доказательство. Доказательство существования перечислимого
неразрешимого множества можно найти, например, в [31, 9.21.
Упражнение 14.2.11. Найти детерминированную машину Тьюринга с
входным алфавитом [ а}, разрешающую язык | л 2} •
Упражнение 14.2.12. Найти детерминированную машину Тьюринга с
входным алфавитом | а}. допускающую язык {aa’l+2 | ?7, llf-
14.3. Массовые задачи
Определение 14.3.1. Массовой задачей (problem) называется
бесконечная серия "однотипных" индивидуальных задач (instance),
каждая из которых имеет определенный ответ. С каждой массовой
задачей связана некоторая фиксированная схема кодирования (encoding
scheme), которая отображает индивидуальные задачи в их коды - слова в
некотором фиксированном алфавите. При этом требуется, чтобы
множество кодов всех индивидуальных задач было разрешимым.
Определение 14.3.2. Задачей распознавания (decision problem)
называется массовая задача, в которой ответами индивидуальных задач
могут быть только "да" и "нет" (то есть существует только два возможных
ответа).
Пример 14.3.3. Зафиксируем некоторый алфавит £. Рассмотрим
следующие однотипные индивидуальные задачи: даны два слова
:i- £* и у Е £*, необходимо выяснить, является ли слово х
подсловом слова у.
Пусть # - новый символ, не принадлежащий алфавиту £. Кодом
индивидуальной задачи про конкретные слова х и у будем считать
слово х # у в алфавите £ U -
185
Эта массовая задача является задачей распознавания.
Определение 14.3.4. Алгоритмическая проблема - проблема, в которой
требуется найти алгоритм для решения массовой задачи. Если такой
алгоритм существует, то данная проблема называется алгоритмически
разрешимой или просто разрешимой (decidable, solvable), в противном
случае ее называют алгоритмически неразрешимой (undecidable,
unsolvable).
Замечание 14.3.5. Алгоритмическая проблема, относящаяся к некоторой
задаче распознавания, алгоритмически разрешима тогда и только тогда,
когда разрешимо множество кодов индивидуальных задач с ответом
"да".
Пример 14.3.6. Рассмотрим массовую задачу из примера 14.3.3.
Соответствующая алгоритмическая проблема разрешима, так как
разрешим язык | х Е Е*. «ЕЕ*. vE£*}-
Пример 14.3.7. Зафиксируем некоторый алфавит J2- Рассмотрим
следующие однотипные индивидуальные задачи: дана порождающая
грамматика
C.'-.'IA.......A„},E,P.Ai),
необходимо выяснить, является ли эта грамматика праволинейной .Для
полной строгости необходимо договориться, как кодировать грамматику
G в виде слова. Например, можно использовать алфавит
Е U {ф, 4,0,1}, где ф. 0, 1 - дополнительные символы, не
принадлежащие множеству Вспомогательный символ А± заменим
на слово, состоящее из символа и кода числа i в двоичной системе
счисления. В каждом правиле о —> /3 добавим символ ф на месте —>
и после слова /3. Кодом грамматики G будем считать результат
конкатенации кодов всех правил из множества Р. Например, грамматика
186
Пентус А. Е., Пентус М.Р
Ai —» а.
Ai -> A2Ai.
Аз —* аАз,
Аз - > е.
Аз
(над алфавитом £ — fa, 6} ) кодируется словом
Ф14цф^1^10^1«?1ифаФ1 1ф'С_
Легко понять, что соответствующая алгоритмическая проблема
(проблема проверки праволинейности) разрешима.
Упражнение 14.3.8. Разрешима ли алгоритмическая проблема
распознавания четности длины слова над алфавитом {а, Ь} ?
14.4* . Грамматики типа О
Теорема 14.4.1. Класс языков, порождаемых грамматиками типа О,
совпадает с классом перечислимых языков.
Доказательство можно найти, например, в [СерГал с. 24-26].
Упражнение 14.4.2. Выводимо ли слово aab в грамматике
8 >Sbt
8->ST,
s -> su,
8->£,
/га —? aai
Tb—ь ab,
Uaaa —> aaU,
Uab -> b?
Упражнение 14.4.3. Выводимо ли слово ааааааааЬ в грамматике
187
Пентус А. Е., Пентус
S->Sb,
S-tS'r,
s->su,
S^£,
Та —> ааГ,
Tb->ab,
Uaaa —> сшС/,
Uab-tb?
Замечание 14,4.4. Неизвестно, порождает ли грамматика
/? —> jRa,
E^S,
S-> Sb,
s + sr,
s^su,
l'a-> aa 1.
l b -> ab,
Uaaa —* aaU,
Uab —> b
все слова в алфавите {a, b} .Упражнение 14.4.5. Пусть
Е — {а, Ъ, с, d, е} • Рассмотрим грамматику
/£ —* ccdcdcddccddcdceca, се —* еса,
ас —* са, еса —* се,
са —» ас, de —> edb.
be —* cb, edb —r de,
cb —J 6c, cca ccae,
ad > da, ccae —> cm.
da —* ad,
bd -> db,
db bd.
Выводимо ли в ней слово сс<Ясйс6йссййсс1сссаЬЬа?Упражнение
14.4.6. Является ли разрешимым язык, порождаемый грамматикой
188
Пентус А.Е., Пентус М.Р Математическая теория формол
ScS, ас —* са. cdc —* cdcR,
SdS, са —> ас. Rcca —> ccJ?,
S аа, &с —* сЬ, Rddb -»ddR.
cb —* Ьс, Redd -> cddl,
ad —* da, I'cc —t ccaT.
da —»ad, Tdd -> ddbl,
bd db, Tcdc —> cdc7
db^bd.
Определение 14.4.7. Порождающая грамматика в нормальной форме -
это порождающая грамматика, в которой каждое правило имеет вид
А —+ а. А —> ВС или АВ -> t. где 4 <= IV, В Е sV • < Е N.
а € S-
Теорема 14.4.8. Каждая порождающая грамматика эквивалентна
некоторой порождающей грамматике в нормальной форме.
Упражнение 14.4.9. Существует ли такая порождающая грамматика G,
что язык L(G) {с} не порождается ни одной грамматикой типа О?
14.5. Проблема соответствий Поста
Определение 14.5.1. Пестовской системой соответствия над алфавитом
У’ называется упорядоченная пара конечных последовательностей
((ц... .,!„), (gll, .. где Xj е >:* и л, е Г* для всех!.
Замечание 14.5.2. Систему ( ,..., , (эд.,..., уп ) ) иногда
изображают в виде
Г^1
Lj/lJ....Lg/J'
Определение 14.5.3. Решением (match) постовской системы
соответствия ( (>:lf . . - , хп) , (ух, - . ., уГ1) ) называется непустая
189
последовательность индексов (i].,.. ., ?&), удовлетворяющая условию
a:n...a'JA №а .. .ytk,
где 1 Zj С п для каждого j .Пример 14.5.4. Пусть £ = {а, Ь, с} -
Рассмотрим пестовскую систему соответствия
’flttbl Г a "I Гсаа]
. а J LaaJ L be J
Последовательность (2,1,3,2,2) является решением этой системы,
так как
а • aab • саа а • а = аа • a-be • а.а • аа.
Упражнение 14.5.5. Пусть £__6, с, 0,1, ф,^?, ф) - Существует ли
решение у постовской системы соответствия
»Ф 1 Ml Гос-1 [аф Г ^Ф 1 Г «Ф 1
L :фа6а<? 1(3 cctAaJ ’ L 6а г LeaJ ф a J ’ L ba фс фоба I ’
Г a? lain Г а?1ас 1 Габа^'ЮабЛ Гаса^ЮабП ГаРЮас! Га? Нас!
I фа rLra?10arL?10afeacaJ’L?10acacal Lca?llaJ’L ea?la -I’
Гафай! Гафае| "а6а<>1 Гаса>1 ГафоФ«Ф1?
I фа 1 ’ L фй J ' _ фа _ ’ L фа J _ ф
Определение 14.5.6. Проблемой соответствий Поста (Post
correspondence problem) называется проблема нахождения алгоритма,
выясняющего для каждой постовской системы соответствия, существует
ли решение этой системы.
Теорема 14.5.7. Пусть |£| >> 2- Тогда не существует алгоритма,
позволяющего по произвольной постовской системе соответствия над
алфавитом £ узнать, имеет ли она решение. ( Другими словами,
проблема соответствий Поста неразрешима.)
Доказательство можно найти в [ХопМот, 9.4].
Упражнение 14.5.8. Существует ли решение у постовской системы
190
Г ab I Г61 ГаЬа] Faal
соответствия [^J ' Ш“Г1 ’ L J ?
Упражнение 14.5.9. Существует ли решение у пестовской системы
Г b п Г a 1 real rafecl
соответствия j —ГI » ?
lcqj LabJ L a j l с .
Упражнение 14.5.10. Существует ли решение у пестовской системы
соответствия [^] , [-] , [—] . [^] ?
Упражнение 14.5.11. Существует ли решение у пестовской системы
Г ab 1 гЬ“] rabai rbbabl
соответствия —— » I—> » ГТ" ?
Lfioa.i LaJ LoJ l abb J
Упражнение 14.5.12. Существует ли решение у пестовской системы
соответствия [у] , L] . [^]’ Ы’ Ш?
Упражнение 14.5.13. Существует ли решение у пестовской системы
Fabl b I 'bal rabal
соответствия у], уу|. у], Щ ?
Упражнение 14.5.14. Существует ли решение у пестовской системы
соответствия
г a 1 Г £ I Г aaaaal
Ltiaaj’ LaaaaoJ" L aa J
Упражнение 14.5.15. Существует ли постовская система соответствия,
имеющая ровно одно решение?
191
Алгоритмически разрешимые проблемы
В данной лекции рассматриваются наиболее известные разрешимые
проблемы, связанные с грамматиками, автоматами и регулярными
выражениями. Сформулированы также теоремы о разрешимости для
некоторых алгоритмических проблем. Приведены практические
примеры и упражнения для самостоятельного решения
В этой лекции рассматриваются наиболее известные разрешимые
проблемы, связанные с грамматиками, автоматами и регулярными
выражениями. Поскольку все приведенные выше доказательства
эквивалентности разных способов конечного задания формального
языка были конструктивными, не важно, какой из эквивалентных
способов задания языка (например, посредством контекстно-свободной
грамматики или автомата с магазинной памятью) используется в
точной формулировке массовой задачи.
Первые два раздела этой лекции посвящены контекстным языкам. В
разделах 15.3-15.6 сформулированы теоремы о разрешимости для
некоторых алгоритмических проблем. Доказательства этих теорем
опираются на конструктивность рассуждений, проведенных в лекциях 3
и 8. В разделе 15.7* приводится новый неожиданный результат,
доказанный в 1997 году.
Проблема эквивалентности конечных автоматов (или, что то же самое,
регулярных выражений) разрешима, но, к сожалению, она сложна, то
есть нахождение ответа индивидуальной задачи требует (в некотором
смысле) много времени. В разделе 15.9* указывается, что даже для
регулярных выражений без итерации (которые, очевидно,
соответствуют конечным автоматам без циклов) проблема
неэквивалентности NP -полна (необходимые определения из теории
сложности вычислений приведены в разделе 15.8*).
15.1. Неукорачивающие грамматики
Определение 15.1.1. Порождающая грамматика ^Дц 5Д S')
называется неукорачивающей (noncontracting), если для каждого правила
192
(q —> tl) £ P выполняется неравенство |r>| |J| .
Теорема 15.1.2. Существует алгоритм, позволяющий по произвольной
неукорачивающей грамматике G и по слову w узнать, верно ли, что
wGLJGi.
Теорема 15.1.3. Каждая контекстная грамматика является
неукорачивающей. Каждая неукорачивающая грамматика эквивалентна
некоторой контекстной грамматике.
Пример 15.1.4. Грамматика
S-^ AST А,
S -> Ab А.
А —> а,
Ь'Т -»ьь,
АТ -> 1А
эквивалентна контекстной грамматике из примера 1.5.4.
Упражнение 15.1.5. Найти неукорачивающую грамматику,
порождающую язык {я.> е {a,b,c}+ | |и.’|а = |щ’|ь = |и’|с} .
Упражнение 15.1.6. Найти неукорачивающую грамматику,
порождающую язык е [a, b, с}* | |w|Q < |iu|b < Ы0 -
Упражнение 15.1.7. Найти неукорачивающую грамматику,
порождающую язык [cn£fcntfc" | п 0}
Упражнение 15.1.7. Найти неукорачивающую грамматику,
порождающую язык {ггчзи’
15.2* . Линейно ограниченные автоматы
Определение 15.2.1. Машина Тьюринга
193
Пентус А.Е., Пентус М.Р Математическая теория формальных языков
(<?,Е,Г,6и,Д.Г,Л)
называется линейно ограниченным автоматом (Jinear bounded
automaton), если не существует таких g , х £ Г*» У G Q > а € Г
и у 6 Г*.что £ {х,у,ауу} и |хау I > |bowbol.
Теорема 15.2.2. Язык L, не содержащий пустого слова, порождается
некоторой неукорачивающей грамматикой тогда и только тогда, когда
существует линейно ограниченный автомат ( в общем случае
недетерминированный ), допускающий язык L.
Замечание 15.2.3. Неизвестно, верен ли аналог теоремы 15.2.2 для
детерминированных линейно ограниченных автоматов.
Теорема 15.2.4. Класс языков, порождаемых неукорачивающими
грамматиками, то есть класс контекстных языков, замкнут относительно
операций объединения, пересечения и дополнения.
Замкнутость относительно операции дополнения доказали в 1987 году
(независимо друг от друга) Нил Иммерман (Neil Immerman) и Роберт
Селепчени (Robert Szelepcs) (см. [Imm, Sze]). Замкнутость относительно
операции объединения очевидна, а пересечение выражается через
объединение и дополнение.
Упражнение 15.2.5. Является ли контекстным язык
{и-е {a.ti.e.d}* | |м|„ / |ш|ь. |ш|с / |гЩ}7
Упражнение 15.2.6. Является ли контекстным язык
{о}* - {а"3 |п>0}?
15.3. Проблема выводимости слова
Теорема 15.3.1. Существует алгоритм, позволяющий по произвольной
контекстно-свободной грамматике G узнать, верно ли, что g £
194
Теорема 15.3.2. Существует алгоритм, позволяющий по произвольной
контекстно-свободной грамматике G и по слову и узнать, верно ли, что
МО-
Упражнение 15.3.3. Принадлежит ли слово aaaaabbbabb языку,
порождаемому грамматикой
F -г aFbbb,
—* ab Ьа,
F —> аЕа,
abb,
1 —ю?
Упражнение 15.3.4. Принадлежит ли слово abababa язык}'
порождаемому грамматикой
J —> fl-Cl,
J FbF,
1 -> а Л
F -» Jb,
F —> bFtz,
F ->С?
15.4. Проблема пустоты языка
Теорема 15.4.1. Существует алгоритм, позволяющий по произвольной
контекстно-свободной грамматике G узнать, верно ли, что = 0
Доказательство. Уцалим из G все бесполезные символы, кроме
начального символа (как в доказательстве теоремы 8.1.3). Если
полученная грамматика содержит хотя бы одно правило, то 7е 0
195
Пентус А.Е., Пентус М.Р Упражнение 15.4.2. Является грамматикой Математическая теория формальных языков ли непустым язык, порождаемый
S ааСМ, S —» aaaKF, к -> ы, К »а'1\
М -> аМЬ, Т^ЪКа,
А-f ЬМа, М Е, T-tab?
С аС'а,
С -> ЬСЬ,
15.5. Проблема бесконечности языка
Теорема 15.5.1. Существует алгоритм, позволяющий по произвольной
контекстно-свободной грамматике G узнать, является ли бесконечным
язык L (G).
Пример 15.5.2. Рассмотрим контекстно-свободную грамматикуС из
примера 8.1.4. Чтобы выяснить, является ли язык L (G) бесконечным,
удалим сначала все бесполезные символы. Затем устраним все = -
правила. Так как И’ и % - Z. Получится грамматика IV > то можно всюду заменить W на
S -г VZ, Z —г aab.
7* —f аа, Z
2’ -> bb,
V аТЬ,
V -ЬТа,
эквивалентная исходной грамматике G. Очевидно, что эта грамматика
не содержит ’^рекурсивных" нетерминальных символов. Следовательно,
язык L(G) является конечным.Упражнение 15.5.3. Является ли
бесконечным язык, порождаемый грамматикой
196
Пентус А.Е., Пентус М.Р Математическая теория формами
S aF, S ааСМ, С —»• аСа,
F —> J, S —* aaaKF. С ЬСЬ,
£ —> а, М a Mb, К Ы.
J F, М -> ЬМа, К аТ,
J >b, М -> Г -> ЬКа,
Т -► ab?
15.6. Проблема эквивалентности конечных автоматов
Теорема 15.6.1. Существует алгоритм, позволяющий по произвольным
двум праволинейным грамматикам Gj ii G2 узнать, верно ли, что
£(Gi) С L|G3).
Теорема 15.6.2. Существует алгоритм, позволяющий по произвольным
двум праволинейным грамматикам Gx и G2 узнать, верно ли. что
L(Gi) = L(G2).
Упражнение 15.6.3. Эквивалентны ли грамматика
S' —* aabS,
S —* aaba
и грамматика
S аТ,
U -> bal,
Т аЪ\
Т —* aba?
15.7* . Проблема эквивалентности детерминированных
МП-авто матов
197
Теорема 15.7.1. Существует алгоритм, позволяющий по произвольным
двум детерминированным МП-автоматам и М2 узнать, верно ли, что
L(MT) = L(M2).
Эту теорему доказал Жеро Сенизерг (Geraud Senizergues) в 1997 году.
Упрощенное доказательство приводится в [Sti].
Упражнение 15.7.2. Эквивалентны ли два изображенных ниже МП-
автомата над алфавитом b, ?
аа.Е:В
Упражнение 15.7.3. Эквивалентны ли два изображенных ниже МП-
автомата над алфавитом {а, Ь, i? [ ?
а.ЕзА Ь АА:£ оо-.езБ Ь Взе
15.8* . Классы Р и NP
Определение 15.8.1. Пусть машина Тьюринга М допускает язык L.
Говорят, что язык L распознается за полиномиальное время на машине
М, если существует такой многочлен р, что любое слово щ/ g
принимается машиной М не более чем за р ( | w | ) тактов.
Определение 15.8.2. Через Р обозначается класс тех языков, которые
распознаются за полиномиальное время на некоторой
детерминированной машине Тьюринга.
Определение 15.8.3. Через NP обозначается класс тех формальных
языков, которые распознаются за полиномиальное время на некоторой
198
(в общем случае недетерминированной) машине Тьюринга.
Замечание 15.8.4. Очевидно, что Р С NP- Неизвестно, совпадают ли
классы Р и NP.
Теорема 15.8.5. Все языки из класса NP являются разрешимыми.
Определение 15.8.6. Всюду определенная функция f из S* в S*.
называется вычислимой за полиномиальное время, если ее вычисляет
некоторая детерминированная машина Тьюринга М (если Si S2, то
данная функция f рассматривается как частичная функция из
[Si U S2в (S1 U S2)* ) и существует такой многочлен р, что для
любого слова ш 6 S* машина М вычисляет значение f (w) не более
чем за р ( | w | ) тактов.
Определение 15.8.7. Язык 7Д С S* полиномиально сводится (is
polynomial time reducible) к языку L-г С S*, если существует такая
вычислимая за полиномиальное время всюду определенная функция f
из S{ в S2, что для любого слова w € S* условие /(u?) Е L2
равносильно условию w Е Z<i-
Определение 15.8.8. Формальный язык L называется NP- сложным
(NP-hard}, если каждый язык из класса NP полиномиально сводится к
языку L.
Определение 15.8.9. Формальный язык называется NP- полным (NP-
complete), если он принадлежит классу NP и является NP -сложным.
Определение 15.8.10. Алгоритмическая проблема, относящаяся к
некоторой задаче распознавания, называется NP- полной, если
множество кодов индивидуальных задач с ответом "да" является NP-
полным языком.
Теорема 15.8.11 (теорема Кука-Левина). Проблема выполнимости
булевых формул в конъюнктивной нормальной форме N- полна.
Доказательство можно найти, например, в [Сэв, с. 325-328J или
199
[ГэрДжо, с. 57-63].
Упражнение 15.8.12. Существует ли такой язык С Е* из класса Р,
что язык Е* — L не принадлежит классу Р?
Упражнение 15.8.13. Существуют ли такие языки Lx и L2 из класса Р,
что язык Z. । U Lj, не принадлежит классу Р?
Упражнение 15.8.14. Существуют ли такие языки Ци Ь2из класса NP,
что язык £х U Li не принадлежит классу NP?
15.9* . Проблема неравенства регулярных выражений
без итерации
Теорема 15.9.1. Проблема неравенства регулярных выражений без
итерации ( то есть регулярных выражений с нулевой звездной высотой )
NP- полна.
Доказательство. По регулярному выражению без итерации легко
построить конечный автомат с однобуквенными переходами, не
содержащий циклов. Проблема неравенства таких конечных автоматов
принадлежит классу NP: достаточно "угадать" слово, принадлежащее
разности языков, распознаваемых двумя данными автоматами, и,
продвигаясь по этому слову буква за буквой, подобно доказательству
теоремы 2.7.1 вычислять, в каких состояниях автоматы могут оказаться
При этом длину слова можно ограничить максимумом числа состояний
двух автоматов.
Осталось доказать, что проблема неравенства регулярных выражений
без итерации NP-сложна. Для этого достаточно продемонстрировать,
что к этой проблеме полиномиально сводится проблема выполнимости
булевых формул в конъюнкт йеной нормальной форме (то есть множество
кодов выполнимых булевых формул в конъюнктивной нормальной форме
полиномиально сводится к множеству кодов пар неравных регулярных
выражений без итерации). Искомое полиномиальное сведЕние может
быть построено следующим образом.
200
Пусть дана булева формула Ci Л С*2 Л___Л Ст, составленная из
пропозициональных переменных х1г х2, ---г хп (ПРИ более
формальном подж)де можно считать х^ обозначением слова р#1, как
это сделано в примере 7.2.8). Здесь для каждого j тп формула Cj
является элементарной дизъюнкцией. Для краткости будем обозначать
отрицание переменной х^ через 1+7 (а не через тХ», как в примере
7.2.8).
Построим два регулярных выражения над алфавитом £ = . В
качестве первого регулкрного выражения возьмем
(а + Ь) • (а + &)•...• (а I- 6) .
Для удобства отождествим истинностные значения "ложь" и "истина" с
символами а и Ь соответственно. Тогда оценку пропозициональных
переменных хх, х2, хп можно естественным образом
отождествить со словом длины п в алфавите 53. Второе регулярное
выражение е построим так, чтобы выполнялось равенство
£(t — {u1 G Е* | |w| — n и Ci Л С? Л ... Л Cm ложна при оценке «/.’}
Если m = 1, то это сделать легко. Возьмем в качестве j произведение
п сомножителей, каждый из которых совпадает с~одним из следующих
четырех регулярных выражений: (а + Ь) , а, Ь, Г1. При этом i -й
сомножитель соответствует пропозициональной переменной х4 и
выбирается следующим образом:
• если данная элементарная дизъюнкция не содержит ни литерала
х£, ни литерала -гТ, то используем выражение (а+Ь) ;
• если она содержит литерал х^, но не содержит литерала i+7, то
используем выражение а;
• если она содержит литерал ат7, но не содержит литерала х4, то
используем выражение b ;
• если она содержит оба литерала х4 и 27?, то используем
201
выражение 0.
Если m > 1, то построим по указанному методу для каждой из булевых
формул С1# Сг» - - г Сщ регулярное выражение и возьмем их
сумму.
Легко видеть, что два построенных так регулярных выражения равны
тогда и только тогда, когда булева формула Ci Л Са Л... Л Ст
невыполнима.
Пример 15.9.2. Пусть £ — [a, fe} . Регулярные выражения
(а+Ь)(а+Ь)(а+Ь)
и
ab(a +b)+(a+b)ab+b(a+b)(a+b)+(a+b)(a+b)a
равны, так как булева формула
(jjl V зТ) Л (а;з V xj) Л аТ Л а?з
невыполнима (или, другими словами, булева формула
(arf Л 2:2) V Л scj) V sci V хз
является тавтологией).
Упражнение 15.9.3. Равны ли регулярные выражения
(a+b)(a+b)(a+b)
и
bb(a+b)+ba(a+b)+a(a+b)b+(a+b)aa ?
Упражнение 15.9.4. Равны ли регулярные выражения
(a+b)(a+b)(a+b)(a+b)
202
Пентус А. Е., Пентус М.Р
aab(a+b)+a(a +b)(a+b)b+ (a+b)aa(a+b)+(a+b)bb(a+b)+
+(a+b)baa+bab(a+b)+b(a+b)(a+b)b ?
Упражнение 15.9.5. Эквивалентен ли конечный автомат
конечному автомату, изображенному ниже?
203
Алгоритмически неразрешимые проблемы
В данной лекции рассматриваются оказавшиеся неразрешимыми
алгоритмические проблемы, связанные с контекстно-свободными
языками. Доказывается неразрешимость проблем пустоты пересечения,
бесконечности пересечения, однозначности, равенства, автоматности,
контекстной свободности дополнения и пересечения контекстно-
свободного языка. Доказательства приведены на практических
примерах, а также приведены упражнения для самостоятельной
проработки
В этой лекции рассматриваются оказавшиеся неразрешимыми
алгоритмические проблемы, связанные с контекстно-свободными
языками. Всюду предполагается, что в индивидуальных задачах каждый
язык представлен контекстно-свободной грамматикой (но можно,
конечно, использовать и автоматы с магазинной памятью).
В разделе 16.1 доказывается неразрешимость проблемы пустоты
пересечения контекстно-свободных языков и проблемы бесконечности
пересечения контекстно-свободных языков.
В разделе 16.2 доказывается неразрешимость проблемы однозначности
контекстно-свободной грамматики.
В разделе 16.3 доказывается неразрешимость проблемы равенства
контекстно-свободных языков.
В разделе 16.4 доказывается неразрешимость проблемы автоматности
контекстно-свободного языка.
В разделе 16.5 доказывается неразрешимость проблем контекстной
свободности дополнения контекстно-свободного языка и пересечения
контекстно-свободных языков.
16.1. Пересечение контекстно-свободных языков
Определение 16.1.1. Рассмотрим алфавит У]д___{q, с} Пусть
д; — (gj.... гДе € {а. 6}* Д™ всех Д- Обозначим через
204
Пектус А.Е., Пентус М.Р
линейную грамматику ({<?}, Sj, Рч S) , где
Р — {£ —* ba^Sxt | 1 г <£ n} U {S —* ta’cz, | 1 SC г <С п}.
Обозначим через язык, порождаемый грамматикой С7(аЛ-
Лемма 16.1.2. Язык £.? П£у является непустым тогда и только тогда,
когда постовская система соответствия (а;, у) имеет решение.
Пример 16.1.3. Рассмотрим постовскую систему соответствия
[b I Га&баа]
ЙЙ1.Г I а ।
(то есть п = 2, х = (Е\а№аа) и у — (ЪЬа, а) )• Решениями этой
системы являются последовательности (1, 1, 2), (1, 1, 2, 1,
1, 2) и т. д. Легко убедиться, что
£.5 П = {(&Qflba6fl)^c(feba&baa)11 | и 5= 1}.
Теорема 16.1.4. Пусть |53| ^3 2- Тогда не существует алгоритма,
позволяющего по произвольным контекстно-свободным грамматикам ь3
и G2 над алфавитом 23 узнать, верно ли, что П L (G'2) ~ 0 -
Доказательство. Сначала докажем утверждение теоремы для случая
|S| 3. Из леммы 16.1.2 следует, что если бы проблема
распознавания свойства П __________0 Для контекстно-
свободных грамматик над алфавитом была разрешима, то проблема
соответствий Поста тоже была бы разрешима. Поэтому из
неразрешимости проблемы соответствий Поста следует
неразрешимость проблемы распознавания свойства
П — 0 Для контекстно-свободных грамматик над
алфавитом
Чтобы доказать утверждение теоремы для случая |Е| — 2 (например,
205
S — {d, e} ), достаточно заменить в определении GfjTl символ а на
ede, символ b на edde и символ с на eddde.
Лемма 16.1.5. Язык jC.£ Г1 является бесконечным тогда и только тогдг
когда постовская система соответствия (Л, г/1 имеет решение.
Доказательство. Если постовская система соответствия имеет хотя бы
одно решение, то она имеет бесконечно много решений.
Теорема 16.1.6. Пусть |£| > 2- Тогда не существует алгоритма,
позволяющего по произвольным контекстно-свободным грамматикам G j
и G2 над алфавитом Е узнать, является ли бесконечным язык
£(Giin£(G2)-
Упражнение 16.1.7. Пусть £ — {а., Ь, с, di, d2,dj} • Рассмотрим язык
Lx, порождаемый грамматикой
к' —> dll' а,
к' d2k'aab,
к —> d^k Ьаа^
к' —> с,
и язык L2, порождаемый грамматикой
J —> di Jaa,
J -> d2Jbb,
d djjalfl,
J ->r.
Верно ли, что П/,2 — {г} ^Упражнение 16.1.8. Пусть
£ — [a., b, с, di, 1(2» Йз} • Рассмотрим язык Lx, порождаемый
грамматикой
206
Пентус А.Е., Пентус М.Р F -> diffe, —* dzFa, Математическая теория формальных языков Д' —► djcft, Д' —> d2ca.
duFaba, Д' —> dacaba.
и язык порождаемый грамматикой
J > diZ
J —* d^Jaa^
J -> d.-Jb.
J —> djc,
J —* dzCQQ,
J —> dacfe.
Верно ли, что £2 П Д-2_@ ?Упражнение 16.1.9. Пусть £ — {а, 6, с}
. Рассмотрим язык Lx, порождаемый грамматикой
Д' —» ЬаЕа.
—> baaJraab,
Д' —» baaaFbaa,
F —> tcica.,
Д’ —* daacaab,
Д’ —> ЬааасЪаа,
и язык Ь2, порождаемый грамматикой
J baJaa,
J —t baaJbbt
J —> baaa J a,
J bacaa.
J —> baacbb.
J —» baaaca.
Верно ли, что £j П £-2 =
16.2. Проблема однозначности
Теорема 16.2.1. Пусть |S| 2^ 2- Тогда не существует алгоритма,
позволяющего по произвольной контекстно-свободной грамматике G на^
алфавитом £ узнать, является ли грамматика G однозначной.
Доказательство. Рассмотрим язык U £ . Следуя доказательству
теоремы 9.4.3, построим грамматику G для этого языка, исходя из
207
грамматик и tjf-y).
Грамматика G является неоднозначной тогда и только тогда, когда
постовская система соответствия [;е, у) имеет решение.
Упражнение 16.2.2. Однозначна ли контекстно-свободная грамматика
S->Q. R baRbba,
S-tR, R —* baaRa,
Q —* baQb, R —> bacb ba,
Q —> baaQabbaa. R —* baaca?
Q —» bacb,
Q —> baacabbaa,
16.3. Дополнение контекстно-свободного языка
Лемма 16.3.1. Рассмотрим алфавит S3_____ (п, b, с} • Язык £^ —
является контекстно-свободным при любом х.
Пример 16.3.2. Пусть х — (б, обдал) - Тогда язык S* — £.% над
алфавитом S3 = {о, б. с} порождается контекстно-свободной
грамматикой
208
Пентус A.E., Пентус M.P Математическая теория формальных языков
S^E, R —* f, Ст Сь,
s -> ап; R -> ВИ’. Г-2 —> Unbbaa,
S bR, R -г naall', ?2 —> Uhbaa^
A - - a.. R —> я, /a ~* Съаа,
A —+ c, R —> аа, >2 -» C=C,
R —> abRb, О c=,
В ->c, R —> aabRabbaa. Co 1VB.
Z —> a. R —> acZH’b, LrQ —» e,
Z--B, R —* aacZH-'afttaza, Ut -> IVA,
n -> zh; R -> aB7i,
IT' -> R —* асВ’Уг,
Заметим, что { ?i’ es; 1= E5 - (Ч • {.г?}) Для каждого
Язык Sj — является даже линейным (чтобы получить линейную
грамматику достаточно "раскрыть" вспомогательные символы А, В и Z
)-
Замечание 16.3.3. Лемму 16.3.1 можно доказать, явно построив
контекстно-свободную грамматику (как в примере 16.3.2), а можно и
вывести из теоремы 12.2.7}, проверив, что jCj - детерминированный
контекстно-свободный язык.
Определение 16.3.4. Пусть £3 —(а, Ь.с}. ж = (scj....яг„).
У — (gJi,.. чУп), гДе И зде{а,Ь}* для всех i.
Обозначим через JM-ё, Ц язык — f jCj П jC^r).
Лемма 16.3.5. Язык g является контекстно-свободным при любых
X и у
Доказательство. — jCx) U (Sy —
2U9
Лемма 16.3.6. Дополнение языка Л4.т.щ является непустым тогда и
толью тогда, когда постовская система соответствия (а;, у) имеет
решение.
Доказательство Утверждение следует из леммы 16.1.2.
Теорема 16.3.7. Пусть |Е| 2- Тогда не существует алгоритма,
позволяющего по произвольной контекстно-свободной грамматике G на^
алфавитом £ узнать, верно ли, что — S*.
Доказательство Очевидно, что £,((71__ S* тогда и толью тогда, когда
дополнение языка L (G) является пустым.
Теорема 16.3.8. Пусть |Е| 2- Тогда не существует алгоритма,
позволяющего по произвольным контекстно-свободным грамматикам ! j
и G2 над алфавитом v узнать, верно ли, что L (Gx) - L (G2) -
Доказательство Утверждение следует из предыдущей теоремы и
примера 1.5.16.
Теорема 16.3.9. Пусть |Е| 2- Тогда не существует алгоритма,
позволяющего по произвольным контекстно-свободным грамматикам и ।
и G2 над алфавитом Е узнать, верно ли, что XfGj) С £((72) •
Доказательство Очевидно, что Е* С £((7) тогда и толью тогда, когда
£(<7) - Е*.
Лемма 16.3.10. Дополнение языка является бесконечным тогда и
толью тогда, когда постовская система соответствия (aF, 27) имеет
решение.
Теорема 16.3.11. Пусть |Е| 2- Тогда не существует алгоритма,
позволяющего по произвольной контекстно-свободной грамматике G на^
алфавитом 52 узнать, является ли бесконечным множество Е* — £((7)-
210
Упражнение 16.3.12. Рассмотрим язык, порождаемый грамматикой
S F, / -»E. i'-ta,
S-*T, F —» aJ, Г^ЬТ,
f -> ьк Г-» 1Ъ,
J aF. Г Га Т
J -» bJ,
Содержит ли этот язык все слова из {а,Ы *?Упражнение 16.3.13.
Рассмотрим язык, порождаемый грамматикой
S -» b, Г —* qj
S Г, r bl \
aaF Г -> Th,
I -> bb. Г -> i aT.
/ e,
16.4. Проблема автоматности
Лемма 16.4.1. Пусть х — (sci,..., хп), у — [yi,... ,уп), где
Xi € [a. b}*, S/i 6 {а, 6}* и г для всех i. Тогда язык
является автоматным в том и только том случае, когда постовская
система соответствия i,х, у) не имеет решений.
Доказательство Пусть - решение пестовской системы
соответствия [J-, у], где Xjy2 S для всех i. Положим
и Ъа^'Ьа*1. Ьа*1,
•it .
211
Легко проверить, что и 5, v 5 и язык Lq является автоматным.
Очевидно, что
£.? П Lu = {tzmcr171 | m > Cl}.
Как было установлено в упражнении 3.4.2. язык П П Хо не
является автоматным. Согласно теореме 3.2.1 язык £.тГ1£л не
является автоматным. Следовательно, и язык не является
автоматным.
Обратно, если постовская система соответствия (ж,у) не имеет
решений, то = {о, Ь, с}*, а этот язык является автоматным.
Теорема 16.4.2. Пусть |Е| 2- Тогда не существует алгоритма,
позволяющего по произвольной контекстно-свободной грамматике G на^
алфавитом у узнать, является ли автоматным язык L (G).
Доказательство Докажем утверждение теоремы для случая |£| 3- Из
леммы 16.4.1 следует, что если бы проблема распознавания
автоматности языка L(G) для контекстно-свободных грамматик над
алфавитом у была разрешима, то также была бы разрешима проблема
соответствий Поста для пестовских систем соответствия
где л:, г (ajjj*. л;е{а,Ь]’ и
t для всех i. Но тогда была бы разрешима проблема
соответствий Поста для всех пестовских систем соответствия над
алфавитом {а,Ь} (если — - для некоторого i, то
рассматриваемая постовская система соответствия имеет решение, а
именно (с) ).
Упражнение 16.4.3. Является ли автоматным язык, порождаемый
грамматикой
212
Пентус А.Е.. Пентус М.Р Математическая теория формальных языков
S-* Л1',
R-> 1 R,
R -> о,
T^TR,
т->ь?
Упражнение 16.4.4- Является ли автоматным язык, порождаемый
грамматикой
Л->ТЛ»
R -> а.
1 R,
T—*bR7
Упражнение 16.4.5. Является ли автоматным язык, порождаемый
грамматикой
л-» гл.
R —* а,
г-» лг,
Т-> Ь7
Упражнение 16.4.6. Является ли автоматным язык, порождаемый
грамматикой
S^RT,
R +2R,
Т -t RT,
Т -^b?
16.5. Проблемы контекстной свободно сти
213
Определение 16.5.1. Пусть S3 = {a, Ь, с} . ж = (xj,..., жп),
у— где а^£{а.&}* и зд£{а,6)* для всех i.
Обозначим через XS.^.s* язык £j-{c}-£g.
Лемма 16.5.2. Язык Klx.J является контекстно-свободным при любых
ж и у.
Доказательство Утверждение следует из теорем 9.4.4 и 9.4.2.
Лемма 16.5.3. Рассмотрим алфавит S3 {а, Ь, с} • Пусть
я = (:Г1.....ги1" (й....,УпД где 2- £ b}*. yt £ {а,6}*
хгуг г для всех i. Тогда язык {£CSn | z € £3} является
контекстно-свободным в том и только том случае, когда пестовская
система соответствия fJ;, у) не имеет решений.
Доказательство. Пусть (z j.,... - решение постовской системы
соответствия i'J-, у}, где хгуг 5 для всех i. Положим
« Ьа’к ba1* 1 ... ba1',
1' —-
£<, = W-И-{«"}• {С}-{«"}•.
Легко проверить, что и S, V^S и язык Lq является автоматным.
Очевидно, что
/ЛП {гсг" I 2 е £?;} П Lo = {uT"arc(vn')mc(u’L)m | т > 0[.
Можно доказать (например, используя лемму 9.1.1), что язык
{и7Т!с,гтпс('Уп)тпс(иГ1)7Л | т > 0} не является контекстно-
свободным. Согласно теореме 9.6.1 язык П -{~e£n | z € £3}
также не~является контекстно-свободным.
Обратно, если постовская система соответствия (д;,у) не имеет
214
решений, то JC-g,# Г) | z £ Е^} = 0.
Теорема 16.5.4. Пусть |Е| 2- Тогда не существует алгоритма,
позволяющего по произвольным контекстно-свободным грамматикам ।
и G2 над алфавитом у узнать, является ли контекстно-свободным язык
Z(Gi)n£(G2)-
Доказательство. Достаточно построить по постовской системе
соответствия (Д у), где £ — (a~i..аг„), у — (эд.,и для
всех выполняется {а,b}*, Уг € {a, t}* и
контекстно-свободную грамматику Gj, порождающую язык и
контекстно-свободную грамматику Су, порождающую язык
{zczR | Z £ Ej} - С учетом леммы 16.5.3 неразрешимость
рассматриваемой задачи сводится к неразрешимости проблемы
соответствий Поста рассуждением, аналогичным приведенному в
доказательстве теоремы 16.4.2.
Лемма 16.5.5. Рассмотрим алфавит Ез ~ {а, Ь, с}- Язык
Ej — | z £ E^J-j является контекстно-свободным при
любых £ и у.
Доказательство. Положим £и________ (эд £ Е-* | |эд|с = 1} - Язык
Ej — {acz11 | z £ Е^}) можно представить в виде
объединения пяти контекстно-свободных языков
Li - {w е I |w|c -+ 3},
£з — {uicb’acfjcua | эд,Щ2.Щзт^4 € {a, fe}*, vi v"}.
= {vici’acwjct'a | ^2 / г’з }>
£4=((E*-£^)ri£eJ-{c}-£o.
£:, = Lc {c} - ((E* - £?)n П £nl.
Теорема 16.5.6. Пусть |E| 2- Тогда не существует алгоритма,
215
позволяющего по произвольной контекстно-свободной грамматике G на,
алфавитом S узнать, является ли контекстно-свободным язык
Е* - L(GY
Доказательство. Рассмотрим алфавит S3 — {fl., h, с} • Достаточно
построить по пестовской системе соответствия (к, ц), где
х = (sci.... ,zrJ, у = (?/]_,..., и для всех . выполняется
а, & i/i Е { а., f'}W и £ ’ контекстно-свободную
грамматику G, порождающую язык Sj — (X>g.p П { гсс11 | z Е
С учетом леммы 16.5.5 неразрешимость рассматриваемой задачи
сводится ^неразрешимости проблемы соответствий Поста
рассуждением, аналогичным приведенному в доказательстве теоремы
16.4.2.
Лемма 16.5.7. Рассмотрим алфавит S3 —{а, Ь, с}-- Язык
|ze Е*} является контекстным при любых j- и у .
Теорема 16.5.8. Пусть |S| 2- Тогда не существует алгоритма,
позволяющего по произвольной контекстной грамматике G над
алфавитом S узнать, является ли контекстно-свободным язык L (G).
Доказательство. Достаточно построить по пестовской системе
соответствия (а;, у), где / — (хь..., хп), у — (gn.,..., ) и для
всех 1 выполняется г, G {а, &}*, Е {fl, Ь}* и ,
контекстную грамматику G, порождающую язык
КадП-рсг11 | z €
Упражнение 16.5.9. Является ли контекст но-свободным язык
{а. Ь} * £ , где язык L порождается грамматикой
S -* е,
S -> aSbS?
216
Список литературы
1. Ахэ А., Сети R, Ульман Дж, Компиляторы: принципы, технологии и инструменты,
М.: Вильямс, 2001. — 768 с
2. Ахэ А., Уйьман Дж, Теория синтаксического анализа, перевода и компиляции. Т. 1:
Синтаксический анализ, М.: Мир, 1978. — 612 с
3. Ахэ А., Хопкрофт Дж., Ульман Дж, Построение и анализ вычислительных
алгоритмов, М_: Мир, 1979. —536 с
4. Братчиков И. Л, Синтаксис языков программирования, М.: Наука, 1975. — 232 с
5. Верещагин Н. К, Шень А, Лекции по математической логике и теории
алгоритмов. Часть 3. Вычислимые функции, М.: МЦНМО, 1999. —176 с
6. Волкова И. А., Руденко Т. В, Формальные грамматики и языки. Элементы теории
трансляции, 2-е изд. перераб. и допМ.: Диалог-МГУ, 1999. — 62 с
7. Гинзбург С, Математическая теория контекстно-свободных языков, М.: Мир,
1970. —326 с
8. Гладкий А. В, Формальные грамматики и языки, М.: Наука, 1973. — 368 с
9. Гладкий А. В., Мельчук И. А, Элементы математической лингвистики, М.: Наука,
1969.—192 с
10. Гордеев А. В., Молчанов А. Ю, Системное программное обеспечение, СПб.:
Питер, 200L — 736 с
11. Грис Д, Конструирование компиляторов для цифровых вычислительных машин,
М.:Мир, 1975. — 544 с
12. Гросс М., Лантен А, Теория формальных грамматик, М_: Мир, 197L — 294 с
13. Гэри М., Джонсон Д, Вычислительные машины и труднорешаемые задачи, М.:
Мир, 1982, —416 с
14. Карпов Ю. Г, Теория автоматов, СПб.: Питер. 2002. — 224 с
15. Китаев А., Шень А., Вялый М, Классические и квантовые вычисления, М.:
МЦНМО, ЧеРо, 1999. — 192 с
16. Компаниец Р. И., Маньков Е. В., Филатов Н. Е, Системное программирование.
Основы построения трансляторов, СПб.: КОРОНА принт, 2000. — 256 с
17. Кормен Т, Лейзерсон Ч., Ривест Р, Алгоритмы- построение и анализ, М.:
МЦНМО, 1999 — 960 с
18. Кук Д., Бейз Г, Компьютерная математика, М.: Наука, 1990 — 384 с
19. Лаллеман Ж. Полугруппы и комбинаторные приложения. М.: Мир, 1985. — 440 с
20. А. Тейз, П. Грибомон, Ж. Луи и др. Логический подход к искусственному
интеллекту: От классической логики к логическому программированию, М.: Мир,
1990.-432 с
2L Льюис Ф., Розенкранц Д., Стирнз Р, Теоретические основы проектирования
компиляторов, М.: Мир, 1979. — 656 с
22. Мартыненко Б. К, Языки и трансляции, СПб.: Издательство С.-Петербургского
университета, 2004. — 235 с
23. Мозговой М. В, Классика программирования: алгоритмы, языки, автоматы,
компиляторы.Практический подход, СПб.: Наука и Техника, 2006. — 320 с
24. Рейуорд-Смит В. Дж, Теория формальных языков. Вводный курс, М.: Радио и связь,
1988, —128 с
25. Саломаа А, Жемчужины теории формальных языков, М.: Мир, 1986. — 159 с
217
26. Серебряков В. А., Галочкин М. П., Гончар Д. Р., Фуругян М. Г. Теория и
реализация языков программирования. — М.: МЗ-Пресс, 2003. — 345 с
27. Соколов В. А., Кушниренко О. Б., Бадин Н. М, Формальные языки и грамматики.
Задачи и упражнения, Ярославль: Ярославский государственный университет; 1993.
28. Сэвидж Дж. Э, Сложность вычислений, М.: Факториал, 1998. — 368 с
29. Трахтенброт Б. А., Барздинь Я. М, Конечные автоматы (поведение и синтез). Мл
Наука, 1970. —400 с
30. Успенский В. А., Верещагин Н. К, Плиско В. Е, Вводный курс математической
логики, 2-е изд. — М.: Физматлит, 2002. — 128 с
31. Хопкрофт Дж. Э., Мотвани Р., Ульман Дж. Д, Введение в теорию автоматов,
языков и вычислений, 2-е изд. — М.: Вильямс, 2002. — 528 с
32. Шень А, Программирование: теоремы и задачи, М.: МЦНМО, 1995. — 264 с
33. Immerman N, Nondeterministic space is closed under complementation, SIAM Journal
on Computing. — 1988. — Vbl. 17, no. 5. - P 935- 938
34. Lewis H. R.. Papadimitriou С. H. Elements of the Theory of Computation. Prentice Halt
1981. —466 p
35. Lewis H. R, Papadimitriou С. H, Elements of the Theory of Computation, 2nd ed.
Prentice Hall, 1998. — 361 p
36. Sipser M, Introduction to the Theory of Computation, PWS Publishing company, 1997.
— 396 p
37. Stirling C, Decidability of DPDA equivalence. Theoretical Computer Science. — 2001.
— \bL 255, no. 1—2. — P 1—31
38. Szelepcse. nyiR, The method of forcing for nondeterministic automata. Bulletin of the
EATCS. — 1987. — \bl. 33, no. 5. — P. 96—100
218
Содержание
Титульная страница 2
Выходные данные 3
Лекция 0. Предисловие 4
Лекция 1. Слова, языки и грамматики 7
Лекция 2. Конечные автоматы 25
Лекция 3. Основные свойства автоматных языков 42
Лекция 4. Дополнительные свойства автоматных языков 52
Лекция 5. Регулярные выражения 58
Лекция 6. Синтаксические моноиды 69
Лекция 7. Неоднозначность в контекстно-свободных
83
грамматиках
Лекция 8. Нормальные формы контекстно-свободных
грамматик
Лекция 9. Основные свойства контекстно-свободных
языков
Лекция 10. Автоматы с магазинной памятью 119
Лекция 11. Дополнительные свойства контекстно-
свободных языков
Лекция 12. Детерминированные контекстно-свободные
языки
Лекция 13. Синтаксический разбор 151
Лекция 14. Алгоритмические проблемы 174
Лекция 15. Алгоритмически разрешимые проблемы 192
Лекция 16. Алгоритмически неразрешимые проблемы 204
Спис ок литературы 217
219