Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Теория алгоритмов. Учебное пособие для специальности 050201.65 – «Математика с дополнительной специальностью «Информатика», направление подготовки 050

.pdf
Скачиваний:
0
Добавлен:
15.08.2026
Размер:
1 Мб
Скачать

ГЛАВА 5. РЕКУРСИВНЫЕ ФУНКЦИИ

5.1. Базовые функции и операции над ними

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

может сыграть в истории математики роль, уступающую по значению лишь формулировке понятия натурального числа. Э. Пост

Построим класс вычислимых функций методом, похожим на

аксиоматический. Области определения и области значений функций

принадлежат множеству N0 = {0, 1, 2, 3, …}.

Назовем простейшими или базовыми следующие функции:

1)О(x) = 0 – нуль – функция;

2)S(x) = x + 1 – функция следования;

3)Inm (x1,x2,...,xm,...,xn) xm(1 m n) – функции выбора аргумента.

Базовые функции определены на всем множестве N0 . Функции,

обладающие таким свойством, назовем всюду определенными.

К простейшим функциям будем применять следующие операции. 1). Операция суперпозиции (подстановки).

Даны:

-n функций: f1(x1,x2,...,xm ), f2(x1,x2,...,xm),..., fn(x1,x2,...,xm);

-функция (y1,y2,..., yn ).

Говорят, что функция (x1,x2,...,xm ) получена операцией суперпозиции

из fi и φ, если (x1,x2,..., xm) ( f1(x1,x2,...,xm ),..., fn(x1,x2,..., xm)).

Принципиально важно: количество переменных, от которых зависит функция

, должно совпадать с числом n функций fi . Сами же функции fi должны

61

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

Пример 1:

Применить суперпозицию к функциям:

а) f1(x1,x2) x1 x2 , f2(x1,x2) x1x2 , f3(x1,x2) x1 x2 x1x2 и

(y1, y2, y3) y1 y2 y3 ;

б) О(x) = 0 и S(x) = x +1;

в) f1(x1,x2) x1 x2 , f2(x1) x1, f3(x1,x2) x1 x2 x1x2 в

(y1, y2, y3) y1 y2 y3.

Решение:

а) ψ(x1,x2)= φ(f1(x1,x2), f2(x1, x2), f3(x1,x2))= f1(x1,x2)+ f2(x1, x2) - f3(x1,x2)= = x1+x2 +x1 x2 (x1+x2 + x1 x2)= 0.

б) возможны два решения:

если обозначим f1(x) O(x), (x) S(x), то ψ(x) = S(О(x)) = S(0) = 1,

если обозначим f1(x) S(x), (x) O(x), то

ψ(x) = О(S(x)) = О(х+1) = 0.

в) заметим, функции f1(x1, x2), f2(x1), f3(x1, x2) зависят от разного числа

переменных, поэтому применить операцию суперпозиции нельзя. Введём

фиктивные переменные, которые

позволят применить данную операцию:

f1(x1,.x2)= x1+ x2, f2(x1)=I1

(x ,x

2

),

f3(x1, x2) = x1+ x2

+ x1

x2, у функции f

2

2

1

 

 

 

 

введена фиктивная переменная х2. Применим операцию суперпозиции:

ψ(x1, x2) = φ(f1(x1, x2), I21(x1, x2), f3(x1, x2))= f1(x1, x2)+ f2(x1, x2)+ f3(x1, x2)= =x1+x2 +x1 + x1 +x2 + x1 x2= 3x1 +2x2 + x1 x2 .

Пример 2:

Получить из базовых функций с помощью операции суперпозиции следующие функции:

а) ψ(x) = 4;

б) ψ(x) = а (а - константа);

62

в) ψ(x)= x + а.

Решение:

а) ψ(x) = S(S(S(S(О(x)))))= S(S(S(S(0))))= S(S(S(1)))= S(S(2))= S(3)= 4 –

результат четырёхкратного применения операции суперпозиции.

б) ψ(x) = S((S(О(x))))= а – результат применения операции суперпозиции a раз.

в) ψ(x)= S((S(I11 (x))))= х + а – аналогично предыдущему примеру. 2) Операция примитивной рекурсии.

Даны:

-функция от п переменных f1(x1, x2, ...,xп) (n > 0);

-функция от п + 2 переменных f2(x1, x2, ..., xп, xn+1, xn+2) (n > 0).

