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

УДК 519.6

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

Валентина В.Быкова*

Институт математики, Сибирский федеральный университет, Свободный 79, Красноярск, 660041,

Россия

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

Ключевые слова: сложность алгоритмов, рекурсия, рекуррентные соотношения

1. Рекурсия и итерация

В математике и программировании рекурсия - это метод определения или выражения функции или процедуры посредством той же функции и процедуры. Рекурсию обычно рассматривают в качестве антипода итерации. Соответственно различают два больших класса алгоритмов: итерационные и рекурсивные. В основе итерационных алгоритмов лежит итерация - многократное повторение одних и тех же действий. Структура таких алгоритмов хорошо описывается алгоритмическими конструкциями “следование”, “ветвление”, “цикл”. Анализ сложности итерационных алгоритмов сводится к определению трудоемкости этих конструкций и формированию интегральной асимптотической оценки с использованием правил суммы и произведения [1].

Рекурсивный алгоритм — это алгоритм, определяемый через себя. В основе рекурсивных алгоритмов лежит рекурсия. Это тоже повторение, но повторение целого в его части. Необходимость применения рекурсивных алгоритмов в одних случаях диктуется самой формулировкой задач - задач, рекурсивных по своей сути, в других - они возникают как удобный метод решения. Рекурсия в сравнении с итерацией имеет ряд преимуществ. Однако практика разработки и использования алгоритмов выдвигает ряд серьезных причин, препятствующих широкому применению рекурсии:

• рекурсивные алгоритмы, как правило, более затратные с точки зрения времени и памяти, нежели итерационные алгоритмы, решающие ту же задачу. При этом на сложность рекурсивного алгоритма большое влияние оказывает сама организация рекурсии;

• анализ сложности рекурсивных алгоритмов — одна из наиболее сложных и до конца нерешенных проблем метрической теории алгоритмов. Поэтому всякий математический результат, дающий какой-либо общий подход решения проблемы анализа рекурсивных алгоритмов, интересен как теоретически, так и практически.

*© Siberian Federal University. All rights reserved

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

2. Методы и проблемы анализа сложности рекурсивных алгоритмов

Основными современными инструментами исследования сложности рекурсивных алгоритмов являются метод рекуррентных соотношений и теоретико-графовый метод исследования дерева рекурсии. Идея метода рекуррентных соотношений состоит в построении и решении рекуррентного соотношения, которому удовлетворяет функция сложности Ь(п) алгоритма. Найденное решение позволяет получить О-оценку для Ь(п). Этот метод не является универсальным. Во-первых, он применим только для оценки временной сложности рекурсивных алгоритмов. Оценка емкостной сложности требует учета глубины рекурсии и, как следствие, других инструментов. Во-вторых, метод рекуррентных соотношений позволяет получить лишь верхние оценки временной сложности рекурсивных алгоритмов, т.е. только для худшего случая. В-третьих, рекуррентное соотношение для Ь(п) удается найти только тогда, когда преобразование, уменьшающее значение параметра рекурсии п, линейно относительно п.

Если рекуррентное соотношение для Ь(п) все же найдено, то нет никакой гарантии, что удастся установить явную форму или хотя бы асимптотическую оценку для £(п). Проблема в том, что общих методов решения рекуррентных соотношений нет. Известны лишь методы решения некоторых классов рекуррентных соотношений. Тем не менее, во многих практических ситуациях выход находится. Так, допустимо использование общих приемов решения линейных рекуррентных соотношений с постоянными коэффициентами, аппарата производящих функций и интегральных методов [2]—[5]. Наконец, относительно хорошо решаются рекуррентные соотношения, характерные для прямой рекурсии, организованной по принципу “разделяй и властвуй” и аддитивным уменьшением размерности задачи на некоторую константу. Здесь имеются две основные теоремы о рекуррентных соотношениях, одна из которых доказывается в настоящей статье. Данные теоремы — удобный математический инструмент анализа сложности двух наиболее типичных принципов организации рекурсии, применяемых в практике разработки алгоритмов и программ. Их использование позволяет избежать утомительных расчетов и выбрать наименее трудоемкую схему организации рекурсии.

