2010 Математические основы информатики и программирования №2(8)
МАТЕМАТИЧЕСКИЕ ОСНОВЫ ИНФОРМАТИКИ И ПРОГРАММИРОВАНИЯ
УДК 591.1
ЭЛАСТИЧНОСТЬ АЛГОРИТМОВ
В. В. Быкова
Институт математики Сибирского федерального университета, г. Красноярск, Россия
E-mail: [email protected]
Приведены характерные особенности эластичности субполиномиальных, полиномиальных, субэкспоненциальных, экспоненциальных и гиперэкспоненциальных классов алгоритмов. Дана методика сравнения алгоритмов по асимптотике поведения эластичности функций вычислительной сложности.
Ключевые слова: сложность вычислений, анализ алгоритмов.
Современная индустрия программного обеспечения и средств информационной безопасности компьютерных систем диктует необходимость развития специальных методов анализа и классификации алгоритмов. В теории сложности вычислений классификация алгоритмов традиционно осуществляется с точки зрения вычислительной сложности— трудоемкости продуцируемых алгоритмами вычислительных процессов. При этом вычислительная сложность алгоритма формально описывается функцией временной сложности t(n), отражающей максимальное количество элементарных шагов, которое необходимо алгоритму для достижения запланированного результата в зависимости от n — длины входа алгоритма [1]. Обычно ограничиваются рассмотрением поведения функций сложности в асимптотике при стремлении n к бесконечности, а изложение результатов ведется в терминах O-большое и о-малое [2-4]. До недавнего времени алгоритмы подразделяли на низкозатратные (полиномиальные) и высокозатратные (экспоненциальные). В сегодняшней программной инженерии используется пять сложностных классов алгоритмов. Выделены субполиномиальные (быстрые) алгоритмы из полиномиального класса, субэкспоненциальные и гиперэкспоненциальные алгоритмы из экспоненциального класса. Субполиномиальные и субэкспоненциаль-ные алгоритмы — область повышенного интереса современных криптографических систем [5-7]. Использование непосредственного асимптотического оценивания для распознавания всех пяти сложностных классов алгоритмов в большинстве случаев сопряжено с трудностями вычислительного характера. В данной работе в качестве меры вычислительной сложности алгоритма взята эластичность функции t(n).
1. Характеристика исследуемого семейства функций сложности
Относительно функции сложности сделан ряд допущений. Во-первых, полагается, что t(n) —монотонно неубывающая функция, областью значений которой выступает множество неотрицательных действительных чисел, а областью определения — множество неотрицательных целых чисел. Во-вторых, допускается отступление от дискретности изменения n (с формальной заменой n на x), т. е. предположение о том, что
аргумент x непрерывен, а необходимые значения функции t(n) вычисляются в целочисленных точках x = n. В-третьих, анализируемое множество функций ограничивается семейством L — «по-существу положительных» логарифмически-экспоненциаль-ных функций. Установление указанных границ рассматриваемого множества функций обеспечивает существование эластичности и возможность сравнения любых двух функций сложности алгоритмов по скорости роста.
Семейство L-функций было введено и исследовано Г. Х. Харди [8]. Напомним, что f (x) считается «по-существу положительной» функцией, если существует Хо, такое, что f (x) > 0 для всех x > x0. Известно, что каждая L-функция непрерывна и дифференцируема в той области, где она определена. Теорема Харди о L-функциях констатирует, что эти функции образуют асимптотическую иерархию [8]: если f (x), q(x) Е L, то при x——то верно одно из трех соотношений f (x) X q(x), f (x) У q(x), f (x) = O[q(x)]. Заметим, что здесь и далее
f (x)
f (x) = O[g(x)] ^ f (x) ~ cq(x) ^ lim ——r- = c > 0;
x—те g(x)
f (x)
f (x) x g(x) ^ f (x) = o[g(x)] ^ lim —- = 0.
x—те g(x)
В асимптотической иерархии L-функций можно выделить пять классов функций с различным порядком роста:
Subpoly = {f (x) |f (x) X eO(ln x) } ;
Poly = {f (x)|f (x) = O[eO(lnx)] };
Subexp = {f (x) |eO(lnx) X f (x) X eO(x) } ;
Exp = {f (x)|f (x) = O[eO(x)] } ;
Hyperexp = {f (x) |eO(x) X f (x) }.
Эта классификация основана на том, что всякая L-функция f (x) представима в виде f (x) = ew(x), где w(x) = ln f (x) Е L, а экспоненты вида ew(x) подчиняются асимптотической иерархии, при этом
ewi(x) x ew2(x) ^ lim [wi(x) — w2(x)] = —to, 1 X wi(x) X w2(x) ^ ewi(x) X ew2(x). (1)
x—
Кроме того, для произвольных вещественных положительных констант £i, £2, £3, Т1, т2, т3 отношение
x?1 (ln x)?2 (lnln x)?3 X xTl (ln x)T2 (lnln x)T3 (2)
справедливо, если и только если ^1 < Т1, или если ^1 = Т1, £2 < т2, или если ^1 = Т1,
6 = Т2, Сз < Тз [9].
2. Эластичность и ее свойства
Эластичный (гр. elastikos) — упругий, гибкий, легко приспособляющийся. С физической точки зрения эластичность — это свойство вещества оказывать механическое сопротивление силе, которая на него воздействует, и принимать исходную форму после спада данной силы. Изучается в теории упругости. С экономической точки зрения эластичность — это характеристика изменения одного показателя (например, спроса)
по отношению к другому показателю (например, цене товара). Используется в эконометрике для анализа производственных функций [10]. С математической точки зрения эластичность Ex (y) — это коэффициент пропорциональности между темпами роста величин y = t(x) и x. Формально, это дифференциальная характеристика функции y = t(x), определяемая как предел отношения относительного приращения этой функции к относительному приращению аргумента [11]:
Ex(y) = lim (A ; A) = x lim A = Xy = x(ln y)' = (|^. (3)
Ax^O ^ y X J y Ax^O Ax y (ln x)'
Таким образом, если Ex(t) —эластичность функции временной сложности y = t(x), то при повышении значения x (длины входа алгоритма) на один процент значение t (время выполнения алгоритма) увеличится приблизительно на Ex(t) процентов.
Справедливы следующие свойства эластичности [11,12].
1. Всякая постоянная имеет нулевую эластичность.
2. Эластичность — безразмерная величина: Ex(y) = Eax(by).
3. Эластичность обратной функции x = f-1(y) —обратная величина: Ey(x) = = 1/Ex(y)
4. Эластичность произведения функций u = u(x) и w = w(x) равна сумме их эластичностей: Ex(u• w) = Ex(u) + Ex(w). Так, умножение функции на отличную от нуля константу не изменяет эластичности.
5. Эластичность отношения функций u = u(x) и w = w(x) равна разности их эластичностей: Ex(u/w) = Ex (u) — Ex(w).
6. Эластичность суммы функций u = u(x) и w = w(x) — сумма эластичностей слагаемых, взятых с соответствующими весами:
Ex(u + w) = (u/(u + w))Ex(u) + (w/(u + w))Ex(w).
7. Эластичность показательно-степенной функции вида y = uw, где u = u(x) и
w = w(x), задается соотношением Ex(y) = w(Ex(w)lnu + Ex(u)). В частности, Ex[ew(x)] = wEx(w).
8. Эластичность композиции функций y = f (w) и w = w(x) равна
Ex(y) = Ew (f )Ex(w).
Непосредственное применение (3) и свойств 1-8 дает формулы эластичностей основных L-функций. В табл. 1 указаны асимптотические оценки эластичностей основных L-функций при x ^ то. Здесь везде полагается, что значения x такие большие, что значения аргумента всякого логарифма и значения самого логарифма всегда остаются строго больше нуля.
Таблица 1
Эластичность основных £-функций
Функция у = f (х) Эластичность Ех|/ (х)] Принадлежность к классу функций
Константа с > 0 0 f (x) G Subpoly
Каскад из к логарифмов 1п 1п^. . 111 х, к раз х > 1, к = 1, 2,... 1п х • ... • 1п 1п^ . . 111 х ( ) к раз f (x) G Subpoly
Полилогарифм (1п х)т, ж > 1, т > 0 т—Н гЯ f (x) G Subpoly
Показательный полилогарифм еЛ(1п х)т = жЛ(1п х)т-1 х > 1, А > 0, 0 <т< 1 Am(ln x)m 1 = o(1) f (x) G Subpoly
Степенная функция ек(1п х)т хк(1п х)т —1 хк е X X х > 1, к > 0, т =1 k = O(1) f (x) G Poly
Показательно-степенной логарифм 1п х 1п1п х жт 1п1п х = (1п х)т 1п х, х > 1, т > 0 m(1 + lnln x) = = O(lnln x) f (x) G Subexp
Показательный полилогарифм еЛ(1п х)т = хЛ(1п х)т-1 х> 1, А > 0,т> 1 Am(ln x)m—1 = O[(ln x)m-1] f (x) G Subexp
Частный случай показательного полилогарифма еЛх?(1п х)1-? х> 1,0 <£< 1 1 — £ Ax? (ln x)1— (£ + ) = ln x = O[x? (ln x)1— ] f (x) G Subexp
Экспонента конечного порядка роста Лх^ еЛх , х> 0,А> 0,к> 0 Akxk = O(xk) f (x) G Subexp, 0 < k < 1 f (x) G Exp, k = 1 f (x) G Hyperexp, k > 1
«Башня» 2 ■•2х , 21^ , к ^ 1 к этажей • 2x k2x22x ••• 2^ (ln2)k k—1 этажей f (x) G Exp, k = 1 f (x) G Hyperexp, k > 1
3. Классы логарифмически-экспоненциальных функций
и их эластичности
В работе [12] доказана теорема, устанавливающая характеризацию эластичности для пяти классов L-функций.
Теорема 1 (о классификации L-функций) [12]. Разбиение семейства монотонно неубывающих «по-существу положительных» L-функций на классы Subpoly, Poly, Subexp, Exp, Hyperexp в соответствии с порядком их роста эквивалентно надлежащему разбиению по асимптотике эластичности этих функций на бесконечности:
Subpoly = {/(x) |/(x) х eO(l"x) } = {/(x) |E,(/) = o(1)} ; (4)
Poly = {/(x) |/(x) = O[e°<"'x)] } = {/(x) |Ex(/) = O(1)} ; (5)
Subexp = {/(x) |eO(l"x) X /(x) X eO(x) } = {/(x) |1 X Ex(/) X x} ; (6)
Exp = {/(x) |/(x) = O[eO(x)] } = {/(x) |Ex(/) = O(x)} ; (7)
Hyperexp = {/(x) |eO(x) X /(x) } = {/(x) |x X Ex(/) } . (8)
Из данной теоремы и свойств эластичности вытекают важные следствия.
Следствие 1. Разбиение L-функций на классы Subpoly, Poly, Subexp, Exp, Hyperexp инвариантно относительно полиномиального преобразования, т. е. если /(x) G F, F G {Subpoly, Poly, Subexp, Exp, Hyperexp}, то также p(/(x)) G F, где p(x) G Poly.
Действительно, по свойству 8 имеем: Ex[p(/(x))] = Ef(p)Ex(/) = O(1)Ex(/). Согласно (4) - (8), умножение эластичности на асимптотическую константу не меняет принадлежность L-функции к классу F G {Subpoly, Poly, Subexp, Exp, Hyperexp}.
Следствие 2. Класс Subpoly замкнут относительно суперпозиции (композиции) L-функций, т.е. если /(x),q(x) G Subpoly, то q(/(x)) G Subpoly.
Следствие 3. Класс Poly замкнут относительно суперпозиции L-функций, т. е. если /(x),q(x) G Poly, то q(/(x)) G Poly.
Следствие 4. Класс Hyperexp замкнут относительно суперпозиции L-функций, т. е. если /(x),q(x) G Hyperexp, то q(/(x)) G Hyperexp.
Композиция L-функций из классов Subexp, Exp может изменить их принадлежность к этим классам.
4. Систематизация алгоритмов
Теорема о классификации L-функций позволяет формально описать пять современных сложностных классов алгоритмов. Класс быстрых алгоритмов — множество алгоритмов с функциями сложности t(x) G Subpoly. Таким алгоритмам присуща тождественно нулевая или бесконечно малая эластичность. Класс полиномиальных алгоритмов — множество алгоритмов с t(x) G Poly и асимптотически постоянной эластичностью Ex(t). Класс субэкспоненциальных алгоритмов — алгоритмы, для которых t(x) G Subexp. Эластичность Ex(t) субэкспоненциального алгоритма — бесконечно большая величина, такая, что 1 X Ex(t) X x. Для такого алгоритма темп роста времени выполнения значительно выше темпа роста длины входа. Класс экспоненциальных алгоритмов — это алгоритмы, для которых t(x) G Exp. Для них эластичность Ex(t) = O(x) —бесконечно большая величина, асимптотически пропорциональная линейной функции. Функции с подобной эластичностью описывают законы естественного
роста: скорость увеличения такой функции прямо пропорциональна ей самой. Класс гиперэкспоненциальных алгоритмов — это алгоритмы, для которых t(x) G Hyperexp и x X Ex (t). Темп роста гиперэкспоненциальных функций настолько высок, что не укладывается в законы естественного роста.
Исходя из следствий 1-4, классификации алгоритмов на основе асимптотического поведения эластичности функций сложности присущи следующие практически значимые особенности:
• инвариантность относительно модели вычислений, поскольку переход от одной модели вычислений к другой меняет вычислительную сложность алгоритма полиномиальным образом. Это отвечает традиции измерять вычислительную сложность алгоритма с точностью до 0(1) и сопоставлять алгоритмы с точностью до полинома [1];
• неизменность сложностного класса алгоритма при полиномиальном преобразовании входа алгоритма. Подобные преобразования могут возникать при учете в модели вычислений времени доступа к исходным данным алгоритма;
• суперпозиция быстрых алгоритмов приводит к быстрому алгоритму;
• суперпозиция полиномиальных алгоритмов приводит к алгоритму полиномиальной сложности.
5. Методика сравнения алгоритмов по асимптотическому поведению эластичности
Если необходимо установить класс, к которому принадлежит алгоритм с функцией сложности t(n) G L, то следует выполнить следующие действия:
• осуществить формальный переход от t(n) к t(x), т. е. от дискретного аргумента n к непрерывному x;
• вычислить Ex(t) и найти асимптотическую оценку для Ex(t) при x ^ то;
• определить класс функций, используя эквивалентности (4) - (8).
Пусть требуется сравнить алгоритмы a и a2, вычислительная сложность которых описывается функциями t1(x) и t2(x) соответственно. Для этого сначала надлежит установить классы сложности для a1 и a2. Если данные алгоритмы принадлежат разным классам сложности, то иерархия этих классов задает соответствующее отношение между a1 и a2 в смысле их быстродействия. Если оказалось, что алгоритмы a1 и a2 принадлежат одному классу, то многое зависит от самого этого класса:
• если t1(x),t2(x) G Subpoly, Subexp, Hyperexp, то при Ex(t1) X Ex(t2) всегда t1 (x) X t2(x), т. е. алгоритм a1 асимптотически быстрее алгоритма a2;
• если t1(x),t2(x) G Poly, Exp, то Ex(t1) ~ cEx(t2),c > 0. При большой длине входа и
0 < с < 1 время выполнения алгоритма a1 меньше времени работы алгоритма a2 приблизительно в 1/с раз. При с > 1, наоборот, алгоритм a1 работает медленнее алгоритма a2 примерно в с раз. При с =1 требуется исследование в Ex(t1), Ex(t2) членов более низкого порядка, нежели константа.
Проиллюстрируем последний случай. Рассмотрим два алгоритма, осуществляющих операцию умножения двух длинных n-разрядных целых чисел: алгоритм Шенха-ге — Штрассена, имеющий функцию сложности
t1(n) = с1п ln n lnln n, и алгоритм Тоома — Кука, характеризующийся трудоемкостью
t2(n) = с2П6(21пn)1/2 ln n,
где ci > 0, c2 > 0 — некоторые константы [4]. Если выполнить формальный переход от n к x, то ti(x), t2(x) — «по-существу положительные» монотонно возрастающие L-функции. Определим для них эластичности:
Ex(t1) = Ex(c1x ln x lnln x) = Ex(c1) + Ex(x) + Ex(ln x) + Ex(lnln x) =
1 1
= 0 + 1 + ] + ] j-, = 1 + 7i(x) > 0
ln x ln x ln ln x
Ex(t2) = Ex(c2xe(21nx)1/2 lnx) = Ex(c2) + E*(x) + Ex(e(21nn)1/2) + £*(lnx) =
/2 1 , ,
=0+1 + (bxyi/з + rn:x =1 +Y2(x) >0
Поскольку Y1(x) = o(1), Y2(x) = o(1), то t1(x),t2(x) G Poly и Ex(t1) ~ Ex(t2). Выполним сравнение бесконечно малых величин Y1(x) > 0, Y2(x) > 0 при x ^ то:
Y^x) /lnln x + 1 (2ln x)1/2 + 1\ /lnln x + 1 ln x
lim —= lim ----------------—---: ---------------- = lim
72 (х) \у1п X 1п1п X 1п X ) х^те у 1п X 1п1п X (21п х)1/2 + 1
= Иш (1п 1п X + 1 • —-^^ = 11ш (1 + —^ ■ (—-1~--^ =1 ■ 0 = 0.
ж^те у 1п 1п X (21п x)1/2 + 1/ ж^те у 1п 1п X/ \ (21п x)1/2 + 1/
Отсюда 71(x) X 72^) и Еж(¿1) X Еж(¿2) при x^то. Следовательно, алгоритм Шен-хаге — Штрассена асимптотически быстрее алгоритма Тоома — Кука. Как следует из данного примера, в ряде случаев при сравнении алгоритмов не удается избежать непосредственного сравнения функций при помощи О-большое и о-малое. Это касается полиномиальных и экспоненциальных алгоритмов с асимптотически пропорциональными эластичностями. Здесь могут оказаться полезными соотношения (1), (2), относящиеся к иерархии ^-функций.
6. Сложность и эластичность теоретико-числовых алгоритмов
Разработка и анализ теоретико-числовых алгоритмов — предмет исследований алгоритмической теории чисел, имеющей приложения в криптографии [6, 7]. В криптографии (для обоснования стойкости криптографических систем и для разработки методов их вскрытия) важны следующие методы и алгоритмы [5]: тесты на простоту целых чисел, методы факторизации (разложения целых чисел на множители), алгоритмы дискретного логарифмирования, алгоритмы выполнения арифметических операций с длинными целыми числами, алгоритмы полиномиальной арифметики и др.
Традиционно функции сложности теоретико-числовых алгоритмов являются функциями от п — количества двоичных разрядов (битов), требуемых для записи исходного длинного целого числа N. Таким образом, п = О(к^2 N) = О(1п N). В табл. 2 приведены классы сложности и эластичности наиболее известных тестов на простоту и алгоритмов факторизации длинных целых чисел. Функции сложности этих алгоритмов взяты из работы [5]. В функциях сложности осуществлен формальный переход от дискретного аргумента п к непрерывному X.
Таблица 2
Эластичность некоторых теоретико-числовых алгоритмов
Алгоритм Функция сложности t(x) алгоритма Эластичность Ex[t(x)] алгоритма Класс сложности алгоритма
Тест на простоту Конягина — Померанса x17/7 O(1)lnx / ч 17 1 °(1)+ 7 lnx = = O(1) x Poly
Тесты на простоту Адлемана — Померанса — Румели и Ленстры O(1)xclnlnx,c > 0 o(1) + +c(1 + lnln x) = = O(lnln x) Subexp
Тест на простоту Агравала — Кайала — Саксены O(1)x12(lnx)c, c > 0 / ч С o(1) + 12 + — ln x = O(1) Poly
Факторизация целых чисел по методу Диксона gCX£ (ln x)1 — с = 2,c >0 o(1) + cx1/2(ln x)1/2-(1 1 ) = (2 + 2ln x) = = O [x1/2(ln x)1/2] Subexp
Факторизация целых чисел по методу GNFS (general number field sieve) gCX£ (ln ж)1-£ с = 1 ,c > 0 4 3’ o(1) + cx1/3(ln x)1/3 ■ (1 2 ) = 3 + 3ln x = O [x1/3(ln x)2/3] Subexp
Факторизация целых чисел по методу Шермана — Лемана O(1)gx/3 o(1) + x/3 = O(x) Exp
Факторизация целых чисел по методу Полларда — Штрассена O(1)x4gx/4 o(1) + 4 + x/4 = O(x) Exp
Заключение
Классификация алгоритмов на основе асимптотического поведения эластичности функций сложности не разрушает прежней, традиционной классификации с полиномиальными и экспоненциальными алгоритмами, а лишь дополняет и уточняет ее. Свойства эластичности позволяют без особого труда находить эластичность для любой ^-функции. К ограничениям рассмотренной классификации следует отнести требование принадлежности функций сложности алгоритмов к семейству Харди. Однако в большинстве реальных случаев это требование является вполне естественным и не вызывает особых трудностей при анализе алгоритмов.
Представленные в работе результаты (следствия 1-4, методика сравнения алгоритмов по асимптотическому поведению эластичности, формулы эластичностей для основных L-функций и теоретико-числовых алгоритмов) могут быть полезны в определении стойкости современных криптографических систем и для разработки методов их вскрытия.
ЛИТЕРАТУРА
1. Юдин Д. Б., Юдин А. Д. Математики измеряют сложность. М.: Книжный дом ««Либро-ком», 2009. 192 с.
2. Быкова В. В. Математические методы анализа рекурсивных алгоритмов // Журнал СФУ. Математика и физика. 2008. №1(3). С. 236-246.
3. Гэри М., Джонсон Д. Вычислительные машины и труднорешаемые задачи. М.: Мир, 1982. 416 с.
4. Кормен Т., Лейзерсон Ч., Ривест Р. Алгоритмы: построение и анализ. М.: МЦНМО, 1999. 960 с.
5. Василенко О. Н. Теоретико-числовые алгоритмы в криптографии. М.: МЦНМО, 2006. 336 с.
6. Чмора А. Л. Современная прикладная криптография. М.: Гелиос АРВ, 2001. 256 с.
7. Варновский Н. П. Криптография и теория сложности // Математическое просвещение. 1998. Сер. 3. Вып. 2. С. 71-86.
8. Харди Г.Х. Курс чистой математики. М.: ИЛ, 1949. 512 с.
9. Грэхем Р., Кнут Д., Поташник О. Конкретная математика. М.: Мир; Бином. Лаборатория знаний, 2006. 703 с.
10. Доугерти К. Введение в эконометрику. М.: ИНФРА-М, 2001. 402 с.
11. Солодовников А. С., Бабайцев В. А, Браилов А. В., Шандра И. Г. Математика в экономике. М.: Финансы и статистика, 2001. 376 с.
12. Быкова В. В. Метод распознавания классов алгоритмов на основе асимптотики эластичности функций сложности // Журнал СФУ. Математика и физика. 2009. №2(1). С. 48-61.