Говорят, что функция от п + 1 переменной (x1,x2,..., xn, y)получена из функций f1 и f2 посредством операции примитивной рекурсии, если:

(x1, x2, ,xn, 0)

f1(x1, x2,...

, xп )

 

 

 

 

 

 

 

 

f

 

 

(x , x ,

, x ,0, (x , x , ,x , 0))

(x , x , ,x , 1)

2

 

1

2

n

 

 

1

2 ...

п

1

2

n

 

 

(x , x

, ,x , 2)

f

2

(x , x ,

, x

 

,1, (x , x , ,x

,1))

 

1

2

n

 

 

1

2 ...

п

1

2

n

 

 

 

 

 

 

f

 

 

(x , x ,

, x

 

,2, (x , x , ,x , 2))

(x , x , ,x , 3)

2

 

 

1

2

n

 

 

1

2 ...

п

1

2

n

 

.......

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

(x , x ,

, x

, y 1, (x ,

x , ,x

, y-1))

(x , x , ,x , y) f

2

 

1

2

n

 

 

1

2 ...

п

 

 

1

2

n

 

Таким образом, функция (x1,x2,..., xn, y) получена рекурсией по

переменной y

 

с использованием функций

 

f1 и f2. Функция f1 используется

только один раз – при вычислении функции φ на наборе (x1, x2, ,xn, 0). Для вычисления на остальных наборах используется функция f2. Основная

задача при построении функций с использованием схемы примитивной

рекурсии

– найти для

функции

 

явный вид формулы от аргументов

x1,x2,...,xn, y. Обратная

задача:

для

явно заданной функции найти

функции

f1 и f2, из

которых

 

получена в результате применения

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

 

 

 

 

 

 

63

Пример 3:

Найти явный вид функции φ, которая получена в результате применения

схемы примитивной рекурсии к заданным функциям f1 и f2:

а) f1(x) = х, f2(x, y, z) = z + 1;

б) f1(x) = 0, f2(x, y, z) = x + z;

в) f1(x) = х, f2(x, y, z) = x + y + z;

г) f1(x, y) = х∙y, f2(x, y, z, s) = x + y + z + s.

Решение:

а) вычислим несколько значений функции φ(х, y), используя определение

схемы примитивной рекурсии:

 

 

φ(х, 0)= f1(x) = х,

 

 

 

φ(х, 1) = f2(x, 0, φ(х, 0))

= f2(x,0,х) = x + 1,

 

φ(х, 2) = f2(x,1,φ(х, 1))

= f2(x,1, x +1) = x +2,

 

φ(х, 3) = f2(x, 2, φ(х, 2))

= f2(x, 2, x +2) = x +3,

 

….

 

 

 

 

φ(х, 0) = х + 0,

 

 

 

φ(х, 1)

= x + 1,

 

 

 

φ(х, 2)

= x + 2,

 

 

 

φ(х, 3)

= x + 3,

 

 

 

 

 

 

 

Полагаем, что аналитический вид φ(х, y) = x + y.

 

Докажем индукцией

по

y справедливость

полученной формулы,

используя

полученные ранее

её значения и рекурсивный переход:

(x,y) (x,y 1) 1. Для y 0

формула верна. Пусть формула верна для

y 1. Докажем справедливость

формулы для y ,

используя рекурсивный

переход. Получим:

 

 

 

(x,y) (x,y 1) 1 x (y 1) 1 x y.

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

64

б) вычислим несколько значений функции φ(х, y), используя определение

рекурсии:

 

 

 

φ(х, 0)= f1(x) = 0,

 

φ(х,

1)

= f2(x, 0, φ(х, 0))

= f2(x, 0,0) = x + 0 = х,

φ(х,

2)

= f2(x, 1, φ(х, 1))

= f2(x,1,x) = x + х = 2х,

φ(х,

3)

= f2(x, 2, φ(х, 2))

= f2(x, 2,2х) = x + 2х = 3х,

….

 

 

 

Проанализируем полученные результаты:

φ(х,

0) = х 0,

 

φ(х,

1) = x 1,

 

φ(х,

2) = x 2,

 

φ(х,

3) = x 3,

 

Предполагаем, что φ(х, y) = x y. Доказательство полученной формулы

индукцией по y предоставляем читателю.

В последующих примерах найдём явную формулу для (x,y), используя таблицу значений функции. Сформулируем гипотезу о явной формуле.

Доказательство гипотезы оставим читателю.

в) вычислим несколько значений функции φ(х, y):

