
- •1.Операции над словами и языками. Понятие грамматики и грамматического вывода.
- •2.Иерархия Хомского формальных языков.
- •3. Понятия конечного автомата и конечно-автоматного языка. Примеры конечно-автоматных языков.
- •4.Детерминированные и недетерминированные конечные автоматы. Алгоритм детерминизации недетерминированного конечного автомата.
- •5. Алгоритм минимизация конечного автомата.
- •7. Лемма Огдена (о разрастании) для конечно-автоматных языков. Пример языка, не являющегося конечно-автоматным.
- •8. Правила построения регулярных выражений. Теорема Клини о совпадении классов конечно-автоматных и регулярных языков.
- •9. Алгоритм анализа конечного автомата.
- •10. Алгоритм синтеза конечного автомата.
- •11. Свойства замкнутости праволинейных языков относительно теоретико-множественных операций, конкатенации и итерации.
- •12. Решение систем линейных уравнений с регулярными коэффициентами. Описание праволинейного языка с помощью системы линейных уравнений с регулярными коэффициентами.
- •13. Теорема о совпадении классов праволинейных, конечно-автоматных и регулярных языков.
- •14. Определение контекстно-свободной грамматики. Контекстно-свободный грамматический вывод, левый и прявый выводы. Примеры кс-языков. Деревья вывода.
- •15. Приведенная форма кс-грамматики, алгоритм преобразования кс-грамматики к приведенной форме.
- •16. Лемма Огдена для кс-языков. Пример языка, не являющегося контекстно-свободным.
- •21. Соотношение между кс-языками и языками, допускаемыми мпа. Построение по кс-грамматике мп-автомата.
- •22. Понятие мп-преобразователя. Нисходящие и восходящие распознаватели.
- •23. Построение мп-преобразователя, реализующего левый разбор
23. Построение мп-преобразователя, реализующего левый разбор
МП-преобразование:
P = <Q,A,Г,В,б,q0,z0,F>
Б: Q x (A ∪ { λ}) x Г -> 2QxГ*xB* - множество всех подмножеств.
Спуск по таблице вниз
Раз S ∈ t1n, B = abaab
S -> AS ? нет
S -> AA ? есть. Используем первое правило, которое нашли.
S - > AA
t11 t24
Эти соответствия ищем просматривая вертикаль вверх, диагональ вниз и до первого нахождения таких tij, tj+1,k. Процесс повторяем параллельно для двух веток.
Как могли получить t24?
t24 -> t21 t24 -> t33 t24 -> t22 t24 -> t42 t24 -> t23 t24 -> t51
Имея дерево вывода, можно построить разбор.
A -> …
t33 -> t31 A
t33 -> t42 S,A
t33 -> t32
t33 -> t51
Ищем правила A -> AS №5 правило, A -> AA
t42 S -> …
t42 -> t41
t42 -> t51
S -> AS, ищем №2 правило
t41 A -> a? есть
t51 A -> b? есть
Трудоемкость построения дерева по таблице
Тдер(n) = O(n2)
Чтобы найти правило, нужно проделать O(n) операций.
Каждая вершина имеет степень, не превосходящую 3.
Листьев дерева n.
deg (лист) = 1, их n
deg (корень) = 2, их 1
Остальные вершины deg = 3, их x-n-1
x – число всех вершин деревьев вывода.
Сложим степени всех вершин = <2 x число ребер>
3(x–n-1) + n + 2 = 2m;
2m = 2(x-1), т.к. дерево.
x = 2n + 1
Число правил в дереве = x-n = n+1, отсюда трудоемкость построения разбора O(n2)
Трудоемкость алгоритма O(n3)
Если грамматика с однозначным выводом, то O(n2)
Если язык детерминированный O(n)