В тех случаях, когда не удается получить рекуррентное соотношение для функции временной сложности, прибегают к построению дерева рекурсии [6], [7]. Кроме того, дерево рекурсии незаменимо для анализа емкостной сложности рекурсивного алгоритма.

3. Рекуррентные соотношения, характерные для двух основных принципов организации рекурсии

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

рентное соотношение. В самом общем виде значения функции сложности рекурсивного алгоритма вычисляются по формуле:

. . Г с, если 0 ^ п ^ по, . .

£

[ + £г + £„, если п > по ^ 0,

где п — параметр рекурсии; по — размер задачи, при котором время работы алгоритма не зависит от п; с ^ 0 — трудоемкость нерекурсивной ветви (некоторая постоянная величина);

— время сведения задачи к подзадачам; £г — трудоемкость рекурсивной ветви (время выполнения подзадач); — время объединения решений, полученных подзадачами.

При анализе сложности рекурсивных алгоритмов традиционно полагают, что £(п) — монотонно возрастающая функция, областью значений которой выступает множество неотрицательных действительных чисел, а областью определения — множество неотрицательных целых чисел Z+. Эти условия вытекают из природы £(п). Далее мы будем оставаться в их границах.

При использовании принципа “разделяй и властвуй” задача размера п разбивается на подзадачи размера п/к, где к > 1 — некоторая целая константа. В этом случае соотношение (1) принимает более конкретный рекуррентный вид:

с, если 0 ^ п ^ по,

Здесь А(п), В(п) — неотрицательные, монотонно возрастающие, вещественнозначные функции от п € Ъ+, характеризующие затраты на рекурсивный переход. Поскольку к — постоянная величина, то преобразование $(п) = п/к линейно относительно п. Очевидно, что соотношение (2) однозначно определяет функцию £(п) только при п = 0 и п = кт, т € 2+. Для рекурсивных алгоритмов, организованных путем аддитивного уменьшения исходного размера задачи п на целую константу к ^ 1, соотношение (1) приводится к виду:

) =

\ А(п) £ (п — к) + В(п), если п > по ^ 0,

где А(п), В(п) имеют аналогичный смысл, что и в соотношении (2). В данном случае функция $(п) = п — к также задает линейное преобразование размерности исходной задачи в размерность подзадач, а рекуррентное соотношение (3) однозначно определяет функцию £(п) только при п = кт, т € .

Следует особо отметить, что указанные подходы к организации рекурсии применимы лишь к задачам, удовлетворяющим свойству аддитивности. Свойство аддитивности состоит в том, что решение задачи можно получить объединением решений подзадач как уменьшенных (в смысле размера входных данных) копий исходной задачи. Решить соотношения (2), (3) в общем виде не представляется возможным - слишком общий вид они

имеют. Между тем в частном случае, когда А(п) = а и В(п) = 6пт, где а, 6, т - положи-

тельные константы, вид решений соотношений (2), (3) определяют две основные теоремы. При этом константа а задает число подзадач, порождаемых рекурсивной ветвью алгоритма, а степенная функция 6пт определяет трудоемкость рекурсивного перехода.

4. Первая основная теорема

Теорема 1 определяет решение рекуррентного соотношения, которое характерно для рекурсивных алгоритмов типа “разделяй и властвуй”. Впервые данная теорема была доказана

в 1980 г. Дж. Бентли, Д. Хакеном и Дж. Саксом [1], [7]. В метрической теории алгоритмов ее называют основной теоремой о рекуррентных соотношениях.

Теорема 1. Пусть дано рекуррентное соотношение

с, если п =1,

а£ (п/к) + Ьпт, если п > 1,

где а > 0, к > 1 — целые константы, Ь ^ 0, с ^ 0, т ^ 0 — вещественные константы. Тогда при п = кт, т € Ъ+ решением заданного соотношения является функция

если а = кт,

4(кт) =

г(п) =

атс + Ьктт т,

(а/кт)т - 1

атс + Ькт

если а = кт.

(а/кт) - 1 ’

Следствие 1. В предположениях теоремы 1 при больших значениях п и любых Ь > 0 и с ^ 0 справедливы оценки

і

0(пт п), если а = кт

0(пт), если а < кт