φ(х, 0)= f1(x) = х,

 

 

φ(х, 1) = f2(x, 0, φ(х, 0))

= f2(x,0,х) = x + 0 + х = 2х,

 

φ(х, 2) = f2(x, 1, φ(х,1))

= f2(x, 1,2x) = x + 1 + 2х = 3х + 1,

φ(х, 3) = f2(x, 2, φ(х, 2))

= f2(x,2,3х + 1) = x + 2 + 3х + 1 = 4х + 3,

φ(х, 4) = f2(x, 3, φ(х, 3))

= f2(x, 3,4х + 3) = x + 3 + 4х + 3

= 5х + 6,

φ(х, 5) = f2(x, 2, φ(х, 2))

= f2(x, 2,3х + 1) = x + 2 + 3х + 1

= 6х + 10,

….

 

 

Полагаем, что φ(х, y) = х(y + 1) + а, где а – константа, зависящая лишь от y. Найдём зависимость a от y . Проанализируем ряд значений a, изменяя y от

0 до 5:

65

0, 0, 1, 3, 6, 10, …

Выпишем зависимость: y = 0, a = 0,

y = 1, a = 0, y = 2, a = 1, y = 3, a = 3, y = 4, a = 6,

y = 5, a = 10.

При y = 2, а = 1 При y = 3, а равно сумме чисел 1 и 2, т.е. a = 2 + 1 = 3.

Если y = 4, то а равно сумме чисел от 1 до 3, т.е. a = 3 + 2 + 1 = 6. В общем

случае, для произвольного y элемент а равен сумме чисел от 1 до y - 1, т.е.

a 1 2 3 ... (y 1)

y(y 1)

.

 

 

 

 

 

2

 

 

 

В итоге получаем следующую формулу: φ(х, y) = х(y + 1) +

y(y 1)

 

.

2

г) Даны функции от двух и четырех переменных. Рекурсией по z

построим функцию (x,y,z) от трёх переменных Вычислим несколько значений функции φ(х, y, z):

φ(х, y, 0)= f1(x, y) = х y,

φ(х, y, 1) = f2(x,y,0, φ(х, y, 0)) = f2(x, y, 0, хy) = x + y + 0 + хy = x + y + хy,

φ(х, y, 2) = f2(x,y,1, φ(х, y, 1)) = f2(x, y, 1, x + y + хy) = x + y + 1 + x + y + хy = 2x + 2y + хy + 1,

φ(х, y, 3) = f2(x,y,2, φ(х, y, 2)) = f2(x, y, 2, 2x + 2y + хy +1) = x + y + 2 + 2x + + 2y + хy + 1= 3x + 3y + хy + 3,

φ(х, y, 4) = f2(x,y,3, φ(х, y, 3)) = f2(x, y, 3, 3x + 3y + хy + 3) = x + y + 3 + 3x

+ 3y + хy + 3 = 4x + 4y + хy + 6

Используя результаты предыдущего примера, имеем:

z(z 1)

φ(х, y, z)= z(х + y) + хy + 2 .

66

Продемонстрируем применение схемы примитивной рекурсии на более

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

полученных явных формул:

1.Дано: g(x) 1, h(x,y,z) (y 1) z;

f (x,0) g(x) 1,

f (x,y) h(x,y 1, f (x,y 1)) y f (x,y 1).

f (x,0) 1,

f (x,1) 1 1 1,

f (x,2) 2 1 2,

f (x,3) 3 2 6,

f (x,4) 4 6 24,

…………………

f (x,y) 1 2 3 4 ...

y y!.

2.Дано: g(x) x, h(x,y,z) x y z;

f (x,0) g(x) x,

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

