УДК 519.85
ФАЙЛОВЫЕ ПОЛИНОМЫ 1
© А. Г. Поздникин
Ключевые слова: файловый полином; многопроцессорные системы; пакет программ; генерирование файловых полиномов.
Аннотация: Рассматривается класс полиномов, которые хранятся во внешней памяти в виде файлов определенного формата; описывается разработанный пакет программ, включающий процедуры генерации случайных полиномов, арифметические процедуры и процедуры ввода-вывода.
1. Введение
В связи с развитием компьютерных технологий возросли технические характеристики вычислительных систем. Широкое распространение среди суперкомпьютеров получили кластерные высокопроизводительные системы, используемые в вычислительных целях, в частности в научных исследованиях. Процесс создания программного обеспечения для таких систем требует нового подхода, нежели к однопроцессорным. Для эффективной работы многопроцессорных систем требуются параллельные алгоритмы и поддержка хранения большого объема данных. Так как объемы используемой оперативной памяти сравнительно меньше объемов дисковой памяти, возникает идея при нехватке первой, использовать свободное пространство на жестком диске. В частности, в данной работе рассматриваются файловые полиномы — это полиномы, записанные в файл в определенном формате.
2. Генератор случайного файлового полинома
Пусть нам необходимо сгенерировать полином р от п переменных, который не помещается в оперативной памяти. Пусть т — массив максимальных степеней из п элементов. То есть максимальная степень по каждой переменной Х\,Х2,...,Хп равна одному из элементов массива то. Количество мономов в полиноме плотности й% равно: к = (ш\ + 1) * ... * (тп-\ + 1) * й/100. Пусть плотность й полинома принимает какое-либо действительное значение в диапазоне от 1 до 100.
р
тивной памяти. Возьмем полином д, по переменным Х(п/2+1),Х(п/2+2), ■■■,хп, с соответствующими максимальными степенями то, плотности л[й, коэффициенты которого сгенерированы случайным образом. Разобьем данный полином на мономы: д1,д2, ■■■,дк- Далее будем генерировать случайные ПОЛИНОМЫ /1,/2, ■■■,/к, С МаКСИМаЛЬНЫМИ степенями Ш1, Ш2, ■■■, тп/2 переменных Х1,Х2, ■■■,Хп/2, плотностью \[й и умножать их па соответствующий по индексу моном дг, т.е.
к
р = ^ /д = /д + /2д2 + ■■■ + /к дк ■
г=1
Произведение каждого монома полинома /г на моном дг будет записываться в файл до тех
р
3. Операция сложения файловых полиномов
Операция сложения файловых полиномов производится последовательно, в три этапа.
Пусть
р1 = 9Х2у2 + 4Ху2 — 8Ху + х — 6,
1Работа выполнена при поддержке программы "Развитие потенциала высшей школы" (проект 2.1.1/1853).
р2 = —8х2у2г3 — х2у2г2 + 4х2 у — 5х3 + 3ху.
Рассмотрим сумму р\ + Р2(*)-
1 этап. Происходит сравнение количества переменных в полиномах. Если в одном из полиномов переменных окажется болытте, то мономы, которые содержат эти старшие переменные с ненулевыми степенями, будут записаны в файл результата. Если таковых мономов не окажется, то происходит переход па следующий этап.
В файл будет записано: —8х2у2г3 — х2у2г2.
2 этап. Сравниваются показатели степеней переменных в каждом мономе. Если показатели степеней переменных в мономах совпадают, то коэффициенты складываются, и новый моттом с теми же степенями записывается в файл. Если показатели степеней переменных в одном из мономов окажутся большими, то этот моттом записывается в файл, а меттыттий сравнивается со следующими. Переход тта другой этап произойдет, как только один из файловых полиномов закончится.
В файл будет записано: 9х2у2 + 4ху2 + 4х2у — 5х3 — 5ху.
3 этап. Происходит считывание и запись в файл оставшихся моттомов одного из полиномов.
В файл будет записано: х — 6.
В итоге получим сумму двух полиномов в виде отсортированного файлового полинома.
Если рассматривать (*), то целиком в файл будет записано:
р = —8х2у2г3 — х2 у2 г2 + 9х2у2 + 4ху2 + 4х2 у — 5х3 — 5ху + х — 6.
4. Операция умножения файловых полиномов
Алгоритм умножения файловых полиномов представляется рекурсивной функцией, которая делит файловый полипом пополам до тех пор, пока данную операцию можтто будет произвести в оперативной памяти.
Схематично, в виде дерева данный алгоритм можтто представить следующим образом:
Операция умножения будет производиться в листовых вершинах. Промежуточные узлы — это файловые полиномы, которые по мере того, как мы поднимаемся к корттто, будут удаляться с жесткого диска.
Ниже представлен псевдокод алгоритма умножения файловых полиномов. Входными данными для функции умножения являются начало «1, «2 и конец е1, е2 файловых полиномов р1, р2 соответстветттто. На выходе получим результат умножения полиномов, отт тоже будет файловым полиномом.
MULTIPLY (а!, el, ;;2, е2){
LI = el-sl; // длина первого полинома L2 = e2-s2; // длина второго полинома if( max(Ll, L2)<= border){
result = (si, L2) * (s2, L2);} else {
ell=Ll, e22=L2;
if(L1>L2){ // если первый полином больше второго el = Ll/2; е2 = L2; sll = Ll/2; s22 = s2;} else{ // если второй полином больше первого
el = LI; е2 = L2/2; sll = si; s22 = L2/2;}
AC = MULTIPLY( si, el, s2, e2);
BC = MULTIPLY ( sll, ell, s22, e22); result = ADD(AC, BC) ;
DELETE(AC, BC);}
RETURN(result);}
Коттстаттта border в алгоритме обозначает максимальное количество мономов в полиноме, когда операция умножения может производиться в оперативной памяти.
5. Эксперименты
Ниже приведены графики зависимостей времени выполнения арифметических операций от количества мономов в полиномах. В случае операции сложения полиномов зависимость близка к линейной, а в случае умножения — к квадратичной.
6. Заключение
Разработанный пакет программ позволяет генерировать полиномы, которые не помещаются в оперативной памяти, путем записи их па диск pi производить с ними арифметические операции сложения, вычитания, умножения.
Abstract: there are considered file polynomials, i.e. polynomials, written into a file in some format; a program package is developed for generating file polynomials and arithmetic with them.
Keywords: file polynomials; multiprocessor system; programme package; generating file polynomials.
Поздпикип Алексей Геннадьевич аспирант
Тамбовский государственный университет им. Г.Р. Державина Россия, Тамбов e-mail: [email protected]
Alexey Pozdnikin post-graduate student Tambov State University named after G.R. Derzhavin Russia, Tambov e-mail: [email protected]