Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
teorya_algoritmov (1).doc
Скачиваний:
6
Добавлен:
17.11.2018
Размер:
922.11 Кб
Скачать
  1. Операторы построения производных рекурсивных функций

Ниже рассмотрим три оператора (операции) получения алгебраических функции из базисных.

  1. Оператором суперпозиции(подстановки) Snm называется операция подстановки в функцию от m переменных m функций от n переменных. (одних и тех же). ,а сопутствующий алгоритм которого: «Значения m –арных функций принять за значения аргументов n–арной функции и вычислить её значение». В этом случае говорят, что m –арная функция получена в результате операции суперпозиции Sn+1 из функций .

Пример.

Функция f(x1,…, xn) возникает из функций h(x1,…, xm), g1(x1,…, xn), …gm(x1,…, xn) суперпозицией, если

f(x1,…, xn)= Snm(h, g1,…, gm) = h(g1(x1,…, xn), …, gm (x1,…, xn)).

Если заданы функции Jnm и операторы Snm, то можно считать заданными всевозможные операторы подстановки функции в функцию, а также переименования, перестановки и отождествления переменных.

Так, если f(x1, x2)= h(g1(x1, x2), g2(x1)), то ее стандартный вид следующий: f(x1, x2)= S22(h(x1, x2), g1 (x1, x2), S12 (J21(x1, x2), g2(x1), g3(x1))), где g3 – любая функция от х1. Если же имеем f(x2, x1, х3, …, xn) и f(x1, x1, x3,…, xn), то пишем:

f(x2, x1, х3, …, xn) = f(J22(x1, x2), J21(x1, x2), х3, …, xn),

f(x1, x1, x3,…, xn)= f(J21(x1, x2), J21(x1, x2), х3, …, xn).

Пример:

  1. Оператором примитивной рекурсии Rn[f1n-1,f2n+1,x1(n)]=fmn называется процесс определения функции f (n+1) переменных через n-местную функцию g и (n+2)- местную функцию h в следующем виде:

f(x1, x2, …, xn, 0)= g(x1, x2,…, xn)

f(x1, x2, …, xn, y+1)=h(x1, x2,…, xn, y, f(x1, x2, …, xn, y)),

где g и h – две различные функции соответственно n и n+2 аргументов.

Эта пара равенств называется схемой примитивной рекурсии. Тот факт, что функция f определена схемой примитивной рекурсии выражается равенством f(x1, x2, …, xn, y)=Rn(g, h). В случае, когда n=0, то есть определяемая функция f является одноместной, схема примитивной рекурсии принимает более простой вид:

f(0)=с, f(у+1)=h(y, f(y)), где с – константа.

Схема примитивной рекурсии определяет f рекурсивно не только через другие функции g и h, но и через значения f в предшествующих точках: значение функции f в точке у+1 зависит от значения функции f в точке у. Очевидно, что для вычисления f(x1,…, xn, k) понадобиться k+1 вычислений по схеме примитивной рекурсии – для у=0, k.

Замечания:

Существенным в операторе примитивной рекурсии Rn является то, что независимо от числа переменных в f рекурсия ведется только по одной переменной у (остальные n переменных x1, x2, …, xn на момент применения схемы примитивной рекурсии зафиксированы и играют роль параметров).

  1. Оператор минимизации (- оператор).

Оператором минимизации  (наименьшего числа оператора) называется преобразование (n+1)-местной функции (в общем случае частичной)  в n-местную f, такую, что для любых х1, х2, …хn, у равенство f(х1, х2, …хn)=у имеет место лишь в том случае, если определены и не равны нулю значения ( х1, …, хn, 0), …, ( х1, …, хn, у-1) и при этом ( х1, х2, …хn, у)=0. Применение оператора минимизации обозначают [, (y)], где у - исчезающий аргумент.

Говорят, что n-местная арифметическая функция f: NnN получается из функции : Nn+1N с помощью -оператора, если выполнено условие: для любых k1, k2,…, kn, kN. f(k1, k2,…, kn)=k, тогда и только тогда, когда для всех l<k значения ( k1, k2,…, kn, l) определены и отличны от нуля, а значение ( k1, k2,…, kn, k) определено и равно нулю.

Если f получается из функции  с помощью оператора наименьшего числа , то пишут: f(x1, x2,…, xn)=y[(x1,…, xn, y)=0].

Важным свойством -оператора является то, что с его помощью из вычислимой функции всегда получается частичная вычислимая функция f. Именно, если имеется алгоритм для вычисления , то значение f(x1, x2,…, xn) может вычисляться следующим образом: вычисляется (x1, x2,…, xn, 0); если процесс вычисления закончился, то есть значение (x1, x2,…, xn, 0) определено, и (x1, x2,…, xn, 0)=0, то полагаем f(x1, x2,…, xn)=0, а если (x1, x2,…, xn, 0)0, то начинают вычислять (x1, x2,…, xn, 1). Если процесс вычисления закончился и (x1, x2,…, xn, 1)=0, то полагают f(x1, x2,…, xn)=1, а если (x1, x2,…, xn, 1)0, то переходят к вычислению (x1, x2,…, xn, 2) и так далее.

Процесс вычисления закончится, если найдется такое у, что для всех z < y значение (x1, x2,…, xn, z) определено и отлично от нуля, а (x1, x2,…, xn, у) определено и равно нулю. Тогда f(x1, x2,…, xn) = у.

Пример:

f(x)=y[12*y-x=0]. Тогда f(x)=x/2 при всех четных значениях хN.

Замечание:

Примитивно-рекурсивные функции всегда определены (имеют значения) для любых значений аргументов. Иначе обстоит дело с функциями, полученными при помощи -оператора. Для некоторых комбинаций значений аргументов они могут быть не определены, потому что исходная функция не принимает нулевых значений.

Пример:

det f(x)=[J21(x, y), (y)].

Полученная функция f(х) обладает следующими свойствами:

f(0)=0, f(k) не существует при k0. Последнее означает, что для заданной функции J21(x, y) -оператор не может построить f(k) kN, так как при x=k функция (x, y)= J21(x, y) ни для какого значения у не будет равной нулю.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]