- •1. Алгоритм и его характеристики
- •2. Вычислимые функции и их графики
- •3.Разрешимые и перечислимые множества. Критерий разрешимости множества
- •4.Рекурсивные функции и операторы. Примеры
- •5. Машина Тьюринга и её программа. Машина Тьюринга как алгоритм
- •6. Эффективная нумерация машин Тьюринга
- •7. Неразрешимые алгоритмические проблемы
- •8. Детерминированные конечные автоматы и их работа. Диаграмма и функция переходов. Расширенная функция переходов. Язык дка
- •9. Недетерминированные конечные автоматы и их работа. Диаграмма и отношение переходов. Язык нка
- •10. Недетерминированные конечные автоматы с ε-переходами и их работа. Язык ε-нка
- •11. Языки. Операции над языками
- •12. Регулярные выражения и их свойства. Язык регулярного выражения
- •13. Регулярные выражения и дка
- •14. Свойства регулярных языков. Лемма о накачке. Замкнутость регулярных языков
- •15. Контекстно-свободные грамматики, порождения цепочек, язык грамматики
- •16. Замкнутость и разрешимость кс-языков
- •17. Полезные, порождающие и достижимые символы кс – грамматики. Нормальная форма Хомского кс-грамматики
- •18. Приведение кс-грамматики (контекстно-свободной) к нфх - грамматике (нормальной форме Хомского)
- •19. Автоматы с магазинной памятью и их работа. Конфигурация мп-автомата и его язык, вычисление.
- •21. Эффективная нумерация машин Тьюринга. Язык диагонализации и универсальный язык. Эффективная нумерация машин Тьюринга
- •22. Рекурсивный и рекурсивно-перечислимые языки. Иерархия языков по Хомскому
- •23. Временная сложность машин Тьюринга. Классы p и np языков и связь между ними
10. Недетерминированные конечные автоматы с ε-переходами и их работа. Язык ε-нка
Опр. Недетерминированный конечный автомат с переходами по пустому слову – это НКА, который реагирует на пустое слово.
Формально – это
- некоторое конечное множество состояний;
- алфавит, конечное множество.
- начальное состояние.
- множество заключительных состояний
То есть то же самое что и для НКА, кроме одного: отношение
Появится лишняя строка, т.к. добавляется пустое слово.
Σ Q |
|
|
|
0 |
|
1 |
|
- НКА.
- замыкание состояния . Это множество состояний, в которое переходит автомат, воспринимая пустое слово. Обозначается . Может быть пустым, разным. Это множество
1). Оно содержит состояние обязательно:
2). Если какое-то состояние и есть переход из состояния р по пустому слову ε в состояние r, то .
;
;
;
;
;
.
В общем виде: - расширенная функция перехода
1). =
2).
Опр. Язык ε-НКА - это множество всех цепочек, прочитав которые автомат попадает в заключительное состояние.
Теорема. Язык допускается некоторым - НКА когда он допускается ДКА.
Доказательство:
. Построим по данному НКА, ДКА с тем же самым языком (НКА). Для этого надо объединить состояния. Объединение множества состояний НКА называется конструкцией подмножества, то есть надо выделить все подмножества (строим булеан Q), всего их будет .
Затем разрешаем переход по пустому слову для каждого состояния.
|
А |
В |
С |
D |
Е |
F |
H |
G |
|
|
{q0 } |
{q1 } |
{q2 } |
{q0, q1} |
{q1, q2} |
{q0, q2} |
{q0, q1, q2} |
0 |
|
{q0, q1} |
|
|
{q0, q1} |
|
{q0, q1} |
{q0, q1} |
1 |
|
{q0 } |
{q2 } |
|
{q0, q2} |
{q2 } |
{q0 } |
{q0, q2} |
ε |
|
|
|
|
|
|
|
|
. Есть - НКА), и ДКА
1). Множество состояний ДКА - булеан состояний
2). Стартовым состоянием ДКА будет
3). Множество допускающих состояний:
Как строится функция для всех и ?
Если - множество состояний и
Ч.т.д.
язык НКА.
которые автомат приходит в одно из заключительных состояний называется языком НКА.
Автомат, имея допустимую цепочку, может и не попасть в заключительное состояние.
11. Языки. Операции над языками
Опр. Цепочкой (словом) в данном алфавите называется конечная последовательность символов этого алфавита.
- пустая цепочка (цепочка, которая не содержит ни одного символа). Пустое слово принадлежит любому алфавиту.
Если цепочка непустая, например, w = a1a2a3 ak, то возникает понятие длины цепочки - число символов в ней. =k.
Пусть Σ – алфавит.
Опр. Степень алфавита – множество цепочек алфавита Σ длины k.
Σk = {w \ |w| = k}
Σ0 = {ε}
Σ = {0, 1}
Σ1 = {0, 1} ≠ Σ, Σ – множество элементов, Σ1 – множество однобуквенных слов.
Опр. Σ* - множество всех слов данного алфавита.
Σ+ - множество собственных слов не нулевой длины.
Σ+ =
Σ* =
Над множеством слов данного алфавита можно производить некоторые действия:
x = a1a2a3 ak, y = b1b2b3 bl.
Опр. x∙y = xy – конкатенация цепочек х и у. Это цепочка, полученная ху = a1a2a3 akb1b2b3 bl.
ху ≠ ух – конкатенация цепочек ху не совпадает с конкатенацией цепочек ух.
хх = хх или εх = хε
Когда строим слова, не обязательно использовать все символы алфавита.
Опр. Множество цепочек алфавита , каждая из которых принадлежит (множество всех слов данного алфавита), называется языком над этим алфавитом.
L(Σ) = {w\ w }
Если L – некоторый язык над каким-то алфавитом Σ, то L язык над , где Σ , т.к. если мы расширяем язык Σ, то слова Σ будут и словами Σ’.
Язык – это какое-то подмножество Σ.
Как задается язык?
1. язык можно задать, перечислив все его слова (если язык небольшой).
2. задать это множество с помощью характеристического свойства (регулярное выражение).
Регулярным называется язык, на котором можно построить автомат, допускающий все его цепочки.
Операции над языками:
1). Объединением языков и называется язык , цепочками которого являются цепочки как языка L, так и языка М.
2). Конкатенация языков – это язык, который обозначается , цепочки которого представляют собой конкатенацию цепочек языка и языка
3). Итерацией языка называется язык L*, цепочки которого можно получить с помощью конкатенации цепочек языка L (можно и повторять).
Пример:
1).
- цепочки, состоящие из нулей и единиц, хаотично.
2).
- цепочки, состоящие из нулей и четного числа единиц