- •1. Алфавит, слова, операции над словами
- •2. Языки. Операции над языками
- •3. Абстрактные формальные системы
- •4. Формальные порождающие грамматики
- •5. Классификация грамматик
- •Диаграмма грамматики.
- •Порождение и распознавание цепочек.
- •Детерминизация конечных автоматов
- •Автоматы с - переходами.
- •9. Минимизация числа состояний автомата
- •9.1. Лингвистический автомат.
- •9.2. Метод Хафмена.
- •Регулярные множества и регулярные выражения.
- •Разрешимые проблемы для а-грамматик
- •7. Нотации для задания кс-грамматик.
- •8. Структура цепочек. Су-схемы
- •9. Преобразования грамматик.
- •10. Разрешимые и неразрешимые свойства кс-грамматик
- •11. Синтаксический анализ для кс-языков
- •11.1 Ll(k)-грамматики
- •12.Элементы теории конечных автоматов
- •13.Сети автоматов. Их анализ и синтез.
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, …, 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, а заключение – в.
Например, из acb , cabbприменением продукцииa x1 b, x1 b x2 b x2(подстановкаx1=ca, x2=b) непосредственно выводимоbb.
Выводимость – транзитивное и рефлексивное замыкание непосредственной выводимости.
Доказуемо (теорема формальной системы ) - выводимо из множества аксиом.
Например, <{I}, {x}, {I}, {xxII}> позволяет построить множество нечетных чисел в унарном представлении.
Теорема. Для любого перечислимого множества М слов в алфавите А существует каконическая система над А, множество теорем которой совпадает с М.
(доказательство, с использованием МТ, приводится в [3])
4. Формальные порождающие грамматики
Порождающей грамматикой называется упорядоченная четверка G=< VT,VN, S, R>, гдеVT -алфавит терминальных или основных символов;VN — алфавит нетерминальных или вспомогательных символов(VTVN = ); S - начальный символ или аксиома,S VN, R -конечное множество правил или продукций вида, где(VTVN )* VN (VTVN )*, (VTVN )* - различные цепочки, аспециальный символ, не принадлежащий VTVN и служащий для отделения левой части правилаот правой. Такие символы, которые служат для описания языка, но не принадлежат самому языку, будем называть метасимволами. Говорят, что цепочка 1непосредственно выводима из цепочки0 (обозначается01), если существуют такие1, 2, , , что 01 2, 11 2 и существует правило ( R). Иными словами 01 , если в0найдется вхождение левой части какого-либо правила грамматики, а цепочка1получена заменой этого вхождения на правую часть правила. Существенно, что при определении отношения непосредственной выводимости обозначаемого(разумеется, также метасимвол) мы не указываем, какое правило нужно применять и к какому именно вхождению (если их несколько). Здесь проявляются характерные черты исчислений, к классу которых относятся и порождающие грамматики. Исчисления представляют собой "разрешения" в отличие от алгоритмов, являющихся "предписаниями".
Говорят, что цепочка nвыводима из цепочки 0 за один или несколько шагов или просто выводима (обозначается0+n),если существует последовательность цепочек1, 2,…, n(n>0), такая, что ii+1, i{0,…n}. Эта последовательность называется выводом nиз 0, аn– длиной вывода. Выводимость заnшагов иногда обозначается0n nНаконец, если 0+nили 0=n, то пишут 0*n.
Нетрудно видеть, что +есть транзитивное, а* - транзитивно-рефлексивное замыкание отношения .
Цепочка называется сентенциальной формой, если она совпадает или выводима из начального символа грамматики, т.е. если S ,
Множество цепочек в основном алфавите грамматики, выводимых из начального символа, иначе множество сентенциальных форм, состоящих из терминальных символов, называется языком, порождаемым грамматикой G, и обозначаетсяL(G).
L(G) = {x / S * x & xVT }.
Для любого перечислимого множества слов М существует грамматика G, такая, что М=L(G).
Говорят, что грамматики G1 иG2эквивалентны, еслиL(G1 )=L(G2).
Например,
G1 = < {S}, {a}, S, { Sa, S a a S}>
L(G1)= {a 2n+1, n 0}
G2 = < {S, A}, {0, 1}, S, R>
R = {S 1 A, A 1 A, A 0 A, A 0 }
L(G2) – множество четных двоичных чисел, больших нуля.
G3 = < {S, A}, {0, 1}, S, R>
R = {S 1 A 0, A 1 A, A 0 A, A }
L(G2) = L(G3)
Для сокращения записи грамматик и выводов будем изображать нетерминальные символы прописными буквами латинского алфавита А , В , С , … , Sтерминальные -строчными буквами a, b, c,…и цифрами. Прописными буквамиU, V, Z будем обозначать символы, которые могут быть как терминальными, так и нетерминальными; строчными буквами u, v, z cиндексами или без них - цепочки, составленные из терминальных символов, а буквами …- из любых символов. Кроме того, для обозначения правил
1
2
………..
n
будем пользоваться записью 12…n .
Правила вида , где VT, называются заключительными.