Научная статья на тему 'Файловые полиномы'

Файловые полиномы Текст научной статьи по специальности «Компьютерные и информационные науки»

CC BY
105
39
i Надоели баннеры? Вы всегда можете отключить рекламу.
Ключевые слова
ФАЙЛОВЫЙ ПОЛИНОМ / МНОГОПРОЦЕССОРНЫЕ СИСТЕМЫ / ПАКЕТ ПРОГРАММ / ГЕНЕРИРОВАНИЕ ФАЙЛОВЫХ ПОЛИНОМОВ / FILE POLYNOMIALS / MULTIPROCESSOR SYSTEM / PROGRAMME PACKAGE / GENERATING FILE POLYNOMIALS

Аннотация научной статьи по компьютерным и информационным наукам, автор научной работы — Поздникин Алексей Геннадьевич

Рассматривается класс полиномов, которые хранятся во внешней памяти в виде файлов определенного формата; описывается разработанный пакет программ, включающий процедуры генерации случайных полиномов, арифметические процедуры и процедуры ввода-вывода

i Надоели баннеры? Вы всегда можете отключить рекламу.
iНе можете найти то, что вам нужно? Попробуйте сервис подбора литературы.
i Надоели баннеры? Вы всегда можете отключить рекламу.

File polynoms

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.

Текст научной работы на тему «Файловые полиномы»

УДК 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: pozdalex@mail.ru

Alexey Pozdnikin post-graduate student Tambov State University named after G.R. Derzhavin Russia, Tambov e-mail: pozdalex@mail.ru

i Надоели баннеры? Вы всегда можете отключить рекламу.