Файл: Алферова З.В. Теория алгоритмов учеб. пособие.pdf

ВУЗ: Не указан

Категория: Не указан

Дисциплина: Не указана

Добавлен: 25.06.2024

Просмотров: 104

Скачиваний: 1

ВНИМАНИЕ! Если данный файл нарушает Ваши авторские права, то обязательно сообщите нам.

Например, осуществляя операцию суперпозиции функций f{x) =

= 0 и g{x) = х + 1, получим функцию

 

h(x)=g(f(x))=0+l

= l.

При суперпозиции функции ^(л:) с самой собой получим функ­ цию h(x) = х + 2 и т. п.

Операция суперпозиции обозначается символом S n + i , где индекс сверху означает число функций.

Операция примитивной рекурсии позволяет строить п + 1-мест­ ную арифметическую функцию (функцию от п + 1 аргумента) по двум заданным функциям, одна из которых является n-местной, а другая п + 2-местной.

Пусть заданы какие-нибудь числовые частичные функции: п- местная g я п + 2-местная h. Говорят, что п + 1-местная частичная функция f возникает из функций g и h примитивной рекурсией, ес­

ли для всех натуральных значений хи

. . . ,

хп,

У имеем:

 

 

/(*!,

. . . , хп, 0)

=g[xu

 

. . .

, *„);

 

(3)

••• . х„, у+\)

= А ( * Ь

. . . ,

хя,

у,

/(*!

х„, у)).

(4)

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

В соответствии с этим операцию примитивной рекурсии будем применять и для п = 0, говоря, что одноместная частичная функ­ ция / возникает примитивной рекурсией из постоянной одноместной функции, равной числу а, и двуместной частичной функции h, если

/ ( 0 ) = а ; f(x+l)=h(x, /(*)).

Встает вопрос, для каждых ли g и h существует функция / и будет ли она единственной. Область определения функции — мно­ жество всех натуральных чисел, поэтому ответ на оба вопроса по­ ложительный.

Если / существует, то из (3) и (4) находим:

 

 

 

 

 

х

п

,

0) = £ ( * ь . . .

, хп);

(5)

 

/

и

. . . ,

Хп, 1) =

h

 

. . .

, *„, 0, g

ъ . . .

,*„));

/ (*ь

. . . ,xn,2)

= h

х

 

* „ , ! , /

. . . ,хп,

1));

/

(*,,

. . . , * „ ,

m +

1) =

А г,

...,*„,«,/

и . . .

,х„,т))

и поэтому / определена однозначно. Таким образом, для любых частичных n-местной функции g и п + 2-местной функции h/n = = 0, 1, 2, . . . существует только одна частичная п + 1-месГная

20


функция /, возникающая из g и h примитивной рекурсией. Симво­ лически пишут f = R{g, К).

Из (5) видно, что если мы каким-то образом умеем находить значение g и h, то значение / можно вычислить при помощи проце­

дуры вполне механического характера.

Для нахождения значения.

f{au . . . , ап, т

+ 1)

достаточно-последовательно найти числа:

 

 

 

 

6o = g ( a i ,

••• ,

а„);

 

 

 

b1 = h[al,

. . .

, а„,

О, Ь0);

 

 

 

6я

=

Л ( а ь

...

п,

1,

 

 

*

m +

i

= h{alt

. . . ,ап,

т, Ьт).

 

Полученное

на т +

1 шаге число Ьт+\ и будет искомым

значе­

нием f в точке

и . •.,

ап,

т +

1).

 

 

 

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

сии покажем, как при помощи этой операции из элементарных

функ­

ций можно построить двуместную функцию суммирования f (х, у) = = х + у.

Эта функция определяется с помощью тождественной функции g{x) = х и функции непосредственного следования:

h[x, у, г) = z + 1.

В самом деле, используя правила (3) и (4), имеем:

 

f{x,

0) =g[x)

= х\

 

 

f[x,

l)=h(x,

0,

 

х)=х+\;

 

f[x,

2) =

А(*.

1,

х+-\)=х

+

2;

. fix, y—\)=h(x,

 

у —2,

 

x + y — 2) =

x + y—\;

f{x, y) =

hix,

y—l,

 

x +

y —

1) =

x^-y.

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

Функции, которые могут быть построены из элементарных ариф­ метических функций с помощью операций суперпозиции и прими­ тивной рекурсии, примененных любое конечное число раз в произ­

вольной последовательности, называются примитивно

рекурсивны­

ми функциями.

 

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

В качестве примера докажем примитивную рекурсивность не­ которых простых арифметических функций.

Двуместная функция f{x, у) =х + у удовлетворяет соотноше­ ниям:

х + 0 = х = Ц (х) —тождественная функция;

2i


х+

+ 1) =

(х + у) +

