Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Теория алгоритмов / из Интернета / теория алгоритмов (учебник 87 стр).pdf
Скачиваний:
183
Добавлен:
27.05.2015
Размер:
771.07 Кб
Скачать

имеющими своими областями определения и множествами значений только множества натуральных чисел.

Определение. Арифметические функции, т. е. функции вида f : N n N , для

которых существует алгоритм их вычисления, называются вычислимыми функциями.

Так как в этом определении фигурирует понятие алгоритма в интуитивном смысле, то и понятие вычислимой функции оказывается интуитивным. Тем не менее, Чёрч точно описывает совокупность арифметических функций, которая, как оказалось, совпадает с классом рекурсивных функций, ранее описанным Гёделем и высказывает гипотезу: класс рекурсивных функций совпадает с классом всюду определенных вычислимых функций. Другой американский математик, Клини, обобщил понятие рекурсивной функции на случай не всюду определенных функций. При этом он ввел понятие частично рекурсивных функций и высказал гипотезу: все частичные функции, вычислимые посредством алгоритмов, являются частично рекурсивными.

Очевидно, что гипотезы Чёрча и Клини недоказуемы, так как содержат в своих формулировках интуитивное понятие вычислимой функции. Несмотря на невозможность его доказательства, тезис Чёрча-Клини является естественно научным фактом, и вся история математики служит его подтверждением. Одним из доводов этого подтверждения является свойство эквивалентности по форме различных уточнений алгоритма.

I.ТЕОРИЯ РЕКУРСИВНЫХ ФУНКЦИЙ

I.1. Примитивно рекурсивные функции. Базис элементарных функций. Операции подстановки и примитивной рекурсии. Основные свойства

Рекурсивные функции являются одним из вариантов уточнения понятия алгоритма. В общем теория рекурсивных функций включает следующие классы функций: класс примитивной рекурсивной функции (ПРФ), класс общерекурсивной функции (ОРФ) и класс частично рекурсивной функции (ЧРФ).

В целом теория рекурсивных функций образуется следующим образом. В начале задается базис элементарных функций, затем определяются специальные операции над функциями. В результате применения определенного количества операций к элементарным функциям, строятся соответствующие классы функций: класс ПРФ, ОРФ и ЧРФ.

Примитивно рекурсивные функции (ПРФ)

Определение. Элементарными функциями называются:

1). Функции константы

Сn (x ...x

 

)= q ,

 

где

n = 0,1,2,K, q = 0,1,2,K

 

 

 

q

1

 

n

 

 

 

 

 

2). Функции следования

S(x)

= x +1

 

 

 

3). Функции выбора I n

(x , x

2

Kx

n

)= x

m

, где

1 m n .

 

 

m

1

 

 

 

 

 

Все элементарные функции - всюду определенные и алгоритмически вычислимые.

6

Имеется небольшое число операций над элементарными функциями, переводящими вычислимые функции снова в вычислимые.

Операция подстановки

 

g(y1 ,K, ym )

 

 

Пусть

задана

функция

и

функции

h1 (x1 ,K, xn ), h2 (x1 ,K, xn ),K, hm (x1 ,K, xn ).

 

 

Определение. Говорят, что функция

f (x1 ,K, xn ) получена из этих функций с

применением операции подстановки, если выполняется следующее равенство:

f(x1 ,K, xn )= g(h1 (x1 ,K, xn ),K, hm (x1 ,K, xn ))

иобозначается f = S(g; h1 ,K, hm ), где S–означает операции подстановки.

Пример 1. Пусть (x, y)= x + y иg

h1 (u, v, t)= uvt h2 (u, v, t)= u 2vt .

Тогда по определению подстановки получим, что

 

 

f (u, v, t)= uvt + u 2vt

Пример 2. Пусть

g(x, y)= x + y

и

 

h1 (u, v, t)= uvt

 

h2 (u, v, z)= u 2 v z .

Тогда по определению операции подстановки получим, что

f (u, v, t, z)= uvt + u

2v z

 

 

.

 

Как видим, это не является результатом операции подстановки, так как по по условию задачи h1 , h2 являются трехместными функциями, а получаемая функция

