УДК 004.4, 004.78, 004.05
Ю.А. Богоявленский, Д.Ж. Корзун
ПРОГРАММНАЯ СИСТЕМА УДАЛЕННОГО РЕШЕНИЯ ОДНОРОДНЫХ ЛИНЕЙНЫХ ДИОФАНТОВЫХ УРАВНЕНИЙ В НЕОТРИЦАТЕЛЬНЫХ ЦЕЛЫХ ЧИСЛАХ
Традиционно исследование диофантовых уравнений проводилось в теории чисел и дискретном анализе. Потребности приложений стимулировали развитие теорий целочисленных полиэдров и вполне двойственной целочисленности, опирающихся на введённое F. Giles и W. Pulleyblank понятие базиса Гильберта (БГ) [1]. Растёт число прикладных исследований, в которых в качестве математического аппарата применяются системы однородных линейных диофантовых уравнений с целочисленными коэффициентами и решениями в неотрицательных целых числах (одНЛДУ). Конечный и единственный БГ (не основан на понятии линейной зависимости) содержит все "неразложимые" решения, что позволяет описать множество решений системы.
Дискретные модели на основе систем одНЛДУ и их БГ (линейные диофантовы модели) применяются в различных областях, например, задача ассоциативно-коммутативной унификации [2], построение универсального тестового множества для семейства целочисленных линейных оптимизационных задач [1], параллельный доступ к кэшпамяти и массивам [3], модели маршрутов в сетях ЭВМ [4].
Практическое использование линейных дио-фантовых моделей требует эффективных алгоритмов нахождения БГ (НБГ) и их протестированных реализаций, но в этой области существует серьезный пробел. Известен ряд алгоритмов НБГ на основе различных математических методов: верхние границы компонент базисных решений [5], покомпонентное построение решений, начиная с нулевого [6], преобразования производящих функций [7], нахождение базисных решений с минимальным носителем и последующим построением оставшихся базисных решений как рациональных положительных комбинаций [8, 9], нахождение базиса Гребнера идеала в кольце полиномов [5] и др. Эти алгоритмы представлены без верхних оценок сложности, их реализация не проверена массовым тестированием, и они при-
менимы на практике лишь для малых размерностей (до 15..20 переменных и уравнений).
Задача НБГ является вычислительно трудоёмкой, поскольку число базисных решений может экспоненциально зависеть от размерности системы и абсолютных величин её коэффициентов (нижняя оценка сложности) [1]. Следовательно, актуальными являются исследования частных классов диофантовых систем, для которых могут быть получены эффективные алгоритмы НБГ. При этом эффективным будем считать алгоритм, сложность которого ограничена полиномиально от числа уравнений, неизвестных и базисных решений (псевдополиномиальный алгоритм). В [10-12] получен один из таких частных классов — ассоциированные с контекстно-свободными (КС) грамматиками диофантовы системы (системы одАНЛДУ).
В статье представлена программная система (ПС) Web-SynDic, разрабатываемая на кафедре информатики и математического обеспечения Петрозаводского государственного университета с 2003 года. ПС реализует через web-обозреватель доступ к двум авторским псевдополиномальным алгоритмам НБГ для систем одАНЛДУ: Syntactic [10, 11] и TransSol [12], а также к алгоритмам SlopesSys [9]), lp_solve (http://lpsolve.sourceforge. net/) и GLPK (http://www.gnu.org/software/glpk/). ПС обеспечивает также массовое тестирование реализаций алгоритмов НБГ и их экспериментальное исследование [13].
Однородные линейные диофантовы уравнения, ассоциированные с КС-грамматиками
Обозначим множества целых и неотрицательных целых чисел как Z и Z+ . Однородной системой неотрицательных линейных диофан-товых уравнений (система одНЛДУ) называется (0 — нулевой вектор)
(1)
Ax = 0, A <t Zn
. t Z"
с п уравнениями, т неизвестными, целочисленными коэффициентами и неотрицательными целыми решениями.
Ненулевое решение системы (1) называется неразложимым, если оно не может быть представлено как сумма двух ненулевых решений этой же системы. Базисом Гильберта (БГ) называется множество всех неразложимых решений Н = (А(1), Ь(2),..., Ыя)} которое конечно, единственно и определяет общее решение системы (1) как [1]
(2)
йеЯ
Перенося в каждом уравнении из (1) члены с отрицательными коэффициентами в другую часть уравнения, получаем представление Л'х = Л"х. С алгебраической точки зрения рассматриваемый нами класс ассоциированных с КС-грамматиками диофантовых систем получается ограничением на матрицу Л' следующим образом.
Возьмём разбиение т-отрезка натурального
ряда: ^{ЬТк^ Ц=1 /fc={1.2,...,m}, 1к попарно не пересекаются и не пусты, 0 < п < т. Пусть Е = Е(1) € {0,1}пхт, где Е. = 1 <=> г € Гк. Тогда система одАНЛДУ есть Ех = Лх для А > 0 , или
к = 1,2,...,п.
(3)
1=1
Следуя [10] рассмотрим, как по КС-грамматике без терминальных символов построить (3). Случай произвольной формальной грамматики исследован в [11].
Пусть грамматика состоит из т правил и п нетерминальных символов {Л^}^. Терминальный алфавит пуст. Правила грамматики имеют вид г = (Ык ^ а) для г = 1,2,..., т, некоторого к £ {1,2,..., п} и некоторой цепочки а. из нетерминалов (возможно, пустой). Тогда определим Гк как множество индексов тех правил грамматики, левая часть которых равна Nk, а а. = |а.|^ > где |а,| > 0 есть число вхождений N в а. Таким об-
г Nk к г
разом, неизвестные системы (3) ассоциируются с правилами грамматики, а уравнения — с нетерминалами. Значение х . определяет число применений правила г . в некотором грамматическом выводе.
Существует соответствие между множеством всех решений системы (3) и множеством всех циклических выводов {^ =>* Nk} в грамматике,
определяемое следующей теоремой [10]. Здесь под простым циклом понимается циклический вывод Nk =>* Nk, не содержащий в себе другого циклического вывода.
Теорема 1 [Общий вид решения системы одАНЛДУ]. Вектор х € Zmявляется решением (3) тогда и только тогда, когда определяется числом применений правил в конечном множестве циклов {^ =>* Решение является базисным (х £ Н) тогда и только тогда, когда х соответствует в точности одному простому циклу.
В [12] получено алгебраическое преобразование произвольной системы одАНЛДУ, позволяющее применять для задачи НБГ метод исключения неизвестных и уравнений. Назовём уравнение к в (3) разрешённым относительно ¿-неизвестных, если его можно представить в виде + 2 Х1 = X ачх%' где Ь Ф 0 есть мно-
¡ъ I, ;ь 1к \ /. 1ё1к
жество индексов неизвестных, которые не встречаются в оставшихся уравнениях. Пусть — исходная система, к = 1.
1. Выбираем в уравнение, которое можно разрешить для Ь = Ьк Ф 0. Если такого уравнения нет, то преобразование завершено. Без потери общности считаем, что выбрано первое уравнение.
2. 8*к) представим в виде
5« =
с(*+1)
(4)
3. Б{к+1) является системой одАНЛДУ, содержит на одно уравнение и |Ьк| неизвестных меньше. Полагаем к := к + 1 и переходим на шаг 1.
Через г итераций получаем трапециевидную форму:
5«.
(5)
При этом система (3), как показано в следующей теореме, сводится к одному из двух простых классов.
Теорема 2 [Сведение системы о дАНЛДУ]. Система 5,(г) равносильна либо системе одАНЛДУ с одним уравнением (при г = п)
!> = 1>Л для некоторого Г с {1,2...,т}, (6) шг /г/'
либо симметричной системе одАНЛДУ (при г < п)
£•*; = Hxi k = í,2,...,n'
te'Wk izrk\vk
<&=0> (7)
feZ
.feF feF
для разбиений У = {lp...In„Z,F} и У = {J1,...Jn,,Z,F} отрезка {1,2,...,m}.
Алгоритмы
В ПС Web-SynDic подключены два авторских алгоритма НБГ - Syntactic [11] и TransSol [12] -и алгоритм SlopesSys [9]. Последний является универсальным, позволяя решать задачу НБГ для систем одНЛДУ. Также используются алгоритмы поиска частного решения на основе методов целочисленного линейного программирования: пакеты LP_solve и GLPK. Для автоматического построения тестовых и эталонных диофантовых систем подключены авторские алгоритмы генерации [14]: JourdanGen, GaussGen, и ExtGaussGen.
Авторские алгоритмы имеют псевдополиномиальную сложность (табл. 1) и реализованы на языке ANSI C (табл. 2). Верхние оценки сложности получены в модели вычислений с произвольным доступом к памяти (RAM). Сложность оценивается как функция от трёх параметров: 0 < n < m — число уравнений и неизвестных, Q — максимальный размер БГ промежуточных систем (зависит от алгоритма). В ряде случаев вместо Q возможно использовать q (размер БГ исходной системы).
Алгоритм Syntactic. Задача НБГ для (3) сводится к синтаксическому разбору на основе теоремы 1. Построение грамматических выводов для базисных решений использует подвыводы (композиция выводов), соответствующие базисным решениям ряда "близких" систем, т. е. одновременно решается семейство систем. Параметр Q ограничивает максимальный размер БГ для этого семейства. Композиция выводов использует идеи алгоритмов поиска кратчайших путей в орграфе для перечисления базисных решений. Так, модификация алгоритма Дейкстры позволяет перечислить простые выводы Nk =>+ е, которые определяют БГ системы Ex=Ax + ek, где е — пустая цепочка, ek — стандартный единичный вектор. Далее строятся простые выводы Nk =>+ Np определяющие БГ системы Ex + el = Ax + eкак Nk =>+ aN; P =>+ N. Модификация алгоритма Флойда—Уоршелла позволяет перечислить оставшиеся простые выводы Nk =>+ N композицией Nk =>+ NS и NS =>+ N. В альтернативном варианте простой вывод Nk =>+ N 1 получается из Nk =>+ N t =>+ е. В случае к = I находим БГ (3). Отбор неразложимых решений использует ряд критериев и достаточных условий.
Алгоритм TransSol. Задача НБГ для (3) сводится к задаче НБГ для простых классов (6) или (7) на основе теоремы 2. В случае (6) НБГ сводится к последовательному решению уравнений Фробениуса с единичными коэффициентами: ^ xt = aj для каждого j е I. Система (7) определяет циркуляцию потока в некотором орграфе, сводя задачу НБГ к поиску простых контуров.
Таблица 1
Оценки сложности авторских алгоритмов НБГ и генерации
Алгоритм Сложность
временная ёмкостная
Syntactic (модификация алгоритма Флойда-Уоршелла) o(m2n2Q3) 0(rrm2Q)
НБГ Syntactic (анализ выводов Nt =>+ N, =>+ 8 ) 0(m2nQ3) 0{mnQ)
TransSol (преобразование к трапециевидной форме) o(mnQ2) 0(mQ)
W JourdanGen (системы с БГ из q-m — n стандартных единичных векторов) 0{т2) 0(тп)
К а св Он 5Г GaussGen (системы с БГ из q = m-n (0,1)-векторов 0(тп(т - п)) 0{т2)
м <о Í-4 ExtGaussGen (системы, сводящиеся к уравнению (6), без ограничений на q и компоненты базисных решений) 0(mnq) 0(т(п + q))
БГ исходной системы вычисляется подстановкой базиса: выполняются шаги преобразования к трапециевидной форме в обратном порядке. При этом задача НБГ для очередной системы сводится к уравнению вида (6), а Q ограничивает размер его базиса для всех к = 1,2,..., г - 1. На каждом шаге прямым перебором исключаются разложимые решения. Однако в [14] получены классы систем одАНЛДУ, где такой отсев не требуется.
Алгоритм SlopesSys. Универсальный алгоритм НБГ для (1). Находятся базисные решения с минимальным носителем [8]. Оставшиеся решения ищутся перебором по решётке граней конуса вещественных неотрицательных решений системы (с отсевом нецелочисленных и разложимых решений). В промежуточных подсистемах выделяются три неизвестных и применяется алгоритм НБГ для уравнения с тремя неизвестными. Значения оставшихся неизвестных определяются перебором в рамках известных верхних границ. Переборный характер приводит к трудоёмким вычислениям, и практическое использование алгоритма возможно только для малых систем (и, т < 20, тах|ак| < 100). Алгоритм сопоставим по экспериментальной трудоёмкости с известными универсальными алгоритмами [5-8].
Алгоритмы поиска частного решения. Используют свободно распространяемые оптимизационные пакеты lp_solve и GLPK. В отличие от алгоритмов НБГ они выполняют поиск частного ненулевого решения (3), используя следующую задачу ЦЛП:
т
X*/ ^ 1ШП,
¡=1
•Ех = Ах, хег™, (7)
т ¡=1
Последнее ограничение отсекает нулевое решение. Алгоритмы используются при тестировании алгоритмов НБГ: выполняется проверка разложимости частного решения (8) по найденному БГ.
Алгоритмы генерации. Строят диофантовы системы (3) вместе с их БГ при заданных ограничениях. Входные параметры: число уравнений и неизвестных (и, т), ограничения сверху на коэффициенты (я < а) и БГ (к. < к, д < д). Результат: Е(Т), А, Н. Алгоритмы основаны на теореме 2, начиная построение с простой системы (6) или (7). Как и в алгоритме TransSol, выполняется обратное преобразование с подстановкой БГ до получения
Таблица 2 Сводные характеристики реализации
Часть реализации Подсистема Язык реализации Строк кода
Алгоритмы и структуры 2158
данных
Алгоритм НБГ Syntactic Интерфейс и вспомогательные функции ANSI С 1192
ВСЕГО 3350
Алгоритм НБГ TransSol ANSI С 2176
Генераторы диофантовых систем JourdanGen 1331
GaussGen ANSI С 1268
ExtGaussGen 2085
ВСЕГО 4684
Algorithm Server Java 3805
ПС WebSynDic Остальные подсистемы 8102
ВСЕГО 11907
ПС alg_analyzer ANSI С 3249
требуемой системы и её БГ. Алгоритм JordanGen использует идею диагональной формы матрицы в преобразовании Жордано-Гаусса, строя систему с БГ из д = т - и стандартных единичных векторов. Алгоритм GaussGen использует идею треугольной формы матрицы в методе Гаусса, строя систему с д = т - и и (0,1)-значениями в базисных решениях. Алгоритм ExtGaussGen расширяет предыдущий: нет зависимости д от и и т, а значения базисных решений - произвольные.
Программная система
ПС Web-SynDic (http://websyndic.cs.karelia.ru/) предназначена для удалённой работы с реализациями алгоритмов решения диофантовых уравнений и предоставляет два основных сервиса [13].
Сервис решения диофантовых систем включает, во-первых, тестирование, экспериментальное исследование и сравнительный анализ программных реализаций алгоритмов решения. Во-вторых, сервис позволяет решать задачу НБГ, в том числе и для диофантовых систем большой размерности. Сервис генерации диофантовых систем предназначен для автоматического построения систем с заданными свойствами. При тестировании алгоритмов НБГ генерируются тестовые системы с известным БГ для проверки решений, получаемых тестируемым алгоритмом. При экспериментальном исследовании генерируются эталонные системы, позволяющие статистически охарактеризовать и сравнить трудоёмкость (временную и ёмкостную) исследуемых алгоритмов на заданном классе входных данных.
Высокоуровневая архитектура ПС представлена на рис. 1. Клиентом выступает web-обозреватель. Работа пользователей происходит
Рис. 1. Высокоуровневая архитектура ПС Web-SynDic
Рис. 2. Диаграмма классов подсистемы Algorithm server
в режиме сессий. Запросы поступают в подсистему Web-server, которая переводит данные во внутренний формат и передает их подсистеме Session processing, обеспечивающей связь с остальными подсистемами. Подсистема Activity statistics накапливает статистику использования и формирует отчеты. Для измерения потребляемых ресурсов используется авторская ПС alg_analyzer. Подсистема Management управляет настройками и ограничениями пользователей. Подсистемы Activity statistics и Management работают с хранилищем данных Data store, где хранится информация о зарегистрированных пользователях.
Подсистема Algorithm server является ключевой с точки зрения обработки запросов (рис. 2). Она реализует объекты и операции предметной области, обеспечивает взаимодействие с алгоритмами решения и генерации диофантовых систем. Все эти алгоритмы представлены в ПС только
исполняемыми модулями, что защищает их исходный код от несанкционированного доступа.
Пользователь инициирует запрос, который разбивается на базовые задачи (каждая из них требует однократного вызова внешнего алгоритма, реализуется в виде объекта класса Task). Поддерживаются задачи решения (класс SolTask) и генерации (класс GenTask). Каждая задача хранит объект класса ANLDE (диофантова система, набор диофантовых систем или запрос на генерацию) и информацию о нахождении задачи в одной из двух очередей обработки базовых задач (объект Solver Spooler для задач решения и объект Generator Spooler для задач генерации). Далее этот объект полностью отражает состояние обработки запроса.
Очереди обработки задач работают параллельно. Очередная задача передается объекту класса Module для взаимодействия с внешними
Web-SynDic
• ANLDE System
• Set ofANLDE Systems
Documentation:
• ANLDE Theory
• User Manual
Algorithms configuration
Log In
Nickname Password
Lot
71Э/ Z'i L L
<ng as
user, bin 'be saved)
Server Load
4 active users 1 registered users Osolver tasks 0 generator 'tasks
Solution Report
1. Test ANLDE system:
xl + x2 + x3 + x4 = x4 + x5 + 4*x6 + 3*x9 + 3*xll + 2*xl2 + 2*xl3 + xl6 + xl7
x5 + x6 + x7 = 3*x9 + x7 + 2*x24 + xB + xl4 + 4*x23
x9 + xB = 3*xll + xl7 + x24 + 5*x26 + 7»x28 + x22
xll + X12 + xl3 + xl4 = 2*xl + x2 + x7 + 7*x23 + 2*x2L
xlb + xl7 + xl5 + xlS = 3»x5 + S'xlb + 4*xl8 + 4»xl9 + x25
X21 + xl9 + x20 = хЗ + 2*x6 + 2*x9 + 3*x26 + 3*xl8 + 3*xlS
x23 + x22 = 4*x5 + 6*x9 + 2*xll + 2*x7 + 4*x8
x24 + x26 + x25 = 4ях23 + 4*х2б + 4*x21 + xl5 + xlB + 3*xl9
x28 + x29 = 4*x4 + + x29 + 2*x30
X27 + xlO = 2*xl + 3*x5 + x24 + xl5
хЗО = 2*x5 + 10*x9 + 9*xll
Number of solutions: 22
2. Waiting time
o Solver spooler buffer: 00 min 00 sec
3. Performance metrics of the algorithms
Algorithm name : Summary CPU work time(sec): Summary real work tlme(sec) I Maximum process virtual slze(Kb) Solving rei
Syntactic j 0.004 j 0.12b | 1728 solved
Trans i 0.004 | 0.033 | 3728 solved
4. Solving machine characteristics:
o CPU: Intel(R) Xeon(TM) CPU 2.80GHz (2792.998 MHz) o RAM: 1062032 kB
o Operating system: Linux 2.6.27.29-0.1-xen, amd64
o Environment: Java 1.6.0_11 (Sun Microsystems Inc.); Apache Tomcat/5.0 o Solver process nice value 15 (-20 - highest priority, 19 - lowest priority)
5. Solutions of test ANLDE system
o Syntactic
xl x2 x3 x4 x5 x6 x9 xll Xl2 Xl3 Xl6 Xl7 x7 x24 x8 Xl4 x23 x26 x28 x22 x21 Xl5 Xl8 Xl9 x25 x20 x2?
h<l> 1 0 7 0 0 2 0 0 0 0 0 0 0 0 0 2 0 0 0 0 0 0 0 0 0 11 0
h<2> 1 0 5 0 0 1 0 0 ó 1 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 7 0
h(3) 1 0 5 0 0 1 0 0 1 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 7 0
h<4> 1 0 7 0 0 2 0 0 0 0 0 0 0 0 0 2 0 0 0 0 0 0 0 0 0 11 0
h(M 1 0 5 0 0 1 0 0 0 1 Д 0 0 0 0 1 0 0 0 0 0 0 0 Д 0 7 0
h(6) 1 0 5 0 0 1 0 0 1 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 7 0
h<7> 1 0 7 0 0 2 0 0 0 0 0 0 0 0 0 2 0 0 0 0 0 0 0 0 0 11 0
h(8) 1 0 5 0 0 1 0 0 .0 1 0 0 0 0 0 1 0 0 0 0 0 0 0 0' 0 7 0
h<9> 1 0 5 0 0 1 0 0 1 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 7 0
h<10> 0 1 3 0 0 1 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 5 0
h(ll) 1 0 3 0 0 0 0 0 0 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 3 0 I
1 a
Рис. 3. Пример отчёта о решении
Таблица 3
Части экспериментального исследования
Часть Серия (набор генерируемых диофантовых систем) Ограничения (на диофантовы системы) Всего систем
I. Тестирование алгоритма Syntactic 1. Непосредственная генерация уравнений (6) т< 102, /'| < 20, |А| < 30 300 000
2. Построение грамматики по генерируемому БГ [15] и<т<103, q < 2000 А <104, 120 000
3. Непосредственная генерация задачи ЦЛП (8) и<103, п < т <1200, А < 500 40 000
4. Алгоритмы 1огс1апСеп и Саивзвеп я<103, п<т< 1200, А <105 1 500 000
II. Сравнение с универсальными алгоритмами 1. Малые системы: общий анализ (см. табл. 4) п<т-5,10,15 240
2. Средние системы: общий анализ (см. табл. 4) п < т = 100, 400,1500 240
3. Массовое тестирование и анализ на малых системах п<т< 20, q< 9 А <102, 10 000
III. Сравнение алгоритмов Syntactic и TransSol 1. Малые системы с небольшим БГ n<m<\tf, А <102, #<500 15 000
2. Системы с небольшим БГ и<т<210 <500 3 ? А <102, 15 000
3. Малые системы с большими коэффициентами п<т< 102, А <104, #<500 15 000
4. Системы с большим БГ, случай I п<т< 102, <?<104 А <102, 15 000
5. Системы с большим БГ, случай П (см. рис. 4) п<т<1&, q < 2 103 А <104, 15 000
6. Системы с большим БГ, случай Ш п<т< 104, q< 106 А <104, 800
ИТОГО 2 046 280
алгоритмами. Интерфейс реализуется потомками класса Module: классы Solver и Generator. Для подключения внешнего алгоритма создается специализированный потомок одного из этих двух классов.
Результат внешнего алгоритма сохраняется в объекте класса Solver Outcome, включая характеристики диофантовой системы или их набора (класс ANLDECh), решения (БГ или частное,
класс Solutions), характеристики ЭВМ (класс Server), результат проверки решений (класс Check Solutions) и метрики трудоёмкости (класс Solver Metrics). Объект класса Solver Process хранит характеристики алгоритма решения. После решения всех базовых задач запроса подсистема Session processing формирует отчет (рис. 3).
Идентификация пользователей использует входное имя и пароль. Зарегистрированным
пользователям доступна обратная связь, персональные настройки и управление такими параметрами, как допустимые время решения и объём памяти, границы коэффициентов диофантовых систем, допустимый размер БГ и др. Для анонимных пользователей настройки сохраняются только на время работы сессии. Зарегистрированный пользователь может получить статус привилегированного, у которого отсутствуют ограничения на максимальные значения параметров решения и генерации, что позволяет решать системы больших размеров. Администратор управляет работой системы и имеет доступ к статистике её использования.
ПС Web-SynDic реализована на платформе Java (Java SDK 1.6.0), (табл. 2). Интерфейс пользователя — англоязычный. Текущая версия ПС работает под управлением сервера Apache Tomcat (5.0, JRE 1.6.0).
Тестирование и эксперименты
В экспериментальном исследовании проводились как массовое тестирование реализаций авторских алгоритмов НБГ и генерации, так и сравнительный анализ их трудоёмкости. Отметим, что в ПС WebSynDic любой запуск алгоритма является тестом.
Исследование включает три части, каждая состоит из серий (табл. 3). Серия использует наборы диофантовых систем, каждый из которых построен некоторым генератором при заданных ограничениях. Для коэффициентов в (3) исполь-
зуется норма ||Л|| = max.
k aki'
Часть I. Выполнялось массовое тестирование алгоритма Syntactic, который является первым авторским алгоритмом НБГ для систем одАНЛДУ. Тестирование его реализации было исходной задачей при разработке ПС Web-SynDic. Использовались разнообразные наборы тестовых диофантовых систем, в том числе и учитывающие внутренние особенности алгоритма (табл. 3, серии I.1 и I.2). Допустимое время на решение одной системы составляло от 6 ч до 3-х суток в сериях I.1-3 и 100 с в серии I.4. Небольшое число тестовых систем в серии I.3 вызвано временными затратами пакета lp_solve для тестовой задачи ЦЛП (вплоть до исключения ряда тестовых систем из-за превышения допустимого времени). В то же время, алгоритм Syntactic находил корректное решение каждой из тестовых систем в течение нескольких минут.
Часть II. Выполнялось сравнение с универсальными алгоритмами. Исследовались три алгоритма НБГ: Syntactic и TransSol - специализированные для (3) и SlopesSys - универсальный для (1). Последний не позволяет решать диофантовы системы за приемлемое время уже для средних размеров (m > 15...20), а для наборов малых систем (m < 15...20) отбирались только те системы (не учитываются в табл. 3 и 4), которые удалось решить за отведённое время (10 мин в сериях II.1 и II.2, 100 с в серии II.3). Алгоритмы Syntactic и TransSol допускают корректное решение всех сгенерированных систем малых и средних размеров за отведённое время. В табл. 4 для серий II.1 и 11.2 представлены сравнительные измерения затраченного системного времени (процессор, в с) в виде
Таблица 4
Системное время (с) работы алгоритмов НБГ в зависимости от числа неизвестных m (Intel Xeon 2.80 ГГц, ОЗУ 1 Гб, Linux 2.6.27)
Алгоритм НБГ Алгоритм генерации 5 10 15 100 400 1500
Syntactic JordanGen GaussGen ExtGaussGen 0,035 0,031 0,064 0,017 0,028 0,129 0,046 0,027 1,960 0,06 0,06 3,78 0,19 0,46 11,70 0,54 16,44 27,00
TransSol JordanGen GaussGen ExtGaussGen 0,028 0,019 0,041 0,015 0,024 0,055 0,029 0,030 0,049 0,02 0,04 0,21 0,15 0,21 2,46 1,81 5,17 8,24
SlopesSys JordanGen GaussGen ExtGaussGen 0,036 0,020 0,043 0,019 0,044 0,108 0,011 0,045 0,093 — — —
выборочных медиан, каждая вычислена на основе двадцати эталонных систем.
Часть III. Для различных классов эталонных диофантовых систем выполнялось сравнение алгоритмов Syntactic и TransSol (табл. 3). В сериях Ш.1-5 алгоритмы JordanGen, GaussGen и ExtGaussGen генерировали наборы по 5000 систем каждый. В серии III.6 использовался только алгоритм ExtGaussGen. Исследовались влияние размеров входных и выходных данных (n, m, ||Л||, q). Допустимое время решения одной системы равнялось 5 мин. При его превышении или из-за внутренних ограничений реализации хотя бы для одного из алгоритмов эталонная система игнорировалась при подсчёте сравнительных оценок. Пример полученных экспериментальных зависимостей представлен на рис. 4.
Эксперименты части III показывают, что алгоритм TransSol эффективнее, чем алгоритм Syntactic: потребление памяти и общее время меньше на 10-35 % и до двух раз, соответственно. Для алгоритма Syntactic получены системы (до 25 %), которые не удалось решить. Они характерны для алгоритма генерации ExtGaussGen при больших значениях q. Для алгоритма TransSol такое не наблюдается: решены все предложенные системы. Отметим, что алгоритм TransSol и используемые алгоритмы генерации основаны на одном методе (теорема 2), т. е. успешно сгенерированная система допускает эффективное решение. В частности, для таких систем не требуется трудоёмкая опера-
200 150
100 50
ция отбора неразложимых решений в алгоритме TransSol.
В целом результаты экспериментального исследования подтверждают пригодность специализированных алгоритмов Syntactic и TransSol для практического использования и позволяют говорить о высоком качестве программных реализаций этих алгоритмов.
Представленная в статье ПС WebSynDic реализует доступ через web-обозреватель к алгоритмам НБГ линейных диофантовых систем, а также к соответствующим средствам тестирования и экспериментального исследования на основе автоматической генерации систем с известным БГ.
Два авторских алгоритма НБГ работают с дио-фантовыми системами, ассоциированными с КС-грамматиками. Объемные численные эксперименты показывают, что эти алгоритмы пригодны для решения прикладных задач, т. к. они существенно эффективнее, в том числе для больших систем, чем известные универсальные алгоритмы.
ПС является удобным инструментом для улучшения существующих и экспериментального исследования новых алгоритмов НБГ, что является одним из направлений наших дальнейших работ. Также предполагается дополнять ПС диалоговыми компонентами в терминах предметных областей для решения соответствующих прикладных задач.
Авторы выражают свою благодарность К. А. Кулакову и М. А. Крышеню, которые внесли существенный вклад в реализацию ПС Web-SynDic и продолжают ее сопровождение.
б)
100 -Т-Т-Т-Т-Т-,-
О
о \о га о.
m
CL
m
80 60 40 20 0
0 300 600 900 1200 1500 1800 Число базисных решений q
0 300 600 900 1200 1500 1800 Число базисных решений q
о
к"
о \о га о.
Q)
о. m
Рис. 4 Зависимость общего времени НБГ (с) от размера БГ, серия III.5, набор по алгоритму ExtGaussGen (Intel Xeon 2.50 ГГц, ОЗУ 2 Гб, ОС Linux Suse 10.2 gcc 4.1.2). Указаны выборочное среднее и процентили
(а) алгоритм Syntactic, (б) алгоритм TransSol Выбор. среднее (-); Q (5 %) (..................................); Q (50 %) (---------); Q (95 %) (..................................)
СПИСОК ЛИТЕРАТУРЫ
1. Схрейвер A. Теория линейного и целочисленного программирования. М.: Мир. 1991, т. 2. 342 с.
2. Stickel M.E. A Unification Algorithm for Associative-Commutative Functions / Journal of ACM. 1981. Vol. 28. № 3. P. 423-434.
3. Ghosh S., Martonosi M., Malik S. Cache miss equations: a compiler framework for analyzing and tuning memory behavior // ACM Transactions on Programming Languages and Systems. 1999. Vol. 21. № 4. P. 703-746.
4. Korzun D.G., Gurtov A.V. A Diophantine Model of Routes in Structured P2P Overlays // SIGMETRICS Performance Evaluation Review. ACM. 2008. Vol. 35. №. 4. P. 52-61.
5. Pottier L. Minimal Solutions of Linear Diophantine Systems: Bounds and Algorithms / 4th Int. Conf. on Rewriting Techniques and Applications (RTA-91) / Springer-Verlag. 1991. LNCS 488. P. 162-173.
6. Contejean E. An Efficient Incremental Algorithm for Solving Systems of Linear Diophantine Equations / E. Contejean, H. Devie // Information and Computation. 1994. Vol. 113. № 1. P. 143-172.
7. Domenjoud E., Tomas A. P. From Elliott-MacMahon to an Algorithm for General Linear Constraints on Naturals // 1st Int. Conf. on Principles and Practice of Constraint Programming (CP '95). 1995. LNCS 976. P. 18-35.
8. Domenjoud E. Solving systems of linear diophantine equations: an algebraic approach / 16th Int. Symp. on Mathematical Foundations of Computer Science. 1991. LNCS 520. P. 141-150.
9. Tomas A.-P., Filgueiras M. Solving Linear Diophantine Equations Using the Geometric Structure of the Solution Space // 8th Conf. on Rewriting Techniques and Applications (RTA '97). 1997. LNCS 1232. P. 269-283.
10. Богоявленский Ю.А., Корзун Д. Ж. Общий вид решения системы линейных диофантовых уравнений, ассоциированной с контекстно-свободной грамматикой // Труды ПетрГУ. "Прикладная математика и информатика". Вып. 6. Петрозаводск: Изд-во ПетрГУ 1997. С. 79-94.
11. Корзун Д.Ж. Syntactic Methods in Solving Linear Diophantine Equations / Труды междунар. семинара Finnish Data Processing Week at the University of Petrozavodsk (FDPW'2004): Advances in Methods of Modern Information Technology. Vol. 6. Петрозаводск: Изд-во ПетрГУ. 2005. C. 151-156.
12. Кулаков К.А., Корзун Д.Ж., Богоявленский Ю.А. Итеративный алгоритм нахождения базиса Гильберта однородных линейных диофантовых систем, ассоциированных с контекстно-свободными грамматиками // Вестник Санкт-Петербургского университета. Сер. 10. Вып. 2. СПб.: Изд-во СПбГУ 2008. С. 73-84.
13. Проект Web-SynDic: Система удаленного решения линейных диофантовых уравнений в неотрицательных целых числах / Ю.А. Богоявленский, Д.Ж. Корзун, К.А. Кулаков, М.А. Крышень // Матер. междунар. конф. "Развитие вычислительной техники в России и странах бывшего СССР: история и перспективы". Т. 1. Петрозаводск: Изд-во ПетрГУ 2006. С. 136-145.
14. Кулаков К.А. Генерация систем неотрицательных линейных диофантовых уравнений / Матер. меж-дунар. конф. "Развитие вычислительной техники в России и странах бывшего СССР: история и перспективы". Т. 2. Петрозаводск: Изд-во ПетрГУ 2006. С. 58-65.
15. Корзун Д.Ж. О существовании порождающей КС-грамматики для произвольной линейной диофанто-вой системы / Труды ПетрГУ. "Математика". Вып. 6. Петрозаводск: Изд-во ПетрГУ 1999. С. 34-40.
УДК 004.651.4
А.М. Бородин, С.В. Поршнев
СРАВНИТЕЛЬНЫМ АНАЛИЗ ВОЗМОЖНОСТЕЙ И СКОРОСТИ ОБРАБОТКИ МНОГОМЕРНЫХ ДАННЫХ ПРОГРАММНЫМИ СРЕДСТВАМИ БИЗНЕС-АНАЛИТИКИ НА ОСНОВЕ ИНДЕКСИРУЮЩИХ СТРУКТУР ОСНОВНОЙ ПАМЯТИ
Одним из активно развиваемых в последнее комплексного и многомерного анализа большого
время направлений прикладного использования количества данных (финансовых, статистических,
информационных технологий является бизнес- операционных и т. п.) для быстрого получения еди-
аналитика (Business Intelligence - BI) - процесс ныхиконсолидированныхотчётов,объединяющих