1 = S(x

+ у) — функция непосредствен-

Следовательно, функция х + у

 

 

ного

следования.

рекур­

возникает из

примитивно

сивных

функций

/ } и h(x, у,

г) = г +

1 операцией примитивной

ре­

курсии и потому

функция х + у — примитивно

рекурсивная.

 

 

Двуместная функция f{x,

 

у) =

х-у

удовлетворяет схеме

прими­

тивной

рекурсии:

 

 

 

 

 

 

 

 

 

 

 

 

 

х

. О

=0(х);

 

 

 

 

 

 

 

х (г/+

1) =

ху

+ х,

 

 

 

 

с начальными примитивно рекурсивными функциями

 

 

 

 

g[x)

= 0{х),

h{x,

у,

z)=z

+

x,

 

 

поэтому функция х-у

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

 

 

 

В области натуральных

чисел

разность

х — у естественно

счи­

тать частичной двуместной функцией от х и у, определенной лишь для х^у, так как отрицательные числа не входят в рассматривае­ мую область. Но примитивно рекурсивные функции всюду опреде­ ленные. Поэтому в теории примитивно рекурсивных функций вместо обычной разности вводят усеченную разность, обозначаемую сим­ волом— и определяемую следующим образом:

В отличие от простой разности усеченная разность в области натуральных чисел всюду определенная, и в то же время она очень просто связана с обычной разностью. Так, например, согласно оп­ ределению (*):

5-^3

= 2;

3-^5 = 0, (х-*- у)

г = j c — +

z).

 

Функция х-^-\

удовлетворяет примитивно рекурсивной

схеме

 

 

 

0 — 1 = 0;

 

 

 

 

 

 

+ 1)

=

х,

 

 

 

с примитивно рекурсивными начальными функциями

О1

и 1\

. По­

этому функция х-*-\

—примитивно

рекурсивная.

х,

у

 

С другой

стороны, из (*) следует,

что для любых

 

 

 

X — 0 =

х;

 

 

 

 

 

 

!) = (* — У ) - * - 1 .

 

 

 

Эти тождества показывают, что двуместная функция

х—У

воз­

никает примитивной

рекурсией из функций / } и h(x,

у,

z) = z — 1.

Обе последние функции примитивно рекурсивны, поэтому и функция

.х—у — примитивно рекурсивная.

Большинство арифметических функций относятся к примитивно рекурсивным. Тем не менее примитивно рекурсивные функции не охватывают всех арифметических функций, которые могут быть оп-

22


ределены

конструктивно. При

построении

всех

этих

функций

ис­

пользуются

другие

операции,

в

частности

операция

наименьшего-

корня.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Операция

наименьшего

корня,

или операция

минимизации,

по­

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

f{xu

...,

 

 

хп)

от п переменных с помощью ранее

построенной

арифметической

функции g(xt,...,

 

Хп, у) от п +

1 переменных.

переменных

Xi =

Для любого

заданного

набора

значений

= аи ...,

хп

— ап

в качестве

соответствующего

значения

}(аи

 

..

.,

йп) определяемой

функции

/ ( x j , . . . ,

хп)

принимается наименьший

целый

неотрицательный корень у = а уравнения g{ai,

...,

ап,

у)

 

=

= 0.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

В

случае

несуществования

 

целых

неотрицательных

корней

у

этого уравнения функция f ( x

i

, х

п )

считается

неопределенной

при соответствующем наборе значений переменных.

 

 

 

 

 

Арифметические функции,

которые могут

быть

построены

 

из

элементарных

арифметических

функций с помощью операций

су­

перпозиции, примитивной рекурсии и наименьшего корня, называ­

ются частично

рекурсивными

функциями.

Если такие функции ока­

зываются к тому же

всюду

определенными, то

они

называются

общерекурсивными

функциями.

 

 

 

 

 

 

 

В этом определении, как и в определении примитивно

 

рекур­

сивных функций, предусматривается

возможность

выполнения

всех допустимых операций в любой

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

и

любое

конечное число раз.

 

 

 

 

 

 

 

 

 

Частично рекурсивные функции

представляют

собой

наиболее

общий класс конструктивно определяемых арифметических

функ­

ций.

 

 

 

 

 

 

 

 

 

 

Понятие частично

рекурсивной функции — одно

из

главных по­

нятий теории

алгоритмов. Значение

его

состоит в

следующем.

1. Каждая

стандартно

заданная

частично рекурсивная

функ­

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

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

Класс алгоритмически (или машинно) вычислимых частичных, числовых функций совпадает с классом всех частично рекурсивных, функций. Этот тезис дает алгоритмическое толкование понятиючастично рекурсивных функций.

Практически понятием частично рекурсивных функций поль­ зуются для доказательства алгоритмической разрешимости или не­ разрешимости проблем.

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

23