- •1 Автоматы с магазинной памятью (стековый автомат). Конфигурация. Языки распознаваемые автоматом с магазинной памят
- •2 Автомвты с магазинной памятью с однобуквенными переходами.
- •3 Алгоритм нахождения регулярного выражения для языка распознаваемого детерминированным конечным автоматом.
- •4 Деление контекстно-свободных языков.
- •5 Детерминированный конечный автомат. Языки распознаваемые детерминированным автоматом. Примеры.
- •6 Инварианты контекстно-свободных языков.
- •7 Классы грамматик. Понятие контекстно-свободная граматика (cfg).
- •8 Конечные автоматы и регулярные выражения.
- •9 Конечные автоматы. Детерминированный конечный автомат. Конфигурация.
- •10 Конечные представления языков. Регулярные выражения и регулярные языки.
- •11 Лемма о расрастании (pumping lemma) контекстно-свободных грамматик.
- •12 Метод перевода контекстно-свободных грамматик (cfg) на автоматы со стеком.
- •13 Минимизация числа состоянии для конечных автоматов. Примеры.
- •14 Недтерминированный конечный автомат. Языки распознаваемые недетерминированным автоматом.
- •16 Основные виды бинарных отношений. Рефлексвное и транзитивное замыкание.
- •17 Пересечение и дополнение контекстно-свободных языков.
- •18 Пересечение контекстно-свободного языка с автоматным языком.
- •19 Понятие языка и алфавита, операции над языками.
- •21 Свойсва контекстно-свободных языков (cfl). Примеры. Теорема о контекстно-свободном языке.
- •22 Свойства замкнутости класа контекстно-свободных языков.
- •23 Свойства замкнутости класса линейных языков.
- •24 Свойства замкнутости регулярных языков.
- •25 Теорема Майхилла-Нероуда.
- •26 Теорема о накачке (pumping).
- •27 Теорема о разрастании (накачке - pumping) для (cfl) контекстно-свободных языков.
- •28 Теорема о существовании эвивалентных автоматов.
- •29 Характеризация контекстно-свободных грамматик. Взаимо связь между автоматами со стеком и контекстно-свободными граматиками.
- •30 Языки, не являющиеся регулярными. Примеры. Два свойства регулярных языков.
27 Теорема о разрастании (накачке - pumping) для (cfl) контекстно-свободных языков.
Пусть L — контекстно-свободный язык над алфавитом Σ. Тогда найдётся такое натуральное число p, что для любого слова w ∈ L длины не меньше p найдутся слова u, v, x, y, z ∈ Σ∗, для которых верно uvxyz = w, vy ≠ ε (то есть v ≠ ε или y ≠ ε), |vxy|≤p и uvixyiz ∈ L для всех i ∈ N. Доказательство. Пусть язык L порождается грамматикой в нормальной форме Хомского G = <N,Σ, P, S>. Индукцией по k легко доказать, что для любого дерева вывода в грамматике G длина кроны дерева не превышает 2k−2, где k — количество вершин в самом длинном пути, начинающемся в корне дерева и заканчивающемся в некоторой вершине, помеченной символом из Σ. Положим p = 2|N|. Пусть w ∈ L и |w| ≥p. Зафиксируем некоторое дерево вывода с кроной w в грамматике G. Рассмотрим самый длинный путь в этом дереве. Этот путь содержит не менее |N|+2 вершин. Среди них найдутся две вершины с одинаковыми метками, причём их можно выбрать среди последних |N| + 2 вершин рассматриваемого пути. Выберем слова u, v, x, y и z так, что uvxyz = w, поддерево с корнем в одной из найденных вершин имеет крону x и поддерево с корнем в другой найденной вершине имеет крону vxy. Из того что G — грамматика в нормальной форме Хомского, заключаем, что vxy ≠ x. Неравенство |vxy| ≤ 2|N| следует из того, что самый длинный путь в соответствующем слову vxy поддереве содержит не более |N|+2 вершин. Для каждого i ∈ N можно построить дерево вывода с кроной uvixyiz, комбинируя части исходного дерева вывода.
28 Теорема о существовании эвивалентных автоматов.
Теорема: Для каждого НДА существует эквивалентный ДКА. Д/во: Пусть M = <K, Σ, ∆, s, F> - НДА. хотим сконструировать ДКА M = <K', Σ', δ, s', F'>, эквивалентный M. если M имеет пять состояний {q0, . . . , q4} и после прочтения некоторого слова может оказаться в состояниях q0, q2 или q3, но не q1 или q4, то в качестве его текущего состояния надо рассматривать множество {q0, q2, q3}, а не неопределенный элемент этого множества. И если следующий вводимый символ может перевести M из q0 в q1 или q2, из q2 в q0, а из q3 в q2, то в качестве следующего состояния M следует рассматривать множество {q0, q1, q2}. Мн-вом состояний M будет K' = 2^k мн-во подмн-в мн-ва состояний M . Мн-во конечных состояний M будет состоять из тех подмн-в K , которые содержат хотя бы одно конечное состояние M . Определение функции перехода для M' будет немного более сложным. Базовая идея заключается в том, чтобы машина M при чтении символа a ∈ Σ имитировала бы действие машины M при чтении символа a, возможно, следующего после любого количества срабатываний M при вводе пустого слова. Для любого состояния q ∈ K будем обозначать через E(q) множество всех состояний M, которые достижимы из состояния q без чтения ввода. То есть, E(q) = {p ∈ K|<q, e> |-∗M <p, e>}. Таким образом, E(q) может быть вычислено по следующему алгоритму: изначально полагаем E(q) := {q}; while существует переход <p, e, r> ∈ ∆ с p ∈ E(q) и r ∉ E(q) do E(q) := E(q) ∪ {r}; Каждое выполнение цикла while добавляет еще одно состояние к E(q), и их не может быть добавлено больше, чем имеется всего состояний, поэтому данный алгоритм заканчивает работу самое большее после |K| итераций.