f (x,y 1)) x (y 1) f (x,

f (x,y) h(x,y 1,

f (x,0) x,

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

f (x,1) x (1 1) x 0,

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

f (x,2) x (2 1) 0 x 1,

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

f (x,3) x (3 1) (x 1) 1,

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

f (x,4) x (4 1) 1 x 2,

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

f (x,5) x (5 1) (x 2) 2,

 

 

 

 

 

 

 

 

 

 

 

 

 

 

…………………

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

1

 

 

( 1)

y

 

 

 

1

 

 

x ( 1)

y 1

x

 

y

 

 

 

 

 

 

 

 

 

 

 

 

2

 

 

 

f (x, y)

 

 

 

 

 

 

 

 

 

 

 

 

 

 

2

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

2

 

 

 

 

 

 

 

 

 

2

 

 

 

 

 

2

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

x(1 ( 1)

y 1

) y

 

 

 

 

1

 

 

 

 

y

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

(1 ( 1)

 

)

 

 

 

 

 

 

 

 

 

 

2

 

 

 

 

 

f (x, y)

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

;

 

 

 

 

 

 

 

 

 

 

 

2

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

y 1).

или

67

3.Дано: g(x) x, h(x,y,z) x y z;

f (x,0) g(x) x,

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

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

f (x,y) h(x,y 1,

f (x,0) x,

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

f (x,1) x (1 1) x 0,

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

f (x,2) x (2 1) 0 x 1,

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

f (x,3) x (3 1) (x 1) 1,

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

f (x,4) x (4 1) ( 1) x 2,

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

f (x,5) x (5 1) (x 2) 2,

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

…………………

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

1

 

 

 

y

 

 

 

1

 

 

x ( 1)

y 1

x

 

y

 

 

 

 

 

 

 

 

( 1)

 

 

 

 

 

 

 

 

 

 

 

2

 

 

 

f (x, y)

 

 

 

( 1)y

 

 

 

 

 

 

 

 

 

2

или

 

 

 

 

 

 

 

 

 

 

 

2

 

 

 

 

 

 

2

 

 

 

2

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

x(1 ( 1)

y 1

) y

 

 

y

 

 

1

 

 

 

y

 

 

 

 

 

 

 

 

 

 

( 1)

 

 

 

 

 

 

(1 ( 1)

 

)

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

f (x, y)

 

 

 

 

 

 

 

 

 

 

 

 

 

2

 

 

 

 

 

 

;

 

 

 

 

 

 

 

 

 

 

2

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

4.Дано: g(x) 0, h(x,y,z) x z;

f (x,0) g(x) 0,

f (x,y) h(x,y 1, f (x,y 1)) x f (x,y 1). f (x,0) 0,

f (x,1) x 0 x, f (x,2) x x 2x, f (x,3) x 2x 3x, f (x,4) x 3x 4x, f (x,5) x 4x 5x,

…………………

f (x,y) y x.

5.Дано: g(x) 0, h(x,y,z) x z;

68

f (x,0) g(x) 0,

f (x,y) h(x,y 1, f (x,y 1)) x f (x,y 1).

f (x,0) 0,

f (x,1) x 0 x,

f (x,2) x x 0,

f (x,3) x 0 x,

f (x,4) x x 0,

…………………

f (x, y) x(1 ( 1)y ) . 2

6.Дано: g(x) x, h(x,y,z) x z;

f (x,0) g(x) x,

f (x,y) h(x,y 1, f (x,y 1)) x f (x,y 1). f (x,0) x,

f (x,1) x x 2x, f (x,2) x 2x 3x, f (x,3) x 3x 4x, f (x,4) x 4x 5x,

…………………

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

7.Дано: g(x) x, h(x,y,z) x z;

f (x,0) g(x) x,

f (x,y) h(x,y 1, f (x,y 1)) x f (x,y 1).

f (x,0) x,

f (x,1) x x 0,

f (x,2) x 0 x,

f (x,3) x x 0,

69

f (x,4) x 0 x,

…………………

f (x, y) x(1 ( 1)y 1) . 2

8.Дано: g(x) x, h(x,y,z) y2 z;

f (x,0) g(x) x,

f (x,y) h(x,y 1, f (x,y 1)) (y 1)2 f (x,y 1). f (x,0) x,

f (x,1) (1 1)2 x x,

f (x,2) (2 1)2 ( x) 1 x, f (x,3) (3 1)2 (1 x) 3 x, f (x,4) (4 1)2 (3 x) 6 x,

f (x,5) (5 1)2 (6 x) 10 x, f (x,6) (6 1)2 (10 x) 15 x,

…………………

f (x,y) ( 1)y x y(y 1) . 2

9.Дано: g(x) x, h(x,y,z) y2 z;

f (x,0) g(x) x,

f (x,y) h(x,y 1, f (x,y 1)) (y 1)2 f (x,y 1).

f (x,0) x,

f (x,1) (1 1)2 x x,

f (x,2) (2 1)2 x 1 x,

f (x,3) (3 1)2 (1 x) 5 x, f (x,4) (4 1)2 (5 x) 14 x,

f (x,5) (5 1)2 (14 x) 30 x,

70

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]