УДК 519.1
Метод распознавания классов алгоритмов на основе асимптотики эластичности функций сложности
Валентина В.Быкова*
Институт математики, Сибирский федеральный университет, Свободный 79, Красноярск, 660041
Россия
Предложен новый признак выявления классов алгоритмов, основанный на асимптотическом поведении эластичности функций сложности. Использована существующая аналогия между функциями сложности алгоритмов и производственными функциями, темп роста которых в эконометрике традиционно оценивается эластичностью. Доказана теорема, устанавливающая ха-рактеризацию эластичности для быстрых, полиномиальных, субэкспоненциальных, экспоненциальных и гиперэкспоненциальных алгоритмов. Основное достоинство предложенного признака — простота вычисления, обусловленная известными свойствами эластичности.
Ключевые слова: сложность вычислений, эластичность алгоритмов.
Введение
Стремительное повышение производительности современных компьютеров не снимает проблемы разработки алгоритмов, позволяющих за разумное время решать практически значимые NP-полные и NP-трудные задачи большой размерности [5]. Поэтому по-прежнему актуальна задача разработки методов классификации алгоритмов по вычислительной сложности. На специальные методы анализа и классификации алгоритмов опирается современная индустрия математического и программного обеспечения компьютерных систем, так как предполагает постоянный выбор эффективных алгоритмов и установление практической вычислимости решаемых задач.
Классификация задач по сложности — предмет исследования дескриптивной теории алгоритмов, а классификация алгоритмов — метрической. В рамках метрической теории алгоритмов анализ и систематизация алгоритмов осуществляются с точки зрения трудоемкости продуцируемых ими вычислительных процессов. При этом трудоемкость алгоритма формально описывается функцией временной сложности t (n), отражающей максимальное количество элементарных шагов (в рамках принятой модели вычислений), которое необходимо алгоритму для достижения запланированного результата в зависимости от n - длины входа алгоритма или размерности решаемой задачи [7, 9]. Обычно ограничиваются рассмотрением поведения функций сложности в асимптотике при стремлении n к бесконечности, а изложение результатов, касающихся анализа и классификации алгоритмов, ведется в терминах O-большое и о-малое. Традиционное разделение алгоритмов на классы сложности — это выделение низкозатратных (полиномиальных) и высокозатратных (экспоненциальных) алгоритмов. Алгоритм, для которого t (n) = O(nfc) или t (n) = о (nfc), где k — неотрицательное действительное число, называют полиномиальным. Экспоненциальный алгоритм —
* e-mail: [email protected] © Siberian Federal University. All rights reserved.
алгоритм, функция сложности которого растет быстрее любого алгебраического полинома. Инвариантность относительно модели вычислений — основная особенность данной классификации алгоритмов. Именно эта особенность позволяет подобным образом разделять задачи на полиномиально разрешимые и трудноразрешимые [9].
Современная алгоритмическая практика детализировала традиционную классификацию алгоритмов и выявила пять сложностных классов. Были выделены субполиномиальные алгоритмы из полиномиального класса, субэкспоненциальные и гиперэкспоненциальные алгоритмы из экспоненциального класса. В настоящее время к субполиномиальным (быстрым) принято относить алгоритмы, время выполнения которых при больших п растет медленнее любого полинома, а к субэкспоненциальным — алгоритмы, для которых порядок роста функций £ (п) выше любого полинома пк, к > 0, и ниже всякой экспоненты еЛп, Л > 0. К гиперэкспоненциальным причисляют алгоритмы с оценкой еЛп = о [£ (п)], Л > 0. Быстрые и субэкспоненциальные алгоритмы — предмет повышенного внимания современных теоретических и прикладных исследований проблем информационной безопасности [2, 11]. Поэтому имеется потребность в простых и удобных для практики методах распознавания всех пяти сложностных классов алгоритмов. Использование непосредственного асимптотического оценивания для этих целей сопряжено в большинстве случаев с трудностями вычислительного характера. Известны попытки введения классификационных признаков, позволяющих распознавать современные классы алгоритмов. Например, авторы работы [3] предложили в качестве такого признака употреблять угловую меру асимптотического роста функций сложности, которая по определению числовая. Однако, как показали исследования [1], применение угловой меры в практике анализа алгоритмов ограничено в силу двух причин. Во-первых, вычисление данной меры порой затруднительно из-за громоздкости выкладок. Это имеет место даже в тех случаях, когда сложность исследуемых алгоритмов описывается простыми по виду логарифмически-экспоненциальными функциями (например, каскадами логарифмов, показательными полилогарифмами и т.п.). Во-вторых, угловая мера хотя и выделяет все используемые в данное время классы сложности алгоритмов, но сравнение алгоритмов, входящих в один и тот же класс, возможно не для всех сложностных классов. Так, все быстрые, субэкспоненциальные и гиперэкспоненциальные алгоритмы характеризуются постоянной угловой мерой (0, п/2 и п соответственно). Сравнение таких алгоритмов между собой невозможно без непосредственного асимптотического оценивания. Таким образом, угловая мера асимптотического роста функций лишь частично решает проблему детальной классификации алгоритмов по вычислительной сложности, поэтому настоящая проблема остается пока открытой. В данной статье предлагается в качестве классификационного признака алгоритмов использовать асимптотическое поведение эластичности их функций сложности на бесконечности.
Соглашения относительно функций сложности
Формальный подход к классификации и анализу алгоритмов требует уточнения свойств рассматриваемых функций сложности £ (п). Относительно £ (п) далее действуют три соглашения. Во-первых, полагается, что £ (п) — монотонно неубывающие функции, областью значений которых выступает множество неотрицательных действительных чисел М+, а областью определения — множество неотрицательных целых чисел Z+. Это соглашение вполне соответствует природе £(п) как функций, характеризующих трудоемкость выполнения алгоритмов. Во-вторых, допускается отступление от дискретности изменения п (с формальной
заменой п на х) — предположение, что аргумент х € К+ и непрерывен, а необходимые значения функции £ (п) вычисляются в целочисленных точках х = п. Данное соглашение продиктовано необходимостью привлечения к исследованию алгоритмов инструментов математического анализа. В-третьих, рассматриваемое множество функций сложности ограничивается семейством "по существу положительных" логарифмически-экспоненциальных С-функций.
Напомним, что семейство С — это множество функций, введенное Г.Х. Харди [10]. Семейство С определяется рекурсивно по правилам: постоянная / (х) = с лежит в С для всех действительных с; тождественная функция / (х) = х входит в С; разность / (х) — ц (х) двух С-функций также является С-функцией; если / (х) € С, то е1€ С; если / (х) € С и является "по существу положительной" функцией, то 1п / (х) относится к С. Функция / (х) считается "по существу положительной", если существует хо такое, что / (х) > 0 для всех х > хо. Из данных правил следует, что если / (х), ц(х) € С, то
/ (х) + ц (х) = / (х) — (0 — ц (х)) € С;
если / (х) и ц (х) — "по существу положительные" С-функции, то
/ (х) • ц (х) = е1п 1 (ж)+1п € С, / (х) /ц (х) = е1п 1(ж)-1п € С;
любая степенная функция хк = ек 1п ж € С при х >1, к >0; для "по существу положительных" С-функций и = и (х) и т = т (х) показательно-степенная функция общего вида иш входит в семейство С.
Известно, что каждая С-функция непрерывна и дифференцируема в той области, где она определена. Кроме того, всякая С-функция является либо "по существу положительной", либо "по существу отрицательной", либо тождественно равной нулю. Главная теорема Харди о С-функциях констатирует, что эти функции образуют асимптотическую иерархию [4, 10]: если / (х), ц (х) € С, то при х ^ то либо / (х) — ц (х), либо / (х) ^ ц (х), либо / (х) = О[ц (х)]. Заметим, что используемая здесь и далее О-символика трактуется в смысле асимптотической пропорциональности функций:
/ (х)
/ (х) = О[ц (х)] ^ / (х) - сц (х) ^ Иш Цх- = с > 0.
х^то ц (х)
Кроме того, для сравнения двух функций по скорости роста на бесконечности далее применяются отношение Поль-Дюбуа Раймона — и о-малое:
/ (х)
/ (х) — ц (х) ^ / (х)= о [ц (х)] ^ Иш Ш =0.
ж^то ц (х)
Установление границ рассматриваемого множества функций в виде семейства монотонно неубывающих, "по существу положительных" С-функций обеспечивает существование эластичности и возможность сравнения любых двух функций сложности алгоритмов по скорости роста. Важно, что всякая такая функция — либо отличная от нуля постоянная (тождественная или асимптотическая), либо положительная бесконечно большая величина при х ^ то. Далее везде под С-функциями понимаются именно такие функции. Введенные соглашения не ограничивают практическую значимость представленных далее результатов, поскольку функции сложности почти всех реальных алгоритмов входят в С.
Эластичность и ее свойства
Производственной функцией в эконометрике называют аналитическое соотношение, связывающее переменные величины затрат (ресурсов) с объемом выпуска продукции. Для оценки поведения производственных функций обычно применяют различные дифференциальные характеристики. Наиболее популярная из них — эластичность. Понятие эластичности было введено А.Маршаллом [6] для анализа функции спроса. По существу, это понятие является чисто математическим и может быть применено для исследования любых непрерывных и дифференцируемых функций. Предлагаемая в настоящей работе область приложения эластичности — выделение сложностных классов алгоритмов. В самом деле, функция сложности алгоритма по своему назначению схожа с производственной функцией. Она указывает, как зависит количество необходимых для выполнения алгоритма вычислительных ресурсов от размерности задачи (объема или длины исходных данных). В этом смысле функция сложности описывает обратную зависимость, нежели производственная функция: если производственная функция — это связь "ресурсы ^ объем", то функция сложности алгоритма — "объем ^ ресурсы".
Под эластичностью Ех (у) функции у = / (х) принято понимать предел отношения относительного приращения этой функции к относительному приращению аргумента [8]:
т? < \ г (ДУ АхЛ ж 1- ау х , п ч/ (1пу)' т
Ех (У) = Ит - : - = "Л11тпХ~ = "У = х (1п У) = 7,-V . (1)
Дх^Ц у X ) у Дх^0 Ах у (1п ж)
Ясно, что для дифференцируемой, монотонно неубывающей функции у = f (х) > 0 на (0, то) всегда существует эластичность и Ех (у) ^ 0. Согласно (1) при достаточно малых Ах справедливо приближение
Ау ~ т? < \ Ах -« Ех(у)-,
ух
которое означает, что эластичность Ех (у) — коэффициент пропорциональности между темпами роста величин у и х.
Непосредственное применение (1) дает формулы эластичностей основных элементарных функций:
Ех(1п х) = —, Ех (хк) = к, к > 0, Ех(еЛх) = Лх, Л> 0. 1п х
Справедливы свойства, значительно упрощающие процесс вычисления эластичностей
[8].
1. Всякая постоянная у = с > 0 имеет нулевую эластичность.
2. Эластичность — безразмерная величина:
Ех (у) = Еах (Ьу) .
3. Эластичность обратной функции х = /-1 (у) — обратная величина:
Еу (х) = 1
Ех (у)'
4. Эластичность произведения функций и = и (х) и ад = ад (х) равна сумме их эластичностей:
Ех (и • ад) = Ех (и) + Ех (ад).
5. Эластичность отношения функций и = и (х) и ад = ад (х) равна разности их эластич-ностей:
Еж (и/ад) = Еж (и) — Еж (ад).
6. Эластичность суммы функций и = и (х) и ад = ад (х) — сумма эластичностей слагаемых, взятых с соответствующими весами:
и ад
Еж (и + ад) = -—--- Еж (и) + -—--- Еж (ад).
(и + ад) (и + ад)
7. Эластичность показательно-степенной функции общего вида у = и"1, где и = и(х) и ад = ад(х), задается соотношением
Еж (у) = ад (Еж (ад) 1пи + Еж (и)).
В частности,
ew(x)
= wEx (w). (2)
Ex
8. Эластичность композиции функций y = f (w) и w = w (x) равна
Ex (y) = Ew (f) • Ex (w).
Данные свойства приводят к следующим формулам эластичностей каскадов логарифмов, "башен" и экспонент общего вида соответственно:
Ex (In ln... lnx) = --—-1——-:—, k > 1;
4---' ln x • ln ln x • ... • In ku.. lnx
k раз
Ex( )= x2x22X... 2^^ (ln2)k , k > 1;
k этажей k—1 этажей
Ex (eAxW<x^ = Axw(x) w (x) (Ex (w) ln x +1). Для функций субэкспоненциального порядка роста
y = ^ (in x)1-i, a > 0, 0 <e< 1, (3)
описывающих сложность многих распространенных теоретико-числовых алгоритмов [2, 11], эластичность равна
Ex (eAx£(lnx)1-£) = Ax« (lnx)1—5 ^ +1-= °[x? (lnx)1—5] = o (x).
Утверждение 1. Эластичности С-функций — тождественно постоянные, бесконечно малые или бесконечно большие при x ^ ж логарифмически-экспоненциальные функции, образующее асимптотическую иерархию. Для монотонно неубывающей С-функции всегда
Ex (y) > 0, Ex (y) = o (^ .
Асимптотическое поведение эластичности С-функции y = f (x) инвариантно относительно полиномиального преобразования, заключающегося в умножении функции на константу c > 0 и возведению в положительную и отделенную от нуля степень k > 0, т.е. Ex acyk) = O[Ex (y)].
Верность утверждения 1 вытекает из определения и свойств эластичности, правил построения семейства L-функций и упомянутой главной теоремы Харди. □ Утверждение 2. Пусть 1 — f (x) и 1 — q (x), т.е. lim f (x) = ж, lim q (x) = ж. Тогда
x—x—
если ln f (x) — ln q (x), то f (x) — q (x).
Это известное в математическом анализе высказывание, называемое леммой о логарифмическом пределе [12].
Утверждение 3. Пусть f (x), q (x) G L и 1 — f (x), 1 — q (x). Тогда если Ex (f) — Ex (q), то f (x) — q (x).
Доказательство. Действительно, по условию данного утверждения,
Ex (f) x (ln f (x))' (ln f (x))'
lim r, / , = lim = lim = 0.
x—to Ex (q) x—to x (ln q (x)) x (ln q (x))
Кроме того, f (x) и q (x) — бесконечно большие величины. Значит, ln f (x) и ln q (x) — также бесконечно большие при x ^ ж. Поэтому
(ln f (x))' , ln f (x)
lim =0 ^ lim ; = 0.
x (ln q (x)) x—TO ln q (x)
Отсюда ln f (x) — ln q (x), и по лемме о логарифмическом пределе, f (x) — q (x). □
Утверждение 3 свидетельствует о том, что иерархия эластичностей порождает идентичную иерархию L-функций. Между тем обратное не всегда верно. Как будет показано далее, если f (x) — q (x), то Ex (f) — Ex (q) или Ex (f) = O[Ex (q)].
Шесть классов L-функций
Очевидно, что если функция f (x) G L, то она представима в виде экспоненты f (x) = ew(x), где w (x), например, задается выражением w (x) = ln f (x) G L. Такие экспоненты образуют асимптотическую иерархию, при этом
ew1(x) ew2 (x) Отсюда вытекает справедливость следования
eWl(x) ^ ew2(x) ^ lim [wi (x) - W2 (x)] = -ж.
x—
w1(x) ew2 (x)
1 -< (х) -< (х) ^ еШ1(х) -< е'
Руководствуясь данным положением и асимптотическим подходом, определим на рассматриваемом семействе £ шесть классов функций, с принципиально различным порядком роста:
асимптотические константы
Const = {f (x) | f (x) = O(1)} ; функции субполиномиального порядка роста
Subpoly = {f (x) 1 ^ f (x) ^ eO(lnx)J ;
функции полиномиального порядка роста
Poly = { f (x)|f (x) = o[e0(ln x)
функции субэкспоненциального порядка роста
Subexp = {f (x) e0(ln x) ^ f (x) ^ e0^ } ;
функции экспоненциального порядка роста
Exp ={ f (x)|f (x)= o[e°(x)]} ;
функции гиперэкспоненциального порядка роста
Hyperexp = j f (x) e0^ -< f (x) j .
Класс Const составляют функции, значения которых на бесконечности ограничены сверху некоторой отличной от нуля константой. Это, прежде всего, асимптотические константы. Конечно, к классу Const относятся все тождественно постоянные L-функции.
Классу Subpoly принадлежат функции, которые не входят в класс Const и которые растут медленнее любого полинома. Например, это каскады логарифмов, показательные полилогарифмы
_A(ln
eA(ln x)m, Л > 0, 0 < m < 1,
полилогарифмы
(lnx)m = emlnlnx, m > 0. Класс Poly преимущественно состоит из обычных полиномов
f (x) = O(xk) = O(eklnx) , k> 0.
Он также включает в себя обобщенные полиномы
f (x) = O(ek lnx)q (x), q (x) G Const, Subpoly.
Класс Poly допускает определение не только через O-большое, но и с помощью отношения Поль-Дюбуа Раймона:
Poly = {f (x) 3k > 0 : e(fc-e)lnx ^ f (x) ^ e(fc+e)lnx, e ^ +0 } .
(4)
Класс БпЬвхр образуют функции, которые растут быстрее любого полинома и медленнее всякой показательной функции. В класс БпЬвхр, в частности, входят функции вида (3), показательно-степенные логарифмы
(lnx)mlnx = emlnxlnlnx, m > 0,
показательные полилогарифмы
cA(ln x)m-1 = eA(ln x)m, Л > 0, m > 1.
-1
Класс Exp содержит показательную функцию y = 0(еЛж), Л > 0, а также обобщенные
up содержит показательную функцию y — о^
экспоненты
f (x) — O(eAx) q (x), q (x) G Const, Subpoly, Poly, Subexp.
Этот класс функций можно задать с помощью отношения Поль-Дюбуа Раймона следующим образом:
Exp = { f (x) ЗЛ> 0: еЛж1-Е ^ f (x) ^ eW+E, е ^ +0} . (5)
Так, классу Exp принадлежат обобщенная экспонента y = ex+(ln x) , одноэтажная "башня" 2x = ex 1п 2. Показательно-степенная функция xx = ex 1п x и "башни" с двумя и более этажами входят уже в класс Hyperexp. Функции этого класса растут быстрее, чем всякая экспонента вида eO(x).
Леммы об эластичности различных классов L-функций
Лемма 1. Если f (x) G Const, то Ex (f) = 0 или Ex (f) = o (1).
Доказательство. Если y = f (x) - тождественная постоянная, то по свойству 1 эластичности (эластичность константы) Ex (f) = 0. Пусть теперь y = O(1). Поскольку ln xEx (y) = o (y) в силу утверждения 1, то при x ^ ж
Ex [°(1)] — ¿0 (!) — o (!).
Лемма 2. Функция f (x) G Poly ^ Ex (f) — O(1).
(6) □
Доказательство. Пусть / (х) = в°(1п х). Учитывая свойство 4 эластичности (эластичность произведения), формулу (2) и оценку (6), имеем:
Ex [O (In x)] — Ex [(In x) O(1)] — Ex (In x) + Ex [O(1)] — -L + _L о (1) ;
In x In x
lim Ex
= O(ln x)
— lim O (In x) Ex [O (In x)] —
x —> oo
— lim (In x) 0(1)^ + Л о (1)1 — O(1).
x—o \ In x In x
(7)
(8)
Пусть f (x) — O[eO(lnx)] — eO(lnx)O(1) при x ^ ж. Тогда
Iim Ex (f) — Iim Ex
eO(ln x
)O(1)
— Iim Ex
= O(ln x)
+ Iim Ex [O(1)] — O(1).
Докажем справедливость обратного утверждения. Пусть f (x) — функция с асимптотически постоянной эластичностью, т.е.
lim Ex (f) = c > 0.
x—
Воспользовавшись определением эластичности и правилом Лопиталя, получаем
^ , (In f (x))' , In f (x)
Iim Ex (f) — Iim _ v // — Iim —7———- — c> 0.
(In x) '
In x
x
x
Существование конечного предела (9) означает: для произвольного сколь угодно малого е > 0 найдется такое S (е) > 0, что при x > S (е) будут выполняться неравенства
ln f (x)
c - £ < / V 7 < c + £. ln x
С учетом монотонности логарифма и экспоненты данные неравенства преобразуются к виду
е(с-е) In x < f (x) < e(c+e)ln x.
В этих условиях всегда можно подобрать константу k > 0 и ничтожно малую постоянную е > 0 так, чтобы
e(fc-e)lnx — f (x) — e(fc+e)lnx. Но такие функции, согласно (4), находятся в классе Poly. □
Лемма 3. Если функция f (x) G Subpoly, то Ex (f) = o (1). Если Ex (f) = o (1), то f (x) G Subpoly или f (x) G Const.
Доказательство. Пусть f (x) G Subpoly, т. е. 1 — f (x) — eO(ln x). Это значит, что f (x) — бесконечно большая величина, и ее можно представить в виде
f (x) = o|eO(lnx)/y(x)] = eO(lnx)/Y(x)O(1), 1 - y (x), y (x) = o (lnx), (10)
где y (x) G L. Отметим, что в представлении (10) условие y (x) = o (ln x) необходимо, чтобы исключить случай f (x) = O(1), так как 1 — f (x). По утверждению 1 для y (x) G L верна оценка
(ln x) E (y) = o (1). (ii)
Y (x)
Применение к (10) свойств эластичности, оценок (6), (7), (11) приводит к пределу lim Ex (f) = lim Ex |eO(lnx)/Y(x)O(1)l = lim Ex [eO(lnx)/Y(x)l + lim Ex [O(1)] =
lim Ex
eO(ln x)/Y(x)
+ o (1) = lim O (ln x) /y (x) Ex [O (ln x) /y (x)]
= lim lnx O((1) (Ex [O (lnx)] - Ex (y)) =
x^to Y (x)
= lim Yn-^lV- + TJ1-o (1) - Ex (y)) =
x^to Y (x) \ln x ln x у
1 , , NN , ln x Ex (y) = lim —-—- (1 + o (1)) - lim -y^1 = 0.
x^TO Y (x) x^TO Y (x)
Следовательно, Ex (f) = o (1).
Пусть Ex (f) = o (1). Учитывая (8), и подавно Ex (f) = o [Ex (eO(lnx))], т.е. Ex (f) — Ex (eO(lnx)). Отсюда по утверждению 3 получаем f (x) — eO(lnx). Такие функции принадлежат Const или Subpoly. □
Лемма 4. Функция f (x) G Exp ^ Ex (f) = O(x).
Доказательство. Предположим, что f (x) = eO(x). Выполняя рассуждения, аналогичные рассуждениям леммы 2, и используя оценку (6), имеем
Ex [O(x)] = Ex [xO(1)] = Ex (x) + Ex [O(1)] = 1 + JL o (1); (12)
lim Ex[eO(x)] = lim O(x) Ex[O(x)] = lim O(x) (1 + --o (1)) = O(x). (13)
x—x—><ж x—ln X
Пусть теперь f (x) = O[eO(x)] = eO(x)O(1). Применение (6), (13) дает
lim Ex (f )= lim Ex eO(x)O(1)
lim Ex
= O(x)
+ lim Ex [O(1)] = O(x) .
Докажем обратное. Допустим, что Ех (/) = О(х), т.е. Ех (/) = О (е1пх) € Ро/у. Тогда в соответствии с (4) всегда можно подобрать ничтожно малое е > 0 так, чтобы
e(1-£)ln x — Ex (f) — е(1+£)
ln x
или, то же самое,
„1-£
— Ex (f) — x1+£.
Если Ex (f) — x1+£, то по утверждению 3 Ex (f) = o(x1+£) =
Л (1 + е)
Аналогично, если x1 £ — Ex (f), то
1 Ex Ге—
Ex
Ax^
е
^ f (x) —
„Ax!+e
„1-£
1-Ex feAxl-E) = o[Exf™ - -Axl
Л(1 - е)
o[Ex (f)] ^ eAx — f (x).
Это отвечает (5) и f (x) G Exp. □
Лемма 5. Функция f (x) G Subexp ^ 1 — Ex (f) — x.
Доказательство. Пусть f (x) G Subexp. Поскольку f (x) — eO(x), то функция f (x) представима в виде
f (x) = O
= O(x)/7(x)
= eO(x)/7(x)
O(1), 1 — y (x), y(x) = o(x),
(14)
где 7 (х) € £. Ограничение 7 (х) = о(х) введено, чтобы исключить случай, когда / (х) становится убывающей функцией. Из (14), свойств эластичности и оценок (6), (11), (12) имеем
Ex (f) = Ex
= Ex
= O(x)/7(x)
Ex
= O(x)/7(x)
+ Ex [O(1)]
= O(x)/7(x)
+ o (1) = O(x) /y (x) Ex [O(x) /y (x)] + o(1) =
= + (1) - ^ o (1),
Um ^ = llm OÜ Л+1 (1) - Ex(7)) + o (1)= Um = 0.
x^to x x^to 7 (x) у ln x у x^to ln x
Это означает, что Ex (f) — x.
Предположим, что eO(ln x) — f (x). Отсюда
f (x) = O |eO(lnx)y(x)] = eO(lnx)y(x)0(1) , 1 — 7 (x),
x
=o
где 7 (х) € £. Тогда из неравенства Еж (7) ^ 0, свойств эластичности и оценок (6), (7) следует, что
Ex (f) — Ex |_eO(lnx)Y(x)O(1)j — Ex |_eO(lnx)Y(x)j + Ex [O(1)] —
— O( In x) y (x) Ex[ O( Inx) y (x)] + о (1) —
— In xO(1) y (x) (m^x + (1)+Ex (y 0 +o (1) —
— O(1) y (x)(1 + о (1)+Inx Ex (y)) + О (1),
x—0 Exf) — x—0 O(1) y (x)(1 + о (1) + In xEx(y))+ о (1) —
— Iim —-— 0.
x—o y (x) (1 + Inx Ex(y))
Справедливость обратного положения вытекает из утверждения 3. В самом деле, если Ex (f) — о (x), то согласно (13) Ex (f) — о [Ex (eO(x))]. Следовательно, f (x) — eO(x). Если
1 — о [Ex (f)], то с учетом (8) также Ex (eO(lnx)( — о [Ex (f)]. Таким образом, eO(lnx) — f (x). □
Лемма 6. Функция f (x) G Hyperexp ^ x — Ex (f).
Доказательство этой леммы подобно доказательству леммы 5 и основано на представлении функции f (x) G Hyperexp в виде f (x) — O [eO(x)7(x)], где y (x) G L и 1 — y (x).
Теорема о классификации L-функций
Из лемм 1-6 вытекает важный вывод: различным классам L-функций свойственно принципиально различное поведение эластичности и, наоборот, по асимптотике поведения эластичности L-функции можно определить класс, к которому относится эта функция. Данное соответствие однозначно, если объединить Const, Subpoly в один класс Subpoly*. Этот класс будет содержать все L-функции, которые, если и растут с увеличением аргумента, то растут медленнее любого полинома. Среди них возможны как асимптотически постоянные, так и бесконечно большие величины. Теперь результаты лемм 1 - 6 и утверждения 1 можно объединить в следующую теорему.
Теорема 1. Разбиение семейства монотонно неубывающих, "по существу положительных" L-функций на классы Subpoly*, Poly, Subexp, Exp, Hyperexp в соответствии с порядком их роста эквивалентно надлежащему разбиению по асимптотике эластичности этих функций на бесконечности:
Subpoly* — {f (x) | f (x) — eO( lnx)} = {f (x) | Ex (f) — о (1) };
Poly — {f (x) J f (x) — O [eO( ln x)] } = {f (x) | Ex (f) — O (1) };
Subexp — {f (x) I eO(lnx) — f (x) — eO(x) } = {f (x) | 1 — Ex (f) — x };
Exp — {f (x) |f (x) — O [eO(x)] } = {f (x) | Ex (f) — O(x)};
Hyperexp — {f (x) | eO(x) — f (x) } = {f (x) | x — Ex (f) }.
Данное разбиение инвариантно относительно полиномиального преобразования, заключающегося в умножении L-функции на константу c > 0 и возведению в положительную и отделенную от нуля степень k > 0.
Классификация алгоритмов по асимптотике эластичности функций сложности
Теорема о классификации L-функций позволяет систематизировать алгоритмы по асимптотическому поведению эластичности функций сложности. Пусть t (n) — функция сложности алгоритма, где n — размерность задачи. Для выяснения принадлежности алгоритма к классу сложности требуется формальный переход от дискретного аргумента n к непрерывному x. Применительно к функции t (x) эластичность Ex (t) — коэффициент пропорциональности между темпами роста величин t и x:
A « Ex (t)^
tx
Это означает, что если значение x (размерность задачи) повышается на один процент, то значение t (время выполнения алгоритма) увеличивается приблизительно на Ex (t) процентов. В соответствии с данным физическим смыслом эластичности, теорема о классификации L-функций порождает пять сложностных классов, которые полностью отвечают современной детальной классификации алгоритмов.
Класс быстрых алгоритмов — это множество алгоритмов, для которых функции сложности t (x) G Subpoly*. Такие функции имеют тождественно нулевую или бесконечно малую эластичность, поэтому для быстрых алгоритмов время работы либо вообще не зависит от длины входа, либо темп роста времени выполнения алгоритма асимптотически ниже темпа роста размерности решаемой задачи.
Класс полиномиальных алгоритмов — это множество алгоритмов, для которых функции сложности принадлежат классу Poly, а эластичность этих функций есть асимптотически постоянная величина. Для алгоритмов этого класса темп роста времени их работы асимптотически соизмерим с темпом роста размерности задачи.
Следует отметить, что классы быстрых и полиномиальных алгоритмов относятся к полиномиальным в классической систематизации. Их принято считать эффективными, практически значимыми, работающими "в реальном масштабе времени". Поведение эластичности, присущее им, подтверждает и объясняет "реальный масштаб времени".
Класс субэкспоненциальных алгоритмов — алгоритмы, для которых функции сложности входят в класс Subexp. Это алгоритмы с более чем полиномиальной и менее чем экспоненциальной сложностью. Такие алгоритмы применяются для решения задач малой и средней размерности. Эластичность Ex (t) субэкспоненциального алгоритма — бесконечно большая величина, порядок роста которой характеризуется отношениями 1 — Ex (t) — x. Таким образом, для субэкспоненциальных алгоритмов темп роста времени выполнения значительно выше темпа роста размерности задачи. Между тем он все же ниже, чем
At Ax
— « x-= Ax.
tx
Класс экспоненциальных алгоритмов — это алгоритмы, для которых функции сложности t (x) G Exp. Для них эластичность Ex (t) = O(x) — бесконечно большая величина, асимптотически пропорциональная линейной функции. Функции с подобной эластичностью описывают законы естественного роста — скорость увеличения такой функции прямо пропорциональна ей самой:
t' (x) _ Ex (t)
t (x)
= O(1).
x
Подобным законам подчиняются, например, рост числа бактерий, увеличение денежного вклада при постоянном процентном приращении, процесс радиоактивного распада и др. Все это стремительно протекающие процессы. Время выполнения экспоненциальных алгоритмов растет так быстро, что на практике их можно использовать лишь для задач малой размерности.
Класс гиперэкспоненциальных алгоритмов - это алгоритмы, с функциями сложности t (x) G Hyperexp. Для них x — (t). Темп роста гиперэкспоненциальных функций настолько высокий, что не укладывается в естественные законы природы. В настоящее время алгоритмы класса Hyperexp практически неприменимы. Только мощный прорыв в быстродействии вычислительной техники (например, появление квантовых компьютеров или биокомпьютеров) позволит в будущем использовать такие алгоритмы при решении практических задач.
Классы субэкспоненциальных, экспоненциальных, гиперэкспоненциальных алгоритмов в классической систематизации составляют множество экспоненциальных алгоритмов. Эластичность функции сложности всякого алгоритма из данных классов — переменная бесконечно большая величина.
Совершенно неэластичные, эластичные и совершенно эластичные алгоритмы
Вновь обратимся к существующей аналогии между функциями сложности алгоритмов и производственными функциями. В экономических науках производственные функции с бесконечно большой положительной эластичностью называют совершенно эластичными. Например, для монотонно убывающей функции спроса D = D (p), где p - цена некоторого товара, эластичность (D) = ж означает, что самое малое снижение цены побуждает покупателя увеличивать покупки от нуля до предела своих возможностей. Совершенно неэластичный спрос (D) = 0 задает другой крайний случай: изменение цены не приводит ни к какому изменению спроса. Средний случай, когда |Ep (D)| = c > 0 — константа, подразделяют на два: при c > 1 спрос считают эластичным, а при c < 1 - неэластичным [6, 8].
Поскольку функция сложности описывает обратную зависимость, нежели производственная функция, то применительно к сложностным классам алгоритмов уместна следующая терминология. Так, алгоритмы с функциями сложности из классов Subexp, Exp, Hyperexp целесообразно назвать совершенно эластичными, из класса Poly — просто эластичными, а быстрые алгоритмы — совершенно неэластичными. Если в экономических науках наибольший интерес вызывают эластичные и совершенно эластичные зависимости, то в метрической теории алгоритмов наоборот — совершенно неэластичные и эластичные алгоритмы.
Заключение
Предложенная детальная классификация алгоритмов на основе асимптотического поведения эластичности их функций сложности имеет ряд достоинств. Она не разрушает прежней, традиционной классификации с полиномиальными и экспоненциальными алгоритмами, а лишь дополняет и уточняет ее. Свойства эластичности позволяют без особого труда
вычислять ее для большинства функций сложности и определять сложностный класс исследуемого алгоритма. Возможно сравнение функций сложности, принадлежащих одному классу. Имеет место инвариантность введенных классов алгоритмов относительно модели вычислений и любых полиномиальных преобразований функций сложности. Допустимо дальнейшее развитие данной классификации в части использования эластичности функций многих переменных, введения классов алгоритмов, например, с полиномиальной, субэкспоненциальной и экспоненциальной эластичностью.
К ограничениям рассмотренной классификации следует отнести требование принадлежности функций сложности алгоритмов к семейству Харди. Однако в большинстве реальных случаев это требование является вполне естественным и не вызывает особых трудностей при анализе алгоритмов. Хочется надеяться, что широкая практика применения предложенной систематизации алгоритмов выявит другие ее плюсы и минусы.
Список литературы
[1] В.В.Быкова,Т.П.Портнягина, Исследование угловой меры асимптотического роста функций сложности алгоритмов, Труды Седьмой Всероссийской ФАМ'2008 конференции, Ч. 2, Красноярск, СФУ, 2008, 47-57.
[2] О.Н.Василенко, Теоретико-числовые алгоритмы в криптографии, М., МЦНМО, 2006.
[3] В.А.Головешкин, М.В.Ульянов, Метод классификации вычислительных алгоритмов по сложности на основе угловой меры асимптотического роста функций, Вычислительные технологии, 11(2006), №1, 52-62.
[4] Р.Грэхем, Д.Кнут, О.Поташник, Конкретная математика, М., Мир, Бином. Лаборатория знаний, 2006.
[5] М.Гэри, Д.Джонсон, Вычислительные машины и труднорешаемые задачи, М., Мир, 1982.
[6] К.Доугерти, Введение в эконометрику, М., ИНФРА-М, 2001.
[7] Т.Кормен, Ч.Лейзерсон, Р.Ривест, Алгоритмы: построение и анализ, М., МЦНМО, 1999.
[8] А.С.Солодовников, В.А.Бабайцев, А.В.Браилов, И.Г.Шандра. Математика в экономике, М., Финансы и статистика, 2001.
[9] В.А.Успенский, А.Л.Семенов, Теория алгоритмов: основные открытия и приложения, М., Наука, 1987.
[10] Г.Х.Харди, Курс чистой математики, М., ИЛ, 1949.
[11] А.Л.Чмора, Современная прикладная криптография,М., Гелиос АРВ, 2001.
[12] И.П.Натансон, Краткий курс высшей математики, СПб., Лань, 1997.
Recognition Method of Algorithms Classes on the Basis of Asymptotics for the Elasticity of Complexity Functions
Valentina V.Bykova
We offer a new indication to recognize the algorithms classes which is based on the asymptotic behavior of the elasticity of complexity functions. The present day analogy for functions of complexity algorithms and produced functions is used, the rate of which is traditionally evaluated by elasticity in econometrics. The theorem that states the characterization of elasticity for rapid, polynomial, subexponential, exponential and hyperexponential algorithms has been proved. The principal advantage of the suggested indication is that it allows the simplicity of computation caused by the well-known properties of elasticity.
Keywords: computation complexity, elasticity of algorithms.