
- •Теория множеств Основные понятия
- •Способы задания множеств
- •Декартово произведение и векторы
- •Соответствия
- •Отношения
- •Разбиения
- •Факторизация отображения
- •Отношения порядка
- •Теория алгоритмов. Понятие алгоритма.
- •Машина Тьюринга.
- •Числовая функция
- •Кодировка машин Тьюринга.
- •Алгоритмически неразрешимые проблемы.
- •Проблема применимости.
- •Нормальные алгоритмы Маркова
- •Рекурсивные функции.
- •Операция минимизации.
- •Предикаты Основные понятия
- •Операции над предикатами
- •Предикатные формулы.
- •Основные понятия
- •Функции k-значной логики.
- •Законы Моргана:
- •Формальные теории Основные понятия
- •Свойства вывода из гипотез
- •Классическое исчисление высказываний
Нормальные алгоритмы Маркова
Алфавит – любое непустое множество символов – А.
Слово – запись вида a1, a2,... ap, где aiA.
Слово P входит в Q, если Q имеет вид Q= α1Pα2, где α1, α2-слова, возможно пустые. Нормальным алгоритмом над алфавитом А называется пара (В,S), где АВ, но В – не содержит символов ‘’ и ‘.’, а S – некоторая нормальная схема подстановок над алфавитом В.
di
–символ: пустое место или ‘.’;
Рi, Qi
– слова.
Запись P1→Q1 означает, что какой-то фрагмент алфавита Р заменяется на какой-то фрагмент Q. Запись P1→.Q1 – заключительная формула подстановки.
При работе нормального алгоритма над словом рассматриваются все левые части формул схемы подстановок сверху вниз, и самое первое вхождение, найденное в левой части заменяется правой частью соответствующей формулы. Говорят, что алгоритм применим к слову А:
Если на каком-то шаге используется заключительная формула подстановки;
Если на некотором этапе ни одна из левых частей формулы схемы подстановок не входит в данное слово.
Пример: Построить нормальный алгоритм
, применимый ко всем словам x1,
x2,..., xn
в алфавите {a,b}
и переводящий их в слово α=
.
Проверим работу этого алгоритма над словами abba и baba.
abba→ αabba→ aβbba→ abδba→ abbδa→ abbaδ→ abbabb;
baba→αbaba→ bβaba→ bγba→ bγa→ bγ→ b.
;
N0
= {0,1,...n}
(x1, x2,..., xn) = 1x1+1*1x2+1*...*1xn+1; (1)
Говорят, что функция f(x1.. xn) вычислима по Маркову, если существует такой нормальный алгоритм, который любой набор аргументов вида (1) преобразует в значение функции на этом наборе. Функция f(x1, x2,..., xn) вычислима по Маркову, если существует алгоритм, применимый к любому слову вида 1x1+1*1x2+1*…*1xn+1, переводящий его в слово 1y+1, где y= f(x1, x2,..., xn).
Пример: Построить нормальный алгоритм для вычисления функции f(x,y)=x+3y;
Проверим для f(2,1): 111*11→111111*1→111111111*→111111. Таким образом, f(2,1)=5.
Рекурсивные функции.
Исходными функциями называются функции вида:
0(x)0 – нулевая функция;
S(x)=x+1 – функция следования;
- проектирование или выбор аргумента.
Операции над исходными функциями:
Суперпозиция. Пусть даны
f(x1... xn);
g1(y1... yk);
g2(y1... yk);
...
gn(y1... yk).
Тогда h(y1...yn)=f (g1,g2,…,gn). Говорят, что h получается с помощью суперпозиции функций gi. Причем значения h будем считать определена только на тех наборах аргументов, на которых каждая из gi и f определены при данных наборах аргументов. Любую константу можно получить только из исходной с помощью суперпозиции k(x)=S(...S(O(x)))k – раз.
Примитивная рекурсия. Пусть даны g(x1... xn-1), f(x1... xn), h(x1... xn-1). Будем говорить, что функция f получена из g и h с помощью примитивной рекурсии, если выполняются следующие соотношения:
f(x1... xn-1,0)=g(x1... xn-1);
f(x1... xn-1,y+1)=h(x1... xn-1,y,f(x1... xn-1,y)) – схемы примитивной рекурсии.
Функция называется примитивно-рекурсивной, если она может быть получена из исходной функции с помощью применения конечного числа раз операции суперпозиции и примитивной рекурсии.
Пример: докажем примитивную рекурсивность некоторых функций.
const – все примитивно-рекурсивные функции: C(x1...xn)=S(...S(
))c – раз – получим константу C;
Сумма f(x1,x2)=x1+x2:
g(x1)=f(x1,0)=x1=I11(x1);
f(x1,y+1) =h(x1,y,f(x1,y))=h(x1,y,x1+y) =x1+y+1, где h(x1,x2,x3)=S(I33(x1,x2,x3));
x1+x2=f(x1,x2); g(x1)f(x1,0)=g(x1);
Произведение f(x1,x2)=x1x2:
f(x1,0)=g(x1)=0=О(x1);
f(x1,y+1)=h(x1,y,x1y)=x1(y+1)=x1y+x1, где h(x,y,z)=I33(x,y,z)+I13(x,y,z); т.к. сумма примитивно-рекурсивна, то и произведение тоже.
Показательно – степенная функция f(x1,x2)=x1x2 и x1>0:
f(x1,0)=1=const (примитивно-рекурсивна);
f(x1,y+1)=x1yx1=h(x1,y,x1y), где h(x,y,z)=I33(x,y,z)I13(x,y,z), т.к. произведение примитивно-рекурсивно, то и показательно – степенная функция тоже примитивно-рекурсивна.