- •1. Алфавит, слова, операции над словами
- •2. Языки. Операции над языками
- •2.1. Теоретико-множественные операции
- •2.2.Специфические операции
- •3. Абстрактные формальные системы
- •4. Формальные порождающие грамматики
- •5. Классификация грамматик
- •6.1. Диаграмма грамматики
- •6.2. Порождение и распознавание цепочек
- •6.3. Детерминизация недетерминированных автоматов
- •6.4. Автоматы с -переходами
- •Детерминизация автоматов с -переходами
- •Оптимизация автоматов с -переходами
- •6.5. Минимизация числа состояний автомата Минимизация автоматов методом таблиц различий
- •Минимизация автоматов по методу Хафмена
- •Минимизация не полностью определенных автоматов
- •6.6. Регулярные множества и регулярные выражения
- •6.7. Разрешимые проблемы для а-грамматик
- •7. Нотации для задания кс-грамматик
- •7.1. Математическая нотация
- •7.2. Бекусова нормальная форма
- •7.3. Расширенная форма Бекуса – Наура (рбнф)
- •7.4. Синтаксическая диаграмма
- •8. Структура цепочек. Су-схемы
- •9. Преобразования кс-грамматик
- •9.1 Устранение непроизводящих правил
- •Алгоритм устранения непроизводящих нетерминалов.
- •9.2. Устранение недостижимых нетерминалов
- •Алгоритм преобразования грамматики.
- •9.3. Устранение -правил
- •Алгоритм преобразования грамматики.
- •9.4. Устранение цепных правил (правил вида а в)
- •Алгоритм исключения цепных правил.
- •10. Разрешимые и неразрешимые свойства кс-грамматик
- •10.1. Разрешимые свойства кс-грамматик
- •10.2. Неразрешимые свойства кс-грамматик
- •11. Синтаксический анализ для кс-языков
- •11.1. Типовая задача синтаксического анализа
- •11.2. Ll(k)-грамматики
- •Использование ll(k) свойства при построении анализатора.
- •11.3. Восходящий анализ
- •Алгоритм разбора для гпп.
- •12.Элементы теории конечных автоматов
- •12.1. Автомат Мили
- •Метод Хафмена минимизации числа состояний автомата
- •12.2. Автоматы Мура
- •12.3. Частичные автоматы
- •13. Сети автоматов. Их анализ и синтез
- •13.1. Синхронные сети автоматов
- •13.2. Правильно построенные логические сети
2.1. Теоретико-множественные операции
Пусть L1 и L2 – два языка над алфавитом V. Язык L называется объединением этих языков ( обозначается L = L1 L2 ), если L ={x / x L1 x L2}.
Пересечением языков L1 и L2 называется язык L (обозначается L = L1 L2 ), такой, что L ={x / x L1 & x L2}.
Дополнением языка L1 до V* называется язык L (обозначается L=V*\L1), такой, что L={ x/ xV* & x L1}.
2.2.Специфические операции
Произведением (иначе конкатенацией) языков L1 и L2 называется язык L (обозначается L=L1L2), если L={x y/xL1 & yL2}.
Например, L1={ ac, a }, L2={ cb, b}, тогда L1L2 ={ acb, accb, ab}.
Свойства операции конкатенации:
операция умножения языков ассоциативна:
L1 (L2 L3)= (L1 L2) L3;
операция умножения языков дистрибутивна относительно объединения:
L (L1L2 ) = LL1 LL2 ,
(L1L2 ) L = L1L L2L;
операция умножения языков не коммутативна: L1 L2 L2 L1.
L {}= {} L = L;
L(L1L2 ) LL1 LL2 , в общем случае равенства нет, что легко показать, подобрав соответствующий пример.
В силу ассоциативности
операции произведения, как и в случае
конкатенации цепочек,
записывается
как L=L1n.
По определению, L0={}.
Отметим, что {}
. так как
(пустой язык) вообще не содержит никаких
цепочек.
Итерацией языка
L1
называется язык
L
(обозначается
L=L1*),
если L=L10
L11
L12
…
=
.
Как нетрудно видеть, итерация алфавита
V*
(алфавит можно рассматривать как язык,
состоящий из односимвольных слов)
образует язык, состоящий из всех возможных
цепочек, составленных из символов V.
Это обстоятельство и объясняет, почему
V*
используется для обозначения всех слов
над алфавитом V.
Вводится
также операция усеченной итерации.
L
называется усеченной итерацией языка
L1
(обозначается
L=L1+),
если
L=L10
L11
L12
…
=
.
3. Абстрактные формальные системы
Абстрактная формальная система – это
Алфавит А ( множество слов в этом алфавите – А*).
Разрешимое множество А1 А*, элементы множества А1 называют аксиомами.
Конечное множество вычислимых отношений Ri (1, …, n, ) на множестве A*, называемых правилами вывода. В этом случае слово непосредственно выводимо из слов 1, …, n по правилу Ri.
Аксиомы тоже могут быть заданы как унарные отношения, но это не всегда удобно.
Выводимость. Вывод формулы В из формул A1, A2, … , An – последовательность формул F1, F2, … , Fm = B, такая, что Fi (i=1,…, m) – либо аксиома, либо одна из формул A1, A2, … , An, либо непосредственно выводима из некоторого подмножества множества {F1, F2, … , Fi-1}по одному из правил вывода. Если существует вывод формулы В из формул A1, A2, … , An, то В выводима из A1, A2, … , An . Множество формул, выводимых из аксиом, называется теоремами теории.
Теорема 1. Для любой формальной теории множество выводимых в ней слов перечислимо.
Доказательство.
Рассмотрим А** – множество всех конечных последовательностей 1, …, n, где i – слова в алфавите А. А** – перечислимо. Из-за разрешимости множества аксиом и вычислимости правил вывода по любой последовательности можно эффективно узнать, является ли она выводом в данной формальной системе (FS).
Если в процессе перечисления А** отбрасывать все последовательности, не являющиеся выводами, то получаем перечисление множества выводов, а значит, последних слов выводов.
Следовательно, множество слов (формул), выводимых в произвольной формальной системе, перечислимо.
Примеры формальных систем: системы продукций Поста (канонические системы), системы подстановок, формальные грамматики, исчисления и т.д.
Каноническая система – это <A, X, M, R>, где
A= {a1,a2,…, an} – алфавит констант,
X= {x1, x2,…,xm} – алфавит переменных,
M= {M1, M2, …, Mk} – множество аксиом, Mi(AX)*,
R = {R1, R2, …, Rl} – множество продукций, имеющих вид 1, 2,…, j, где i, (AX)*, 1, 2,…,j называются посылками, – следствием (заключением).
Слова в (AX)* называются термами, слова в А* – просто словами.
Слово называется применением аксиомы , если получается из подстановкой слов вместо переменных.
Слово непосредственно выводимо из 1, …, n применением продукции R , если существует подстановка слов вместо переменных в продукцию R, которая посылки превратит в 1, …, n, а заключение – в .
Например, из acab , cabb применением продукции a x1 b, x1 b x2 b x2 (подстановка x1=ca, x2=b) непосредственно выводимо bb.
Выводимость – транзитивное и рефлексивное замыкание непосредственной выводимости.
Доказуемое в формальной системе утверждение (теорема формальной системы) – утверждение, выводимое из множества аксиом.
Например, формальная система <{I}, {x}, {I}, {xx I I}> позволяет построить множество нечетных чисел в унарном представлении.
Теорема 2. Для любого перечислимого множества М слов в алфавите А существует каноническая система над А, множество теорем которой совпадает с М (доказательство с использованием машин Тьюринга приводится в [3]).
