- •Раздел 1. Формальная теория вычислимости
- •1. Интуитивное определение алгоритма. Примеры алгоритмов
- •2. Способы записи алгоритмов
- •1. Машина Поста
- •2. Нормальные алгорифмы Маркова
- •010 1
- •10 → 00
- •1 → 0
- •2. Не распознаваемость самоприменимости машины Тьюринга
- •1. Примитивно-рекурсивные функции
- •2. Частично-рекурсивные и общерекурсивные функции
- •1. Перечислимые и разрешимые множества
- •2. Перечислимость и вычислимость
- •1. Универсальные функции и множества
- •2. Главные универсальные функции и множества
- •1. Нумерации
- •2. Теорема о неподвижной точке
- •Раздел 2. Формальные языки и грамматики
- •1. Понятие формального языка
- •2. Операции над языками
- •4. Иерархия языков по Хомскому
- •1. Конечные автоматы
- •2. Характеризация праволинейных языков
2. Характеризация праволинейных языков
Теорема 10.2.1. Каждый автоматный язык является праволинейным.
Доказательство. Пусть автоматный язык L(M) определяется конечным автоматом М=<Q, A, D, I, F>, где QA=, и I={q0}. Положим N=Q, S=q0, P={pxq : <p, x, q>D}{p : pF}. Тогда G=<N, A, P, S> – праволинейная грамматика (грамматика типа 3), порождающая язык L(M).
Теорема доказана.
Теорема 10.2.2. Каждый праволинейный язык является автоматным.
Доказательство. Без ограничения общности можно считать, что праволинейный язык L задан праволинейной грамматикой, не содержащей правил вида Tu, где uA+. Положим:
Q=N, I={S}, F={TN: (T)P}, D={<T, u, B> : (TuB)P}.
Тогда конечный автомат М=<Q, A, D, I, F> порождает такой язык L(M), что L=L(M).
Теорема доказана.
Пример 10.2.1. Праволинейный язык
L={w{a, b}*: wamod 2=0, wbmod 2=0}
порождается грамматикой G=<N, A, P, S>, где N={S, T, E, F}, A={a, b}, P={SaT, SbE, S, TaS, TbF, EaF, EbS, FaE, FbD}.
Диаграмма переходов конечного автомата M3, порождающего этот же язык имеет вид:
Рис. 10.2.1. Диаграмма конечного автомата М3
Определение 10.2.1. Праволинейная грамматика, в которой каждое правило имеет вид T, Ta, TaU, где T, UN, aA, называется праволинейной грамматикой в нормальной форме (автоматной грамматикой, регулярной грамматикой).
Теорема 10.2.3. Каждая праволинейная грамматика эквивалентна некоторой праволинейной грамматике в нормальной форме.
Теорема 10.2.4. Класс праволинейных языков замкнут относительно итерации, конкатенации и объединения.
Теорема 10.2.5. Класс праволинейных языков замкнут относительно дополнения и пересечения.
Теорема 10.2.6. Пусть L – праволинейный язык над алфавитом А. Тогда найдется такое натуральное p>0, что для любого слова wL wp можно подобрать слова x, y, zA*, для которых справедливы соотношения:y, xyp, xyz=w, xyizL (для всех i0).
Пример 10.2.2. Пусть язык L={abnan: n0} задан над алфавитом A={a, b}.
Пусть p – произвольное натуральное число. Положим w=abpap.
Если положить x=, то возможны следующие варианты:
y |
Z |
w |
xyyz |
a |
bpap |
xyz |
aabpapL |
abk(0<k<p) |
bp-kap |
xyz |
abkabpapL |
abp |
ap |
xyz |
abpabpapL |
abpak(0<kp) |
ap-k |
xyz |
abpak+1bpapL |
Как видно из приведенной таблицы, при любом натуральном p и x= слово xyyzL. С помощью аналогичных выкладок можно придти к выводу о том, что при любом натуральном p и при x=a слово xyyzL. Этот же вывод оказывается верен и при x=abk, x=abpak. В свою очередь, это означает, что условие теоремы 10.2.6 не выполняется, а потому язык L не является автоматным.
Лекция № 11. Контекстно-свободные языки
1 Степанов А.Н. Информатика: Учебник для вузов. 4-е изд. – СПб.: Питер, 2005. – С. 41.
1Этой теории будут посвящены следующие лекции.
1В теории нормальных алгорифмов пустое слово обозначается символом .
2 – подслово слова .
1В ряде источников, например в [], стандартным считается то положение, при котором головка «обозревает» ячейку, в которой записана первая буква слова, т.е. крайне левую ячейку.
1 Здесь и далее в соответствии с тезисами теории алгоритмов под вычислимыми функциями подразумеваются частично рекурсивные функции. Соответственно под всюду определенными вычислимыми функциями – общерекурсивные функции.
2 Эти программы могут, например, располагаться в порядке возрастания их длины.
1 Если в классе А отсутствует нигде не определенная функция, то можно взять произвольную функцию из класса А, а нигде не определенную функцию из его дополнения.
2Не тривиальным в том плане, что класс всех вычислимых функций разбивается на два непустых подкласса функций, обладающих и не обладающих этим свойством.