f–четырехместная, что противоречит определению.

Основные свойства операции подстановки

10. Операция подстановки сохраняет свойство всюду определенности функций, т.е. если функция g(y1 Kym ) и функции h1(x1Kxn ),h2 (x1Kxn ),Khm (x1Kxn ). всюду определенные функции и функция f получается из них с помощью операции

подстановки, то f также является всюду определенной функции. Доказательство. Пусть h1 ,K, hm произвольные функции от n переменных.

Рассмотрим произвольный набор

(x , x

2

,..., x

n

) Νn . Тогда

h ,K, h

m

будут

 

1

 

 

1

 

определены в этом наборе в силу свойства всюду определенности. Функция g будет

определена

на наборе (h1 (x1 Kxn ), h2 (x1 Kxn ),Khm (x1 Kxn )), в силу

 

свойства

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

f .

Таким

образом, мы доказали, что функция f определена на

наборе

(x1 , x2 ,..., xn ) . Так как, мы взяли произвольный набор из множества натуральных чисел, то свойство доказано.

7

20. Операция подстановки сохраняет свойство алгоритмической вычислимости

функций, т.е. если функции g(y1 ,K, ym )и h1 ,K, hm алгоритмически вычислимы, и

f = S(g; h1 ,K, hm ),

то существует алгоритм

Af, вычисляющий функцию

f .

Доказательство. Пусть задан произвольный набор (x1 , x2 ..., xn ) D f .

Это

означает, что этот

набор (x1, x2...xn ) Dh , где

i =1,2,K, m . Далее поступаем

следующим образом:

i

 

 

 

 

 

1 шаг: применяем к набору (x1,K, xn ) алгоритм

A1 , вычисляющий функцию h1 .

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

2 шаг: применяем к набору (x1,K, xn )

алгоритм A2 , вычисляющий функцию h2 .

Так как функция h2 по условию алгоритмически вычислимая функция, то через

конечное число шагов работа алгоритма

A2 завершается результативно, т.е. будут

вычислено значение функция h2 на наборе

(x1,K, xn ) и т.д. Если работа всех

алгоритмов

A1 , A2 ,..., Am

на наборе (x1,K, xn ) завершилась результативно, т.е.

вычислены

соответствующие значения

h1 (x1 ,..., xn ), h2 (x1 ,..., xn ), ... , hm (x1 ,..., xn ),

на следующий шаг, т.е.

 

 

 

 

m+1–шаг:

применяем

алгоритм Ag ,

вычисляющий

функцию g, к набору

h1 (x1 ,..., xn ),

h2 (x1 ,..., xn ),

... , hm (x1 ,..., xn ). В

силу

свойства алгоритмически

вычислимости функцию g, через конечное число шагов алгоритм Ag завершает работу на наборе h1 (x1 ,..., xn ), h2 (x1 ,..., xn ), ... , hm (x1 ,..., xn ) результативно, и этот

результат будем считать значением функции f, так как по определению операции подстановки f (x1 ,..., xn )= g(h1 (x1 ,..., xn ), h2 (x1 ,..., xn ), ... , hm (x1 ,..., xn )).

В случае, когда алгоритм Ai , где i =1,2,..., m не остановливается или завершает

работу нерезультативно, будем считать, что искомый алгоритм для вычисления данной функции, т.е. функции f (x1 ,K, xn ), не существует.

Операция примитивной рекурсии

Пусть задана функция g(x1 ,K, xn ) и функция h(x1 ,..., xn , y, z). Определение. Говорят, что функция f (x1 ,K, xn , y) получена из функцией

g(x1 ,K, xn ) и h(x1 ,..., xn , y, z) с помощью операции примитивной рекурсии, если

выполняются следующие равенства:

f (x1 ,K, xn ,0)= g(x1 ,K, xn )

f (x1 ,K, xn , y +1)= h(x1 ,K, xn , y, f (x1 ,K, xn , y)).

Это определение имеет смысл, когда n 0, при этом записывается f (x1 ,..., xn , y)= R(g(x1 ,..., xn ), h(x1 ,..., xn , y, z))

