Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
4-Математическая логика и теория алгоритмов / Gmail / Учебное пособие-Математическая логика и теория алгоритмов.doc
Скачиваний:
503
Добавлен:
17.03.2015
Размер:
2.1 Mб
Скачать

§ 4. Вычислимые функции. Частично рекурсивные и общерекурсивные функции

Для алгоритмических проблем типичным является то обстоятельство, что требуется найти алгоритм для решения задачи, в условия которой входят значения некоторой конечной системы целочисленных параметров x1, х2, ..., хп, а искомым результатом также является целое число у. Следовательно, стоит вопрос о существовании алгоритма для вычисления значений числовой функции у, зависящей от целочисленных значений аргументов x1, х2, ..., хп.

Определение 1. Функция g = f(x1, x2,..., хп) называется эффективно вычислимой, если существует алгоритм, позволяющий вычислить ее значения.

Так как в этом определении алгоритм понимается в интуитивном смысле, то и понятие эффективно вычислимой функции является интуитивным.

Однако переход от алгоритма к эффективно вычислимой функции дает определенные преимущества. Дело в том, что те требования, которые предъявляются к алгоритму в его характерных чертах, выполняются для совокупности всех вычислимых функций, которая носит название совокупности рекурсивных функций.

Гёдель впервые описал класс всех рекурсивных функций как класс всех числовых функций, определяемых в некоторой формальной системе. Черч в 1936 году пришел к тому же классу функций, исходя из других предпосылок. Здесь построение класса вычислимых функций строится следующим образом.

Выбираются простейшие функции

(оператор сдвига),

О(х) = 0 (оператор аннулирования),

(оператор проектирования).

Ясно, что все три простейшие функции всюду опре­делены и интуитивно вычислимы.

Далее вводятся операции над функциями.

1. Суперпозиция функций.

Рассмотрим функции и функцию , функцию , определяемую равенством

.

Будем говорить, что функция получена из функций и f1, f2, ..., fm суперпозицией.

Если мы каким-либо образом умеем вычислять функции f1, f2, ..., fm , то функция может быть вычислена так: придадим переменным xv х2, ..., хп некоторые значения a1, а2, ..., ап. Вычисляя все , найдем . Вычисляя теперь найдем .

Ясно, что если все функции fl, f2, ..., fm и всюду определены, то функция всюду определена. Функция будет не всюду определенной, если хотя бы одна из функций fl, f2, ..., fm не всюду определена, или если можно найти такие значения аргументов а1, а2, ..., аn, что bi=fi(a1,a2,...,an), но (b1,b2,.,.,bm) не определено (i = 1,…, т).

Таким образом, если функции fl, f2, ..., fm, интуитивно вычислимы, то будет интуитивно вычислима и функция .

Отметим, что возможны случаи, когда не все функции f1, f2, ..., fm зависят от всех п аргументов х1, x2, ..., хп. В этих случаях для получения суперпозиции используются фиктивные аргументы и функции . Например, функция получается суперпозицией из функций и

.

2. Схема примитивной рекурсии.

Пусть имеется две функции 23,...,хп) и , (n > l). Рассмотрим новую функцию, которая удовлетворяет следующим равенствам:

(1)

Отметим, что функция зависит от п-1 аргументов, функция от n+1 аргументов, а функция f – от п аргументов.

Если функция получается из функций и с помощью равенств (1), то говорят, что функция f получена из функций и по схеме примитивной рекурсии.

Если функции и интуитивно вычислимы, то будет интуитивно вычислима и функция f. Действительно, пусть a1, а2, ..., апнабор значений аргументов х1, х2, ..., хп. Тогда последовательно находим

,

,

и т.д.

Очевидно, что если функции и всюду определены, то будет всюду определена и функция f.

Рассмотрим примеры получения функций по схеме примитивной рекурсии.

Пример 1. Пусть функция f(y,x) задана равенствами:

f(0,x) = x,

f(y+1,x) = f(y,x) + 1.

Здесь функция , а .

Вычислим значение функции f(y,х) при у = 5, х = 2.

Т.к. f(0,2) = (2) = 2 , то из второго равенства последовательно имеем:

Нетрудно показать, что . Действительно, . Полагая в этом равенстве у = 0, получим f(z, х) = f(0, х)+z или f(z, х) = x+z.

Пример 2. Пусть функция f(y, x) задана равенствами:

f(0,x) = 0,

f(y+1,x) = f(y,x) + x.

Здесь , .

Вычислим значение функции f(у, х) при у = 2, х = 2. Так как f(0,x) = , то f(0,2) = 0 , а значения f(1,2) и f(2,2) находим последовательно:

,

.

Легко показать, что в этом примере f(y, x) = ху. Действительно, f(y + z, x) = f(y, x) + zх. Полагая в этом равенстве у = 0, получим f(z, х) = f(0, х) + zх или f(z, х) = zх.

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

Пусть задана некоторая функция f(x,y). Зафиксируем значение х и выясним, при каком у f(x, у) = 0.

Более сложной задачей является отыскание для данной функции f(x, у) и фиксированного х наименьшего из тех значений у, при которых функция f(x,y) = 0. Так как результат решения задачи зависит от х, то наименьшее значение у, при котором функция f(x, y) = 0 есть функция х. Принято обозначение

(Читается: «наименьшее у такое, что f(x,y) = 0 ».)

Аналогично определяется функция многих переменных:

.

Переход от функции к функции принято называть применением -оператора.

Для вычисления функции можно предложить следующий алгоритм:

1. Вычислим . Если это значение f равно нулю, то полагаем =0. Если , то переходим к следующему шагу.

2. Вычислим . Если , то полагаем = 1. Если же, то переходим к следующему шагу. И т.д.

Если окажется, что для всех у функция , то функцию в этом случае считают неопределенной. Но возможно, что существует такое у0, что f(x1,x2,...,xn,y0) = 0 и, значит, есть и наименьшее у, при котором ; и в то же время может случиться, что при некотором z(0 < z < y0) значение функции не определено. Очевидно, что в этом случае процесс вычисления наименьшего у, при кото­ром f(xltx2,...,xn,y) = 0 не дойдет до у0. И здесь функцию считают неопределенной.

Пример. Рассмотрим функцию f(x,y) = х-у, которая может быть получена с помощью оператора минимизации

Вычислим, например, f(7,2), то есть значение функции при у = 2, х = 7. Для этого положим у = 2 и будем придавать x последовательно значения:

z = 0, 2 + 0 = 27,

z = 1, 2 + 1 = 37,

z = 2, 2 + 2 = 47,

z = 3, 2 + 3 = 57,

z = 4, 2 + 4 = 67,

z = 5, 2 + 5 = 7 = 7.

Таким образом, f(7,2) = 5.

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

Определение 3. Функция f(xltx2,…,xn) называется общерекурсивной, если она частично рекурсивна и всюду определена.

Примерами общерекурсивных функций являются функции:

1) ,

2) О(х),

3) ,

4) f(y, x) = у+x,

5) f(y, x) = ху,

6) f(y, x) = х+n.

Тезис А. Чёрча. Каждая интуитивно вычислимая функция является частично рекурсивной.

Этот тезис нельзя доказать, т.к. он связывает нестрогое математическое понятие интуитивно вычислимой функции со строгим математическим понятием частично рекурсивной функции.

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