0(п'°8к “) , если а > кт

= 0(а'°к п) = 0(п'° к а) .

Если Ь = 0 и с > 0, то всегда

і

Первая основная теорема выявляет ряд особенностей. Все оценки следствия 1 при любых значениях і(1) = с ^ 0 дают полиномиальный порядок роста функции сложности і(п). Стало быть, рекурсия, организованная по принципу "разделяй и властвуй", всегда приводит к полиномиальным алгоритмам. Имеет место явная зависимость сложности вычислений от числа подзадач и от их размера: чем более сбалансированным является разбиение задачи на подзадачи, тем лучшую оценку сложности имеет рекурсивный алгоритм.

5. Вторая основная теорема

Теорема 2 и вытекающие из нее следствия указывают решение и асимптотические оценки для частного случая рекуррентного уравнения (3), которое характерно для рекурсивных алгоритмов, образованных путем аддитивного уменьшения размера задачи на некоторую целую константу к ^ 1. Такие алгоритмы возникают, например, при рекурсивной реализации метода динамического программирования. Теорема 2 была сформулирована в работах [8], [9] и названа автором второй основной теоремой о рекуррентных соотношениях.

Теорема 2. Пусть дано рекуррентное соотношение

. . Г с, если 0 < п < к — 1,

4

а 4 (п — к) + Ьпт, если п ^ к,

где а > 0, к ^ 1 - целые константы, Ь ^ 0, с ^ 0, т ^ 0 - вещественные константы. Тогда при п = кт, т € верны неравенства

с + Ькт-1п ^ £

к

„п/й _ 1 ап/й _ 1

ап/йс + Ькт------- < 4

а 1 а 1

Доказательство. Поскольку п = кш, то для удобства выкладок введем следующую функцию

/

Тогда 4 (кш — к) = 4 (к (т — 1)) = / (т — 1) и соотношение (4) принимает вид

, , Те, если ш = 0,

4 (к ) — л

а4 (кш — к) + 6ктшт, если ш > 0

или

/

\ а/ (ш — 1) + 6ктшт, если ш> 0.

Подстановка соотношения (8) самого в себя дает:

/

где 5 (а, 0, т) = 0, а при ш > 0

5

г=1

Остается найти значение конечной суммы 5 (а, ш, т). При т = 0 (когда затраты на рекурсивный переход не зависят от параметра рекурсии) верны равенства:

5 (а, ш, 0) = ат Чт = 1т 4° = ш, если а =1

1

ат _ 1

5 (а, ш, 0) = V ат-Чт = V ат-Ч° = ат-1 + ат-2 + ... + а° = - , если а = 1.

а1

г=1 г=1

Таким образом, в данном случае решением рекуррентного соотношения (8) является функция

{с + 6ш, если а =1,

т , г, ат — 1л

атс + о--—, если а = 1.

а — 1

Для произвольного вещественного т > 0 значение суммы 5 (а, ш, т) установить крайне сложно. Между тем можно определить оценки сверху и снизу. Действительно, всякое слагаемое в (10) удовлетворяет неравенствам

ат— < ат-Чт < ат-шт, i = 1, 2,.. ., ш,

и равенства достигаются при т = 0. Тогда

""

^ ат-; = 5° < 5

4=1 4=1

Установим значения сумм 5°, 51 при а =1 и а =1. Если а = 1, то

""

5° = ^ а"-4 = ^ 1"-4 = ш,

51 = ^ ат—*тт = ^ 1т—*тт = ^ тт = тт ^ 1 = тт • т = тТ +1.

г=1 г=1 г=1 г=1

Откуда согласно (9), (12) и с учетом а =1 для функции / (ш) справедливы неравенства:

с + Ьктш ^ /

Если а = 1, то

ат — 1

5о — а + а + ... + а —-,

а1

51 = тт (ат—1 + ат—2 + ... + а0) = тт

ат - 1 а1

Следовательно, по (9), (12) верны верхняя и нижняя оценки:

ат 1 ат 1

атс + Ькт-------- < /

а - 1 а - 1

Заметим, что при т = 0 неравенства (13), (14) вырождаются в соответствующие равенства из (11). Подстановка т = п/к в (11), (13), (14) дает требуемые оценки (5), (6).

Формулы (5), (6) теоремы 2 в общем случае не дают точного решения рекуррентного соотношения (4). Они лишь определяют верхние и нижние границы. В этом смысле теорема 2 слабее первой основной теоремы. Тем не менее, в ряде частных случаев можно получить точные решения и оценки. Об этом свидетельствуют дальнейшие утверждения. Следствие 2. В предположениях теоремы 2 при т = 0 решением рекуррентного соотношения (4) является функция

Ь

с + — п, если а =1,

^

а"/йс + Ь--------, если а = 1.

а - 1

Следствие 3. При т = 0, любых значениях с ^ 0 и п ^ то для решения рекуррентного соотношения (4) верны асимптотические оценки

*

\ О(а"/й) , если а = 1, Ь > 0.

В частности, при т = 0, а =1 и Ь = 0 всегда £(п) = О (1).

Следствие 4. Для решения рекуррентного соотношения (4) при т ^ 0, а =1, с ^ 0, Ь> 0

и п ^ то справедлива асимптотическая оценка

£

Доказательство. Не представляет труда найти некоторые значения 5 (а, т, т) при а = 1 . Так, верны равенства

5 (1, т, 0) = т,

т (т + 1) т2 т

5 а."». 1) = —^^ + ^.

т (т + 1) (2т + 1) т3 т2 т

5 (1, т, 2) = ----------------- =-----\-----\---,

V , , ) 6 3 2 6’

9 ( |1\2 4 3 9

_, ч т9 (т + 1) т4 т т

В<1,т,3)= ( 4 1 = х + -^ + -4-.

Подстановка В (1,т, 0), В (1, т, 1) в (9) подтверждает асимптотическую оценку (17). Для случая, когда т > 1 - вещественное число, известно следующее приближение [2]:

В (1, т, т) = £ іт

+ +

і=1

т + 1 2

12

+ 0(тт 2) , т > 1,

с которым вполне согласуются равенства для В (1, т, 2), В (1,т, 3). Отсюда по формулам (7), (9) получаем требуемую оценку (17):

£(п) = 4 (кт) = атс + 6кТВ (1, т, т) = с + 6ктВ (1, т, т) =

с + Ькт

с + Ь

т + 1 2

т тт

+ +

12

кт+1тт + 1 кт тт кткт 1т

+ 0(тТ 2)^

Т — 1™ Т —1

+

к (т + 1) 2

+

12

0(к

т—2тт—2'

к (т +1) 2

12

+ 0(пт—2^ = 0(пт+1) .

Примечательно, что точное значение суммы В (1, т, т) в математике получено лишь для целых положительных т и выражается через комбинаторные числа так [10]:

1

В (1,т,т) = У2 *т = —~гВт+1(х) А' т +1

і=1

т+1

0

і і т

+ і=0

Т +1—і

т + 1

В*

т > 0,

где

Т +1

Вт+1(*) = £ С+1Ві

,т +1—і

с

т+1 і!

(т +1)! і! (т + 1 — і)!

— многочлен Бернулли и биномиальные коэффициенты соответственно, а В* — числа Бернулли, определяемые рекуррентным соотношением

Во = 1, С°Во + С1В1 + С2В2 + ... + с*-1Ві—1 =0, і = 2, 3, ...,

согласно которому В* = 0 для всех нечетных і > 1 и

В0 = 1, В1 = —1, В2 = -, В4 = — —, В6 = —, ....

0 ’ 1 2’ 2 6’ 4 30’ 6 42’

Предельный переход в (18) при т ^ то подтверждает асимптотическую оценку (17). В самом деле, согласно (18) функция В (1, т, т) есть многочлен от (т + 1) степени т +1:

В

1

т +1 1

т +1

(с°+1(т + 1)т+1В0 + СТ+1 (т + 1) В1 + ... + Су+1 (т + 1) Вт) (т + 1)т +1 — т + 1 (т + 1)т + ... + (т + 1) (т +1) В7

т

Значит, В (1, т, т) = О ((т + 1)Т+1) = О(тТ+1) и при а = 1

£(п) = ^;(кт) = атс + 6^ТВ(1, т, т) = О(кТ) • В (1, т, т) = О(кТ) • О(тТ +1) = о((кт)Т+1) = О(пТ +1) .

При а > 1 и целочисленном т ^ 0 непосредственное применение к конечной сумме

т

В (а, т,т) = £ ат-ЧТ

формулы суммирования Эйлера-Маклорена дает еще одну асимптотику.

Следствие 5. Для решения рекуррентного соотношения (4) при а> 1, с ^ 0, Ь > 0 и целых положительных т справедлива оценка

Из (16), (17), (19) следует, что рекурсивные алгоритмы, образованные аддитивным уменьшением размера задачи на некоторую константу, могут быть полиномиальными или экспоненциальными. Так, при В(п) = ЬпТ (когда трудоемкость рекурсивного перехода описывается степенной функцией) алгоритм будет иметь экспоненциальную сложность всегда, если а =1, Ь > 0 и с ^ 0 (или Ь ^ 0 и с> 0).0 чем говорят данные условия? Как следует организовывать рекурсивные вычисления, чтобы они имели полиномиальную сложность? Для получения ответов на эти вопросы необходимо напомнить смысл констант соотношения (4): константа а определяет число подзадач размера п — к, к которым сводится исходная задача; постоянные Ь и т описывают трудоемкость рекурсивного перехода от п к п — к; константа с характеризует временные затраты, необходимые для непосредственного решения задачи, когда ее размерность чрезвычайно мала (0 ^ п ^ к — 1).

Для реальных алгоритмов всегда существуют какие-то затраты на организацию рекурсии, т.е. Ь > 0 и с > 0. Если эти затраты не зависят от п, то т = 0. При т = 0, а = 1 согласно следствию 3 рекурсивный алгоритм имеет линейную сложность. При т ^ 0, а = 1 и п ^ то по следствию 4 для £(п) справедлива оценка £(п) = О(пТ +1). Таким образом, всегда при а = 1 рекурсивный алгоритм, организованный путем уменьшения размера задачи на некоторую константу, является полиномиальным. По следствию 5 при а =1 и целых положительных значениях константы т верна оценка £(п) = О(а”/к). В общем случае, при а =1, любом т ^ 0 и фиксированном значении 1 ^ к < п неравенство (6) свидетельствует о том, что функция £(п) растет не быстрее, чем О(пТа”/к). Для того чтобы ответить на вопрос о нижней грани скорости роста функции £(п), положим в соотношении (4) Ь = 0. Тогда исходное соотношение становится однородным

всегда имеет экспоненциальный порядок роста. Согласно (6), при а =1 частное решение £*(п) рекуррентного соотношения (4) есть функция, которая при больших п растет не быстрее, чем

а£ (п — к), если п ^ к,

а неравенства (5), (6) обращаются в равенство £о(п) = ап/кс. Это равенство можно трактовать как общее решение однородного соотношения (20). При а =1 решение £о(п) = ап/кс

с,

Отсюда следует, при а = 1 функция і(п) = £о(п) + і*(п) растет не медленнее, чем £о(п) = ап/кс, и не быстрее, чем 0(пта"/к). С практической точки зрения это означает, что при числе подзадач а =1 рекурсивный алгоритм всегда экспоненциальный и никакие усовершенствования процедуры разбиения и объединения подзадач не способны изменить класс его сложности.

Если В(п) = 6тп, т ^ 1 (трудоемкость рекурсивного перехода - неубывающая показательная функция), то почти всегда рекурсивный алгоритм будет иметь экспоненциальную сложность. Об этом свидетельствует следующая теорема.

Теорема 3. Пусть дано рекуррентное соотношение

с, если 0 < п ^ к — 1

где а > 0, к ^ 1 - целые константы, Ь ^ 0, с ^ 0, т ^ 1 - вещественные константы. Тогда при п = кт, т € решением соотношения (21) является функция

а”/к (с + Ьп/к), если а = тк,

і(п) = <

/ ап/кс , (а”/Й/т”) - 1\ к

тп-----------+ 6 -- —7------ — , если а < т ,

I тп (а/тк) - 1 у

и.( тк (тп/ап/к) - Л

ап/к с + 6 —  - , если а > тк.

а (тк/а) - 1

Доказательство. Выполнив замену в (21) переменной п на выражение кт, приходим к рекуррентному соотношению

с, если т = 0,

/

а/ (т — 1) + Ьут, если т > 0, где у = тк — константа. Подстановка этого соотношения самого в себя дает

/ (0)= с, / (т) = атс + Ьу (ат-1у0 + ат-2у1 + ... + а0ут-1) , т = 1, 2,.... Пусть г = у/а = тк/а. Тогда

/(т) = а!(c + 66т Гот-т + у +... + а!—ту!—1)) = а“ (c + 6г Е

" Г і

і=0

Возможны три ситуации:

• если г = 1, то

/ т— 1

/(т) = ат I с + 6г гМ = ат (с + 6т) или £(п) = ап/к (с + 6п/к) ;

\ і=0 /

если г > 1, то

/(т) = ат ("с + іг I—| гА = атгт (£ + 611 ;17) = ут (£ + 6

((п) = т •>( ап/кс + 6 ^^) - Л;

I тп (а/тк) - 1 I

или

если г < 1, то

т— 1

/ (т) = ат ( с + Ьг £г4 ) = ат ( с + Ьг 1—^

г=0 —

1 — Г

или

£(п) = ап/к I с + Ь — •

тк (т”/а”/к) - 1'

а (тк/а) — 1

Следствие 6. В предположениях теоремы 3 при больших значениях п, любых т ^ 1, Ь > 0, с > 0 справедливы оценки

^(п) =

0(па”/к ) , 0(тп), 0(ап/к) ,

если а = т

к

если а < тк к

если а > тк

Все оценки следствия 6 указывают на экспоненциальный порядок роста функции £(п). Исключение составляет тривиальный случай, когда т = 1 и а = 1. В этом случае £(п) = О(п). Таким образом, организовывая рекурсию аддитивным уменьшением размерности задачи на некоторую константу к (1 ^ к < п), необходимо учитывать следующее. Асимптотические оценки для функции временной сложности £(п) сильно зависят от а (числа подзадач) и полиномиальные алгоритмы возможны лишь в случае, когда задача размера п сводится только к одной подзадаче размера п — к. Причина экспоненциальной сложности при а = 1 кроется в возникновении на каждом шаге рекурсии перекрывающихся подзадач. Если процедура разбиения и объединения подзадач несовершенна (имеет неполиномиальную трудоемкость), то практически во всех случаях рекурсивный алгоритм будет иметь экспоненциальную сложность.

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

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

Список литературы

[1] А.Ахо, Дж.Хопкрофт, Дж.Ульман, Структуры данных и алгоритмы, М., Вильямс, 2007.

[2] Д.Грин, Д.Кнут, Математические методы анализа алгоритмов, М., Мир, 1987.

[3] Р.Грэхем, Д.Кнут, О.Поташник, Конкретная математика, М., Мир, Бином. Лаборатория знаний, 2006.

[4] С.К.Ландо, Лекции о производящих функциях, М., МЦНМО, 2004.

[5] В.Н.Сачков, Введение в комбинаторные методы дискретной математики, М., Наука, 1982.

[6] В.А.Головешкин, М.В.Ульянов, Теория рекурсии для программистов, М., ФИЗМАТ-ЛИТ, 2006.

[7] Кормен, Ч.Лезерсон, Р.Ривест, Алгоритмы: построение и анализ, М., МЦНМО, 1999.

[8] В.В.Быкова, Дискретная математика с использованием ЭВМ, Красноярск, КрасГУ, 2006.

[9] В.В.Быкова, Асимптотическая оценка сложности рекурсивных алгоритмов с аддитивным уменьшением размерности задачи, Труды шестой Всероссийской ФАМ’2007, Ч. 2. Красноярск, Гротеск, 2007, 17-25.

[10] Г.Корн, Т.Корн, Справочник по математике, М., Наука, 1973.

Mathematical Methods for the Analysis of Recursive Algorithms

Valentina V.Bykova

We prove a theorem that defines asymptotic estimates for the solution of a recurrent relation. This recurrent relation typically describes time complexity functions for recursive algorithms with an additive reduction of the dimension of a given problem. The presented results together with a known main theorem on recurrent relations give a tool for the analysis of the complexity of two most typical recursive schemes. Keywords: complexity of algorithms, recursion, recurrent relations