или сокращенно

f = R(g,h),

где R–означает операции примитивной рекурсии.

В случае, когда n = 0 , то операция примитивной рекурсии примет вид:

8

ϕ(0)= Cq0

ϕ(y +1)= h(y, ϕ(y)),

и обозначается:

ϕ = R(Cq0 , h).

Основные свойства операции примитивной рекурсии

Операция примитивной рекурсии, так же как и операция подстановки, сохраняет свойство всюду определенности и алгоритмической вычислимости.

10. Сохранение свойства всюду определенности функций, т.е если g(x1 ,K, xn ) и h(x1 ,...xn , y, z) всюду определенные функции, то f (x1 ,K, xn , y) тоже будет всюду определенная функция, где f = R(g,h).

Доказательство. Берем произвольный набор (x1 ,K, xn , y) и докажем, что на

этом наборе функция f определена. Доказательство проводим методом математической индукции по y .

1 шаг. Пусть y = 0. Тогда по определению операции примитивной рекурсии получаем, что

f (x1 ,K, xn ,0)= g(x1 ,K, xn ).

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

f определена на наборе (x1 ,K, xn ,0).

определена на наборе (x1

,K, xn , y)

 

2 шаг. Предположим, что функция

f

 

3 шаг. Доказываем что функции

f

определена на наборе

(x1 ,K, xn , y +1).

По

определению

операции

примитивной

рекурсии

получаем,

что

f (x1 ,K, xn , y +1)= h(x1 ,K, xn , y, f (x1 ,K, xn , y)).

 

 

 

А функция h обладает свойством всюду определенности по условию. Следовательно, функция f определена на наборе (x1 ,K, xn , y +1). Так как функция

f является арифметической функцией, то метод математической индукции

позволяет сделать вывод, что она всюду определена.

 

20. Сохранение алгоритмической вычислимости функций, т.е.,

если

g(x1 ,K, xn ) и h(x1 ,..., xn , y, z) являются алгоритмически вычислимыми функциями,

то существует алгоритм

A f , вычисляющий функцию f (x1 ,K, xn , y),

где

f (x1 ,K, xn , y)= R(g(x1 ,..., xn ), h(x1 ,..., xn , y, z)).

Доказательство. Пусть задан произвольный набор (x1 ,K, xn , y). Докажем, что функция f алгоритмически вычислима на этом наборе. Для доказательства поступим следующим образом. Сначала применяем алгоритм Ag , вычисляющие функцию g(x1 ,..., xn ) на набору (x1 ,K, xn ). В случае остановки через конечное число шагов получаем значение функции g(x1 ,..., xn ) на этом наборе, равное по определению операции примитивной рекурсии: g(x1 ,K, xn )= f (x1 ,K, xn ,0).

9

После этого используем алгоритм Ah , который вычисляет значение функции h(x1 ,..., xn , y, z). Этот алгоритм последовательно применяем к следующим наборам:

(x1 ,K, xn ,0, f (x1 ,K, xn ,0))

(x1 ,K, xn ,1, f (x1 ,K, xn ,1))

(x1,K, xn , y 1, f (x1,K, xn , y 1)).

Если

каждый раз

работа

алгоритма Ah завершается результативно, то

мы

получаем соответствующие значения

функция h(x1 ,..., xn , y, z)

равные значениям

функции

f (x1 ,K, xn , y) (это

следует

из

определения операции примитивной

рекурсии):

 

h(x1 ,K, xn ,0, f (x1,K, xn ,0))= f (x1,K, xn ,1)

 

 

 

 

 

 

 

 

 

h(x1 ,K, xn ,1, f (x1 ,K, xn ,1))= f (x1 ,K, xn ,2)

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

h(x1 ,K, xn , y 1, f (x1 ,K, xn , y 1))= f (x1 ,K, xn , y).

 

 

А если не произошло остановки алгоритма

Ag в наборе

(x1 ,K, xn ) или не

закончился результативно алгоритм

Ah

на одном из этапов вычисления значения

функции h(x1 ,..., xn , y, z), (т.е. например,

при вычислении h(x1 Kxn , y', f (x1 Kxn , y'))

