Математическая логика и ТА (Рудаков С.А
.).pdfалгоритма, ‒ вычислимой функцией. Таким образом, вычислимая функция ‒ это такая функция, для которой существует вычисляющий ее значения алгоритм.
3.2 Рекурсивные функции
Функцию f : X→Y будем называть частичной, если она определена не для каждого значения х X. Множество тех х X, для которых однозначно указано соответствующее значение функции f, называется областью определения функции.
Ограничимся только функциями f :N → N, где N ‒ множество
натуральных чисел.
3.2.1 Примитивно рекурсивные функции
Введем следующие функции:
s1(x) = x+1, on(x1,…,xn) = 0,
Imn(x1, ..., xn) = xm (1 m n; n = 1, 2, ...),
называемые далее простейшими.
Пусть даны частичные функции g : N n → N и h : N n+2 → N.
Говорят, что частичная функция f : N n+1 → N получена из функций
g, h примитивной рекурсией, если |
|
f(x1,...,xn,0) = g(х1,...,хп), |
|
f(x1,..., хn, у + 1) = h(x1,..., хn,у, f(x1,..., хn, у)). |
(1) |
Для n = 0 уравнения (1) принимают вид (g= const = a) |
|
f(0) = а, f(x+l)=h(x, f(x)). |
(2) |
Как видно из этих уравнений, задав исходные данные (x1,...,xn,0), можно шаг за шагом найти значения функции для (x1,...,xn, 1),( x1,...,xn, 2),...,( x1,...,xn,, m),...
Символически задание f через примитивную рекурсию можно записать
как
f = (g, h).
41
Частичная функция f : N n+l → N называется примитивно рекурсивной относительно множества частичных функций , если f получается из функций множества и простейших функций конечным числом операций подстановки (суперпозиции) и примитивной рекурсии.
Если = , то примитивно рекурсивная относительно множества частичных функций функция получается только из простейших функций и поэтому ее называют просто примитивно рекурсивной.
Нетрудно понять, что примитивно рекурсивные функции являются всюду определенными функциями.
Пример 1. Функция f(x,y) = х + у примитивно рекурсивна.
В самом деле,
f(x,0) = x + 0 = x = I11(x),
f(x, у + 1) = х + (у + 1) = (х + у) + 1 = s(x + у) = s(f(x, у)).
Это означает, то функция х + у строится из примитивно рекурсивных функций
I11,h{x, y,z) = z + 1 = sl(z) с помощью примитивной рекурсии.
Поэтому х + у примитивно рекурсивная функция.
Операции подстановки и примитивной рекурсии, примененные к всюду определенным функциям, дают в результате всюду определенные функции.
Все примитивно рекурсивные функции всюду определены.
|
Упражнения. |
1. |
Доказать, что следующие функции примитивно рекурсивны. |
a) |
f(x,y) = х * у (g(x)=o(x), h(x,y,z)=z+x) |
b) |
f(x,y) = х у (g(x)=1, h(x,y,z)=z*x) |
c)f(x)=x!
d)Функция (сигнум или знак x) sg (x), где
0 если x=0
sg (x)=
1 если x>0
sg(0)=0, sg(x+1)=1
42
e) Функция sg1( x)= 1- sg (x), определена так
sg1( x)= |
1 |
если x=0 |
|
|
|
||
0 |
если x>0 |
||
|
|||
|
|
|
sg1(0)=1, sg1(x+1)=0
f)Функция x-y является частичной двуместной функцией от x, y
определенной для x ≥ y, определена так
x y= |
x-y |
если x ≥ y |
|
|
|
||
0 |
если x < y |
||
|
|||
|
|
|
g)f(x,y) = |х – у|
h)f(x,y) =max(х, у)
i)f(x,y) =min(х, у)
3.2.2. Операция минимизации
Пусть дана частичная функция f : N n → N. Фиксируем данные x1,...,xn-1
для первых n-1 аргументов и рассмотрим уравнение
f(x1,...,xn-1,y) = хn |
(1 ) |
Чтобы найти решение y (натуральное) |
этого уравнения, будем |
вычислять при помощи некоторого заведомо существующего «механизма»
последовательно значения f(x1,...,xn-1,y) для |
y=0, 1, 2, … Наименьшее |
|
значение a для которого получится |
|
|
|
f(x1,...,xn-1, a) = хn |
|
обозначим через |
|
|
|
µy(f(x1,...,xn-1,y) = хn) |
(2) |
|
Описанный выше процесс будет продолжаться бесконечно в |
|
следующих случаях: |
|
|
a) |
значение f(x1,...,xn-1,0) не определено; |
|
b) |
значения f(x1,...,xn-1, y) для y=0, 1, 2, …, a-1 |
определены, но отличны от |
|
хn , а значение f(x1,...,xn-1, a) не определено; |
|
c)значения f(x1,...,xn-1, y) определены для всех y=0, 1, 2, … и отличны от хn.
43
Во всех этих случаях значение выражения (2) считается неопределенным. В
остальных случаях описанный процесс обрывается и дает наименьшее решение y = a уравнения (1).
Введем функцию
Мf(x1,...,xn) =min{y N: f(x1,...,xn-1,) = хn }.
3.2.3. Частично рекурсивные функции
По существу, М ‒ это операция на множестве частичных функций.
Результатом является новая частичная функция с тем же числом аргументов.
Назовем эту операцию минимизацией.
Пример 2. Функция
x 1 x 0, g(x) не определено, x 0
— частично рекурсивна.
Действительно,
g(х) = Ms1(x) = min{s1(y) = у + 1 = х}, где y N.
Следовательно, g получена из простейшей функции s1 с помощью операции минимизации.
Частичная функция f : Nn+l → N называется частично рекурсивной относительно множества частичных функций , если f получается из функций множества и простейших функций конечным числом операций подстановки (суперпозиции), примитивной рекурсии и минимизации.
Если = , то частично рекурсивная относительно множества частичных функций функция получается только из простейших функций, и
поэтому ее называют просто частично рекурсивной.
Каждая примитивно рекурсивная функция является частично рекурсивной. Обратное неверно, поскольку в класс частично рекурсивных функция в соответствии с определением попадают частичная функция Ms1
(пример 2) и, например, нигде не определенная
44
функция
f(x) = min{x + 1 + у = 0}, где y N.
45