- •1.Операции над словами и языками. Понятие грамматики и грамматического вывода.
- •2.Иерархия Хомского формальных языков.
- •3. Понятия конечного автомата и конечно-автоматного языка. Примеры конечно-автоматных языков.
- •4.Детерминированные и недетерминированные конечные автоматы. Алгоритм детерминизации недетерминированного конечного автомата.
- •5. Алгоритм минимизация конечного автомата.
- •7. Лемма Огдена (о разрастании) для конечно-автоматных языков. Пример языка, не являющегося конечно-автоматным.
- •8. Правила построения регулярных выражений. Теорема Клини о совпадении классов конечно-автоматных и регулярных языков.
- •9. Алгоритм анализа конечного автомата.
- •10. Алгоритм синтеза конечного автомата.
- •11. Свойства замкнутости праволинейных языков относительно теоретико-множественных операций, конкатенации и итерации.
- •12. Решение систем линейных уравнений с регулярными коэффициентами. Описание праволинейного языка с помощью системы линейных уравнений с регулярными коэффициентами.
- •13. Теорема о совпадении классов праволинейных, конечно-автоматных и регулярных языков.
- •14. Определение контекстно-свободной грамматики. Контекстно-свободный грамматический вывод, левый и прявый выводы. Примеры кс-языков. Деревья вывода.
- •15. Приведенная форма кс-грамматики, алгоритм преобразования кс-грамматики к приведенной форме.
- •16. Лемма Огдена для кс-языков. Пример языка, не являющегося контекстно-свободным.
- •21. Соотношение между кс-языками и языками, допускаемыми мпа. Построение по кс-грамматике мп-автомата.
- •22. Понятие мп-преобразователя. Нисходящие и восходящие распознаватели.
- •23. Построение мп-преобразователя, реализующего левый разбор
1.Операции над словами и языками. Понятие грамматики и грамматического вывода.
В={b1, b2,…bm} - некоторое конечное множество букв.
Слово в алфавите В – произвольная конечная последовательность символов (символы могут повторяться).
α (альфа) = b1, b2,…,bn
| α | - длина слова, число символов (| α | = n).
λ – пустое слово (не содержит ни одной буквы).
| λ |=0 // пустое слово принадлежит множеству всех слов В*.
| α |b – число вхождений буквы b в слово α.
В* - множество всех слов в алфавите В. Это бесконечный язык, если алфавит не пустой, счетное множество.
Язык L – произвольное подмножество множества В. L включ. в В*.
Язык может быть конечным или бесконечным.
Операции над словами.
Пусть есть слово α.
Обращение слова α – αR (буквы в обратном порядке), одноместная операция.
α = 010111, αR = 111010.
Конкатенация обозначается α*β или αβ, двухместная операция.
α=11010, β=001, αβ=11010001.
К слову α справа дописывается слово β (склеивание, слияние, умножение).
слова α αλ=α=λα (λ играет роль единицы).
Операции над языками.
Т.к. язык – это множество, над ним можно применять все теоретико-множественные операции.
1. Объединение.
L1 U L2 = {α| λ ϵ L1 или λ ϵ L2}.
2. Пересечение.
L1 ∩L2 = { α| λ ϵ L1 и λ ϵ L2}.
3. Разность.
L1\L2 = { α| λ ϵ L1 и λ не ϵ L2}.
4. Дополнение.
_
L = B*\L дополнение до множества всех слов в алфавите
Конкатенация языков.
L0 = {λ} L1*L2={α|α=βγ, βєL1, γϵL2}
Используются степени языков.
L1= L, L2= L*L1=L*L, L3=L*L2=L*L*L,…, Ln=L*Ln-1
Пример. Рассмотрим конечные языки
L1={ab, bac}, L2={ba, ab, c}
Построим конкатенацию
L1*L2={abba, abab, abc, bacba, bacab, bacc}
1-ая часть слов входит в язык L1, 2-ая в L2
Операция некоммутативна
L2*L1={baab, babac, abab,abbac,cab,cbac}
Используя операцию степени, введем операцию итерация языка.
L*=U(i=1,…,∞)Li
L0={λ}. т.к. λ входит в L*, итерация любого языка содержит устое слово, итерация не может быть пустым множеством (всегда есть λ).
Позитивная итерация.
Одноместная итерация
L+=U(n=1,…,∞)Ln
Пустое слово обязательно не содержится? Нет., т.к. λ может быть в языке L, для которого строится L+, следовательно L+ содержит {λ} и L+ совпадает с L*.
Может быть L*=Ø? Нет, т.к.всегда есть λ.
Может быть L+=Ø? Да, когда L=Ø.
Грамматики.
Грамматикой называется система, которая определяется четырьмя параметрами
G=<VT, VN, P, S>
VT – алфавит терминальных символов (основных)
VN – алфавит нетерминальных символов (вспомогательных)
P – конечное множество правил
Sϵ VN – некоторый выделенный символ нетерминального алфавита, который называется аксиомой.
VT∩ VN алфавиты не пересекаются, все буквы различны.
Как применяются правила.
Если есть слово γ=α1βα2 и в множестве правил есть β→δ (из β следует δ) получим γ’= α1δα2.
И говорят, что γ’ непосредственно выводимо из γ (с помощью применения одного правила). γ => γ’.
Правило можно применять многократно. =>* - рефлексивная транзитивная выводимость.
Любое слово выводимо из себя. Рефлексивность: α =>* α, транзитивность: можно применять правило любое конечное число раз.