
- •1.Операции над словами и языками. Понятие грамматики и грамматического вывода.
- •2.Иерархия Хомского формальных языков.
- •3. Понятия конечного автомата и конечно-автоматного языка. Примеры конечно-автоматных языков.
- •4.Детерминированные и недетерминированные конечные автоматы. Алгоритм детерминизации недетерминированного конечного автомата.
- •5. Алгоритм минимизация конечного автомата.
- •7. Лемма Огдена (о разрастании) для конечно-автоматных языков. Пример языка, не являющегося конечно-автоматным.
- •8. Правила построения регулярных выражений. Теорема Клини о совпадении классов конечно-автоматных и регулярных языков.
- •9. Алгоритм анализа конечного автомата.
- •10. Алгоритм синтеза конечного автомата.
- •11. Свойства замкнутости праволинейных языков относительно теоретико-множественных операций, конкатенации и итерации.
- •12. Решение систем линейных уравнений с регулярными коэффициентами. Описание праволинейного языка с помощью системы линейных уравнений с регулярными коэффициентами.
- •13. Теорема о совпадении классов праволинейных, конечно-автоматных и регулярных языков.
- •14. Определение контекстно-свободной грамматики. Контекстно-свободный грамматический вывод, левый и прявый выводы. Примеры кс-языков. Деревья вывода.
- •15. Приведенная форма кс-грамматики, алгоритм преобразования кс-грамматики к приведенной форме.
- •16. Лемма Огдена для кс-языков. Пример языка, не являющегося контекстно-свободным.
- •21. Соотношение между кс-языками и языками, допускаемыми мпа. Построение по кс-грамматике мп-автомата.
- •22. Понятие мп-преобразователя. Нисходящие и восходящие распознаватели.
- •23. Построение мп-преобразователя, реализующего левый разбор
4.Детерминированные и недетерминированные конечные автоматы. Алгоритм детерминизации недетерминированного конечного автомата.
Недетерминированный конечный автомат – это система M=<Q,A,q0,δ,F>, где
Q - конечное множество состояний автомата,
A – конечный алфавит,
q0 ϵ Q – начальное состояние автомата,
δ: Q x A->2Q – функция переходов конечного автомата,
F c Q – множество заключительных («хороших») состояний автомата.
Автомат М называется детерминированным, если множество δ(q,a) содержит не более одного состояния для любых q ϵ Q и a ϵ A. Если δ(q,a) всегда содержит точно одно состояние, то автомат М называется полностью определенным.
Один из наиболее важных результатов теории конечных автоматов состоит в том, что класс языков, определяемых недетерминированными конечными автоматами, совпадает с классом языков, определяемых полностью определенными детерминированными конечными автоматами.
Для многих языков построить допускающий недетерминировнный конечный автомат гораздо легче, чем детерминированный.
Рассмотрим алгоритм детерминизации конечного автомата.
Пусть
M=<Q,A,q0,δ,F>
- недетерминированный конечный автомат,
распознающий язык L(M),
такой, что L(M’)=
L(M).
Положим, что Q’=2Q,
т.е. состояниями автомата M’
являются подмножества состояний автомата
М,
для каждого множества S
c
Q
и каждой входной буквы a
ϵ
A.
Таким образом, чтобы найти
,
мы рассматриваем все состояния p
в S,
затем ищем те состояния Q,
в которые можно попасть из состояния p
по букве а, после чего берем объединение
множеств найденных состояний по всем
состояниям p.
Множество
заключительных состояний детерминированного
конечного автомата
,
т.е. состоит из подмножеств состояний
Q,
содержащих хотя бы одно «хорошее»
состояние из F.
Два автомата называются эквивалентными, если они распознают один и тот же язык.
Теорема. Для любого недетерминированного конечного автомата с n состояний всегда можно построить эквивалентный ему детерминированный конечный автомат, имеющий не более чем 2n состояний.
5. Алгоритм минимизация конечного автомата.
M = <Q, A, q0, σ, F> - конечный автомат.
Конечный автомат M – минимальный, если не существует эквивалентного ему конечного автомата с меньшим числом состояний.
q ∈ Q – недостижимое состояние, если не существует слова α ∈ A*, которое переводит автомат из начального состояния в q, т.е. (q0, α) ├* (q, λ) – не выполняется.
Если в конечном автомате есть недопустимые состояния, то автомат не минимальный.
M’ получен из M удалением недопустимых состояний, то L(M’) = L(M)
Процедура поиска недопустимых состояний:
S0 = {q0} (список)
Si+1 из Si
q’ ∈ Q
q’ ∈ Si+1 если:
∃ q’’ ∈ Si и ∃ a ∈ A, что σ(q’’,a) = a’
q’ ∉ Sl, l ∈ {0,1…i} не был в предыдущих списках
Sk = ∅ - критерий останова (q’ – недостижима, если q’ ∈ Д или q’ ∈ Q – Д)
Д = k∪i=0 Si – множество достижимых состояний.
Опр: q1, q2 ∈ Q, q1 != q2, α ∈ A* Слово α различает состояния q1 и q2, если
(q1, α) ├* (q3, λ)
(q2, α) ├* (q4, λ)
и одно из состояний q3 и q4 ∈ F, а другое нет.
Опр: q1 и q2 – к-неразличимы, если не ∃ α ∈ A*, |α| ≤ k, которое различает q1 и q2.
q1 ≡k q2 – к-неразличимы.
Опр. Если q1 ≡k q2 для любого k = 0,1… тогда q1 и q2 – неразличимы (т.е. эквивалентые).
q1 ≡ q2
Утв 1. q1 ≡o q2 - о-неразличимы ⇿ q1,q2 ∈ F либо q1,q2 ∉ F.
Утв 2. q1 ≡k q2 ⇿ q1 ≡k-1 q2 и σ(q1,a) = σ(q2,a) для всех a ∈ A.
Лемма: M – конечный автомат, |Q| = n. q1 ≡ q2 ⇿ q1 ≡n-2 q2.
Док-во:
q1 ≡ q2 => для всеъ k = 0,1… q1 ≡k q2
|F| = 0 (пустой язык), |F| = 1 (универсальный язык).
0 < |F| < n
≡ ⊆ ≡n-2 ⊆ ≡n-3 ⊆ … ⊆ ≡1 ⊆ ≡0
≡0 – 2 класса F и Q – F
≡1 != ≡0 => происходит дробление класса (как min 3 класса)
≡2 != ≡1 (как min 4 класса)
≡n-2 != ≡n-3 (как min n классов)
≡n-1 = ≡n-2 (не м: произойти дробление)
≡ != ≡n-1
Стабилизация может произойти и раньше.
Этапы построения min автомата:
Выделить все недостижимые состояния и удалить их.
Разбить множество на классы эквивалентности ≡, пока ≡k = ≡k-1
Только для детерминированных автоматов.