- •Теория алгоритмов. Общие положения.
- •Исходные понятия теории алгоритмов.
- •Свойства и параметры алгоритма:
- •Основная гипотеза теории алгоритмов.
- •Формальные модели, уточнение понятия алгоритм.
- •Блок-схемы детерминированных алгоритмов.
- •Алгоритмический язык
- •Алгоритмическая система а.Тьюринга.
- •Разрешимость и неразрешимость языков машиной Тьюринга
- •Проблема остановки машины Тьюринга
- •Алгоритмическая система а.Чёрча
- •Базисные функции
- •Операторы построения производных рекурсивных функций
- •Примитивно-рекурсивные функции.
- •Алгоритмическая система а.А.Маркова.
- •Ассоциативное исчисление
- •Алгоритмически неразрешимые проблемы.
- •Теоремы алгоритмически разрешимых и неразрешимых проблем. Теоремы Геделя.
- •Теорема о неполноте
- •Теорема о полноте
- •Словарь основных терминов.
- •Теорема о неполноте:
- •Теорема о полноте
-
Операторы построения производных рекурсивных функций
Ниже рассмотрим три оператора (операции) получения алгебраических функции из базисных.
-
Оператором суперпозиции(подстановки) 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).
Пример:
![]()
-
Оператором примитивной рекурсии 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 на момент применения схемы примитивной рекурсии зафиксированы и играют роль параметров).
-
Оператор минимизации (- оператор).
Оператором минимизации (наименьшего числа оператора) называется преобразование (n+1)-местной функции (в общем случае частичной) в n-местную f, такую, что для любых х1, х2, …хn, у равенство f(х1, х2, …хn)=у имеет место лишь в том случае, если определены и не равны нулю значения ( х1, …, хn, 0), …, ( х1, …, хn, у-1) и при этом ( х1, х2, …хn, у)=0. Применение оператора минимизации обозначают [, (y)], где у - исчезающий аргумент.
Говорят, что n-местная арифметическая функция f: NnN получается из функции : Nn+1N с помощью -оператора, если выполнено условие: для любых k1, k2,…, kn, kN. 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) не существует при k0. Последнее означает, что для заданной функции J21(x, y) -оператор не может построить f(k) kN, так как при x=k функция (x, y)= J21(x, y) ни для какого значения у не будет равной нулю.