, где y' {0,1,2...y 1}),

то переход к следующему этапу никогда не произойдет и

искомый алгоритм

считается не применимым к набору (x1 ,K, xn , y).

 

 

Приведем несколько примеров

получения вычислимых функций с помощью

операции примитивной рекурсии.

 

 

 

 

 

 

 

Пример 1. Пусть задано

g(x)= I11 (x)= x , h(x, y, z)= I33 (x, y, z)+1

и покажем,

что f (x, y)= R(g(x), h(x, y, z)), где f (x, y)= x + y

 

 

 

 

Согласно определению операции примитивной рекурсии

 

 

 

f (x,0)= g(x)= I11(x)= x

 

 

 

 

 

 

 

 

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

 

 

 

Тогда f (x,1)= h(x,0, f (x,0))+1 = f (x,0)+1 = x +1

 

 

 

 

f (x,2)= h(x,1, f (x,1))+1 = f (x,1)+1 = x + 2

 

 

 

 

f (x,3)= h(x,0, f (x,2))+1 = f (x,2)+1 = x + 3

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

f (x, n)= h(x, n 1, f (x, n 1))+1 = f (x, n 1)+1 = x + n

 

 

 

Предположим, что для некоторого n N

последнее равенство справедливо и

докажем, что тогда

(n +1).

 

 

 

 

 

 

 

 

f (x, n +1)= x +

 

 

 

 

 

 

 

 

Действительно,

пусть f (x, n)= x + n

для

некоторого

n N .

Тогда

по

определению операции примитивной рекурсии получаем, что f (x, n +1)= I33 (x, n, f (x, n))+1 = f (x, n)+1 = x + (n +1).

10

Таким образом, функция f (x, y)= x + y получается из функции g(x)= I11(x)= x

и h(x, y, z)= I33 (x, y, z)+1 с помощью операции примитивной рекурсии.

Пример 2. Пусть f (x, y)= x y . Требуется показать, из каких элементарных

функций с помощью операции примитивной рекурсии она получена.

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

f (x,0)= x 0 = 0 = C01

f (x, y +1)= x (y +1)= x + x y = I13 (x, y, z)+ I33 (x, y, z)

Тогда

 

 

f (x,1)= h(x,0, f (x,0))= x + f (x,0)= x +0 = x

f (x,2)= h(x,1, f (x,1))= x + f (x,1)= x + x = 2x

...

 

 

f (x, n)= h(x, n 1,

f (x, n 1))= x + f (x, n 1)= x +(n 1)x = nx.

Очевидно, функция f

(x, y)= x y –есть результат операции примитивной

рекурсии над функциями g(x)= C01 и

h(x, y, z)= I13 (x, y, z)+ I33 (x, y, z).

Определение. Примитивно

рекурсивным описанием функции (ПРО) f

называется конечная последовательность функций ϕ1 ,..., ϕn , удовлетворяющая следующим условиям:

1)последний член этой последовательности есть сама функция f , т.е. ϕn = f ;

2)для любого i =1,2,...n , ϕi – есть либо элементарная функция, либо получается

из предшествующих ей функций в этой последовательности с помощью одной из операции примитивной рекурсии или подстановки.

Определение. Функция f называется примитивно рекурсивной функцией (ПРФ), если существует хотя бы одно её ПРО.

Из определения следует, что всякая примитивно рекурсивная функция f имеет несколько различных ПРО.

Например, для функции g(x, y)= x + y ПРО является последовательность следующих функций:

1)I11 , I33 +1, R(I11 , I33 +1), x + y

2)I11 , s, I33 , S(s; I33 ), R(I11 , S(s; I33 )), x + y

и т.д.

Основные свойства ПРФ

10. Всякая примитивно рекурсивная функция f является всюду определенной функцией.

Доказательство. Предположим, что функция f есть ПРФ, следовательно, по

определению примитивно рекурсивности функций, она имеет ПРО. Пусть последовательность функций ϕ1 ,..., ϕn – есть её ПРО. Будем доказывать, что каждая

функция этой последовательности является всюду определенной. Воспользуемся методом математической индукции.

11