| ||||||
---|---|---|---|---|---|---|
|
| |||||
|
Лекция 10. Типы рекурсивных
функций Функция f называется примитивно-рекурсивной11, если она является одной из простейших функций10 s, C10, Jnm или может быть получена из простейших функций с помощью конечного числа операторов подстановки и примитивной рекурсии. Определение примитивно-рекурсивной функции — индуктивное: определены исходные примитивно-рекурсивные функции s, C10, Jnm и даны правила построения любых других примитивно-рекурсивных функции. Операторы подстановки и примитивной рекурсии, примененные ко всюду определенным функциям, дают также всюду определенные функции, поэтому все примитивно-рекурсивные функции всюду определенные. Пример 6. Показать, что n-местная функция-константа является примитивно-рекурсивной. Действительно Can(x1,…, xn)=s(s(…s(C01(J1n(x1,…, xn))))…)), где s(x)=x+1. Таким образом, функция Са выражается с помощью подстановок через примитивно-рекурсивные функции s, С10 , Jn1 и, следовательно, является примитивно-рекурсивной. Пример 7. Функция f (х, у)=х+у может быть построена по схеме примитивной рекурсии: f(x, 0)=x=J11(x), f(x, y+1)=s(f(x, y))=h(x, y, z), т. е. f(x, у) возникает примитивной рекурсией из примитивно-рекурсивных функций g(x)=J11(x) и h(x, у, z)=s(z). Пример 8. Назовем сложение, умножение и возведение в степень соответственно действиями нулевой, первой и второй ступеней и обозначим соответственно Р0(х,у)=х+у, Р1(х,у)=ху, Р2{х,у)=хy. Нетрудно заметить, что при n = 1, 2 Pn(x,0)=g(x), где g(x) =0 при n=1 и g(x) =1 при п=2, Pn(x,y+1)=Pn-1(x, Рп(х,y)). Отсюда видно, что функция Рn(х, у) (п =1,2) возникает примитивной рекурсией из функций g(x) и h (х, у, z)=Pn-1 (х, z). Следовательно, функции P1 и P2 — примитивно-рекурсивные. Можно продолжить эту последовательность функций в сторону высших ступеней, полагая (при п =2, 3, ...) Pn(x,0)=1, Pn(x,y+1)=Pn-1(x,Pn(x,y)). Например, функция третьей ступени имеет вид: P3(x, 0)=1, P3(x, 1)=x, P3(x, 2)=xx, P3(x, 3)=x, ……………,
Все функции Рn(х, у) являются примитивно-рекурсивными. Нетрудно показать, что примитивно-рекурсивными являются следующие функции12: Усеченная разность xy= Абсолютная величина разности
Знак x Sg x= Функция x= Представление примитивно-рекурсивной функции с помощью операторов подстановки и примитивной рекурсии, примененных к функциям s, C10, Jnm, по существу определяет способ вычисления значений функции. Поэтому доказательство примитивной рекурсивности какой-либо функции является одновременно доказательством существования алгоритма вычисления функции. Функция f называется частично-рекурсивной13, если она может быть получена из функций s, C01, Jmn с помощью конечного числа операторов подстановки, примитивной рекурсии и минимизации. Из определения вытекают следующие свойства частично-рекурсивных функций. 1. Каждая примитивно-рекурсивная функция является также и частично-рекурсивной. 2. Класс частично-рекурсивных функций шире класса примитивно-рекурсивных функций, так как все примитивно-рекурсивные функции всюду определенные, а среди частично-рекурсивных функций есть функции, не всюду определенные. Например, функции Sg-1, s-1 или нигде не определенная функция f (х) = m z(х +1 + z = 0). Примеры частично-рекурсивных функций. 1. Частичная функция х—у может быть представлена в виде x – y = m z(y+z=x), а функция у+г является примитивно-рекурсивной, следовательно, функция х – y - частично-рекурсивная. 2. Функция x/y = m z(yz=x) , где yz - примитивно-рекурсивная функция; следовательно, функция x/y - частично-рекурсивная. 3. Пусть f(x) - примитивно-рекурсивная функция и пусть a1, …, an — некоторые натуральные числа. Тогда g(x)=f(x)-- -…- — частично-рекурсивная функция, совпадающая с функцией f(х) всюду, кроме точек x= a1, …, an, в которых g(x) может быть не определена. Понятие частично-рекурсивной функции является одним из основных понятий теории алгоритмов. Какие бы классы алгоритмов до сих пор не строились, во всех случаях оказывалось, что числовые функции, вычисляемые посредством этих алгоритмов, были частично-рекурсивными. Поэтому общепринятым является тезис Черча относительно частично-рекурсивных функций: класс алгоритмически вычислимых частичных числовых функций совпадает с классом всех частично-рекурсивных функций. Для каждой частично-рекурсивной функции f существует вычислительный процесс, посредством которого любое натуральное число х перерабатывается в значение f(х) функции f. Этот процесс не дает определенного результата, тогда и только тогда, когда значение функции f в точке х не определено. Рассмотрим способ получения всюду определенных частично-рекурсивных функций. Введем оператор слабой минимизации Мl следующим образом: Mlf= Функции14, которые можно получить из простейших функций s, C10, Jnm применением конечного числа операторов подстановки, примитивной рекурсии и слабой минимизации, называются общерекурсивными. Так как операторы R, Ml, Sl, примененные ко всюду определенным функциям либо ничего не дают, либо дают снова функции, всюду определенные, то все общерекурсивные функции - всюду определенные. Если результат применения оператора слабой минимизации определен, то он совпадает с результатом применения оператора обычной минимизации. Поэтому общерекурсивные функции являются всюду определенными частично-рекурсивными функциями; верно и обратное: каждая всюду определенная частично-рекурсивная функция — общерекурсивна. | |||||
|