Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Матлог_лекции.doc
Скачиваний:
1
Добавлен:
01.03.2025
Размер:
730.62 Кб
Скачать

Нормальные алгоритмы Маркова

Алфавит – любое непустое множество символов – А.

Слово – запись вида a1, a2,... ap, где aiA.

Слово P входит в Q, если Q имеет вид Q= α12, где α1, α2-слова, возможно пустые. Нормальным алгоритмом над алфавитом А называется пара (В,S), где АВ, но В – не содержит символов ‘’ и ‘.’, а S – некоторая нормальная схема подстановок над алфавитом В.

di –символ: пустое место или ‘.’; Рi, Qi – слова.

Запись P1→Q1 означает, что какой-то фрагмент алфавита Р заменяется на какой-то фрагмент Q. Запись P1.Q1 – заключительная формула подстановки.

При работе нормального алгоритма над словом рассматриваются все левые части формул схемы подстановок сверху вниз, и самое первое вхождение, найденное в левой части заменяется правой частью соответствующей формулы. Говорят, что алгоритм применим к слову А:

  1. Если на каком-то шаге используется заключительная формула подстановки;

  2. Если на некотором этапе ни одна из левых частей формулы схемы подстановок не входит в данное слово.

Пример: Построить нормальный алгоритм , применимый ко всем словам x1, x2,..., xn в алфавите {a,b} и переводящий их в слово α= .

Проверим работу этого алгоритма над словами abba и baba.

  1. abba→ αabba→ aβbba→ abδba→ abbδa→ abbaδ→ abbabb;

  2. 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.

Рекурсивные функции.

Исходными функциями называются функции вида:

  1. 0(x)0 – нулевая функция;

  2. S(x)=x+1 – функция следования;

  3. - проектирование или выбор аргумента.

Операции над исходными функциями:

  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 – раз.

  1. Примитивная рекурсия. Пусть даны 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)) – схемы примитивной рекурсии.

Функция называется примитивно-рекурсивной, если она может быть получена из исходной функции с помощью применения конечного числа раз операции суперпозиции и примитивной рекурсии.

Пример: докажем примитивную рекурсивность некоторых функций.

  1. const – все примитивно-рекурсивные функции: C(x1...xn)=S(...S( ))c – раз – получим константу C;

  2. Сумма 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);

  1. Произведение f(x1,x2)=x1x2:

f(x1,0)=g(x1)=0=О(x1);

f(x1,y+1)=h(x1,y,x1y)=x1(y+1)=x1y+x1, где h(x,y,z)=I33(x,y,z)+I13(x,y,z); т.к. сумма примитивно-рекурсивна, то и произведение тоже.

  1. Показательно – степенная функция f(x1,x2)=x1x2 и x1>0:

f(x1,0)=1=const (примитивно-рекурсивна);

f(x1,y+1)=x1yx1=h(x1,y,x1y), где h(x,y,z)=I33(x,y,z)I13(x,y,z), т.к. произведение примитивно-рекурсивно, то и показательно – степенная функция тоже примитивно-рекурсивна.