Научная статья на тему 'РАСПРЕДЕЛЕНИЕ КВАДРАТОВ И ПРОВЕРКА ГИПОТЕЗ В НЕЧЕТНЫХ РАЗБИЕНИЯХ ЧИСЕЛ'

РАСПРЕДЕЛЕНИЕ КВАДРАТОВ И ПРОВЕРКА ГИПОТЕЗ В НЕЧЕТНЫХ РАЗБИЕНИЯХ ЧИСЕЛ Текст научной статьи по специальности «Математика»

CC BY
1
0
i Надоели баннеры? Вы всегда можете отключить рекламу.
Ключевые слова
разбиение натурального числа / асимптотическая формула / параллельные вычисления / OpenMP / integer partition / asymptotic formula / parallel computing / OpenMP

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

В статье рассматриваются разбиения натурального числа n, части которого различны, нечетны и их произведение не является квадратом. Такие разбиения применимы для определения ранга группы центральных единиц целочисленного группового кольца знакопеременной группы. Количество разбиений растет экспоненциально, следовательно, задача перебора является вычислительно затратной. В статье предложен параллельный алгоритм в общей памяти для нахождения количества разбиений числа n с дополнительными условиями. Алгоритм основан на концепции распараллеливания по данным и использовании вложенного параллелизма. Выделяется множество длин K разбиения числа n, элементы которого обрабатываются параллельно. Во время обработки длины k разбиения числа n выделяется множество уровней L, рассмотрение которого также выполняется параллельно. Приемлемые значения ускорения и параллельной эффективности предложенного алгоритма получаются при использовании двух нитей на параллельный регион по длинам и двух — по уровням. Таким образом, ускорение при разных n превышает 2.1, а параллельная эффективность не опускается ниже 50\%. Полученные результаты использованы для проверки гипотез Каргаполова и анализа распределения значений нечетных разбиений на некоторых диапазонах. Предложен алгоритм поиска оптимального коэффициента c. С помощью этого алгоритма получена асимптотическая формула количества разбиения числа n, в котором части различны и нечетны, а их произведение является квадратом. Эта формула основана на экспериментальных данных и сформулирована как гипотеза.

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

DISTRIBUTION OF SQUARES AND HYPOTHESIS VERIFICATION IN ODD INTEGER PARTITIONS

The article considers partitions of a natural number n whose parts are distinct, odd and their product is not a square. Such partitions are applicable for determining the rank of the group of central units of an integral group ring of an alternating group. The number of partitions grows exponentially, hence the enumeration task is computationally expensive. The article proposes a parallel algorithm in shared memory for finding the number of partitions of the n with additional conditions. The algorithm is based on the concept of data parallelism and the use of nested parallelism. A set of lengths K of the partition of the n is obtained, the elements of which are processed in parallel. During the processing of the length k of the partition of the n, the set of levels L is obtained, the elements of which are processed in parallel as well. Acceptable values of speedup and parallel efficiency of the proposed algorithm are obtained by using two threads per parallel length region and two threads per parallel level region. Thus, the speedup for distinct n increases to 2.1, and the parallel efficiency does not decrease below 50\%. The results obtained were used to check Kargapolov’s hypotheses and analyze the distribution of the number of odd partition in certain ranges. An algorithm for finding the optimal coefficient c is proposed. Using this algorithm, an asymptotic formula for the number of partitions of the n is obtained, in which the parts are distinct, odd and their product is a square. This formula is based on experimental data and formulated as a conjecture.

Текст научной работы на тему «РАСПРЕДЕЛЕНИЕ КВАДРАТОВ И ПРОВЕРКА ГИПОТЕЗ В НЕЧЕТНЫХ РАЗБИЕНИЯХ ЧИСЕЛ»

УДК 004.021, 519.116 DOI: 10.14529/cmse240102

РАСПРЕДЕЛЕНИЕ КВАДРАТОВ И ПРОВЕРКА ГИПОТЕЗ В НЕЧЕТНЫХ РАЗБИЕНИЯХ ЧИСЕЛ

© 2024 A.A. Самойлов

Южно-Уральский государственный университет (454080 Челябинск, пр. им. В.И. Ленина, д. 76) E-mail: samoilovaa@susu.ru Поступила в редакцию: 10.03.2023

В статье рассматриваются разбиения натурального числа п, части которого различны, нечетны и их произведение не является квадратом. Такие разбиения применимы для определения ранга группы центральных единиц целочисленного группового кольца знакопеременной группы. Количество разбиений растет экспоненциально, следовательно, задача перебора является вычислительно затратной. В статье предложен параллельный алгоритм в общей памяти для нахождения количества разбиений числа п с дополнительными условиями. Алгоритм основан на концепции распараллеливания по данным и использовании вложенного параллелизма. Выделяется множество длин К разбиения числа п, элементы которого обрабатываются параллельно. Во время обработки длины к разбиения числа п выделяется множество уровней L, рассмотрение которого также выполняется параллельно. Приемлемые значения ускорения и параллельной эффективности предложенного алгоритма получаются при использовании двух нитей на параллельный регион по длинам и двух — по уровням. Таким образом, ускорение при разных п превышает 2.1, а параллельная эффективность не опускается ниже 50%. Полученные результаты использованы для проверки гипотез Каргаполова и анализа распределения значений нечетных разбиений на некоторых диапазонах. Предложен алгоритм поиска оптимального коэффициента с. С помощью этого алгоритма получена асимптотическая формула количества разбиения числа п, в котором части различны и нечетны, а их произведение является квадратом. Эта формула основана на экспериментальных данных и сформулирована как гипотеза.

Ключевые слова: разбиение натурального числа, асимптотическая формула, параллельные вычисле-ния} ОрепМР.

ОБРАЗЕЦ ЦИТИРОВАНИЯ

Самойлов A.A. Распределение квадратов и проверка гипотез в нечетных разбиениях чисел // Вестник ЮУрГУ. Серия: Вычислительная математика и информатика. 2024. Т. 13, № 1. С. 22-37. DOI: 10.14529/cmse240102.

Введение

В этой работе рассматриваются следующие условия на разбиение А = (oi,..., а^) натурального числа п.

1. Chi нечетно при 1 < i < к.

2. щ ф aj при i ф j.

3. п = к (mod 4).

к

4. П ai не является квадратом натурального числа.

¿=1

Число разбиений, удовлетворяющих первым двум условиям, обозначается г(п), удовлетворяющих первым трем условиям — ^(п), а разбиение, у которого выполняются первые три условия и последнее нарушается, называется квадратичным нечетным разбиением числа п, и число таких разбиений обозначается qop(n). Количество разбиений, удовлетворяющих всем условиям, обозначается rank(n). Можно заметить, что qop(n) = r±(ri) — rank(n).

Одно из практических применений этих четырех условий — это определение ранга группы центральных единиц целочисленного группового кольца знакопеременной группы Ап [1].

Эта проблема рассматривалась авторами из работы [2], которым удалось достигнуть результата для п < 600 с шагом 100. В работе [3] Каргаполовым достигнут результат для п < 1000 с шагом 10. Каргаполов выдвинул предположения, связанные с оценкой ранга группы центральных единиц целочисленного группового кольца знакопеременной группы

Разбиения чисел могут быть применены в криптографии для создания протоколов аутентификации и шифрования. Известно, что число классов сопряженных элементов симметрической группы 5П равно количеству разбиений числа п (см. [4]). Пример криптосистемы на основе симметрических групп можно найти в [5]. Целью исследования являются следующие задачи.

1. Проверить применимость предположений Каргаполова для различных диапазонов натуральных чисел.

2. Вычислить количество и найти оценки квадратичных нечетных разбиений для различных диапазонов натуральных чисел.

Для достижения поставленных задач предложен и реализован алгоритм с шагом 1, который использует стандарт для распараллеливания программ ОрепМР.

Статья организована следующим образом. В разделе 1 описаны теоретические сведения о разбиении числа п, количестве и оценке. В разделе 2 приведен алгоритм подсчета количества разбиений с дополнительными условиями и предложен метод поиска оптимального коэффициента с. В разделе 3 представлены реализация алгоритма с использованием стандарта распараллеливания программ ОрепМР и вычислительные эксперименты. В разделе 4 приведена проверка гипотез Каргаполова и дано предположение об асимптотической формуле числа квадратичных нечетных разбиений. Заключение содержит краткую сводку результатов, полученных в работе.

1. Разбиение числа, количество и оценка

Определение 1. Разбиение А натурального числа п — представление этого числа в виде суммы натуральных чисел

где, щ называются частями разбиения.

Разбиения одного числа считаются равными, если они различаются только порядком слагаемых. Вычисления, связанные с разбиениями чисел, являются вычислительно затратными, так как количество разбиений быстро увеличивается с ростом п [6]. Приблизительно число разбиений р(п) можно найти с помощью формулы Харди—Рамануджана.

Теорема 1. (Теорема 6.3 [6], §2.7 [7]). При п —>■ оо имеет место асимптотическая формула для числа разбиений

Один из подходов вычисления количества разбиений с условиями из введения следующий. Генерацию разбиений можно осуществить с помощью алгоритма Липского, который перебирает все разбиения числа п в невозрастающем порядке (алгоритм 1.22. [8]). Этот алгоритм нуждается в изменениях, чтобы части разбиения соответствовали условиям различности, нечетности, и добавлении проверки на квадрат. Для сокращения времени на

п = ах+а2-\-----1-ак

(1)

(2)

вычисление количества разбиений прибегают к параллельной обработке в распределенной памяти. Для этого все множество разбиений делят на равные части, и каждый узел кластера выполняет генерацию разбиений в заданном диапазоне.

В этой статье предложен параллельный алгоритм в общей памяти с использованием вложенного параллелизма для нахождения количества разбиений числа п с дополнительными условиями. Вложенный параллелизм заключается в том, что каждая нить, в которой встретится параллельный регион, породит для его выполнения новую группу нитей.

Лемма 1. (Лемма 2 [2]) Число элементов разбиения к, удовлетворяющих условиям из введения, не превосходит целой части у/п.

Определим множество длин К разбиения числа п, значения элементов которых не превышают у/п (см. лемму 1) и удовлетворяют третьему условию из введения п = к (mod 4), как

К = {ki : 1 < ki < [у/п\ An = ki (mod 4)}. (3)

При генерации разбиений, элементы которых нечетны и попарно различны, можно заметить, что все части некоторых разбиений отличаются на 2. Например, для длины к = 3 существует следующий набор разбиений: l\ = (1,3, 5), ¿2 = (3,5, 7), Ц = (5,7,9),... Назовем такие случаи уровнями и определим множество уровней L разбиения числа п длины к как

lj = {ai : 1 < i < к А <ц = 1 + 2(j - 1) А а» = <н~1 + 2}, (4)

Ь = {Ц : 1 < ] < оо /\ У^ щ < п, где щ элемент (5)

¿=1

Из работы [3] стоит отметить способ проверки на квадрат натурального числа — использование разложения на простые множители. Если число является квадратом, то показатели степеней простых чисел в его разложении четны. Для каждого натурального числа п сохраняется битовый вектор четностей показателей степеней простых чисел, где на г-й позиции стоит остаток от деления на 2 показателя степени г-го простого числа в разложении п.

В работе [3] Каргаполовым получена асимптотическая формула, которая позволяет вычислить приближенно г(п), и высказаны предположения о г^(п) и гапк{п).

Теорема 2. (Теорема 3.1 [3]. При п —у оо имеет место асимптотическая формула

r(n) ~ —з^-е "Л , где Ап = -уIn - (6)

2А^ v^4 V 24

Предположения Каргаполова Предположение 1. При п —>• оо имеет место асимптотическая формула

( \ г(п)

га(п) ~ -у-. (7)

Предположение 2. При п —У оо имеет место асимптотическая формула

гапк(п) ~ г4(п) ~ (8) _4у24п3_

24 Вестник ЮУрГУ. Серия «Вычислительная математика и информатика»

Из теорем 1 и 2 можно сказать об экспоненциальном росте числа разбиений и предположить, что при п —оо имеет место следующая форма записи асимптотической формулы для количества разбиений

Дп) ~ -сеь^ (9)

пс

где, а, Ь, с некоторые коэффициенты. Гипотеза Каргаполова (8) также соответствует этому выражению.

2. Описание методов

2.1. Алгоритм подсчета числа разбиений

Алгоритм подсчета количества разбиений числа п с указными во ведении условиями состоит из следующих шагов.

1. Вычисление битовых векторов четностей показателей степеней простых чисел.

2. Определение множества длин К разбиения числа п.

3. Определение множества уровней L разбиения ЧИСЛВ. 71 ДЛИНЫ к{.

4. Рекурсивный подсчет количества разбиений числа ть длины уровня lj.

Шаг 1. В алг. 1 описывается вычисление битовых векторов четностей показателей степеней простых чисел Длг,г» гДе N — количество натуральных чисел, b — количество бит. Для получения простых чисел (функция GenPrimes) можно использовать алгоритм решета Эратосфена (§7.1 [9]). Для N = 1000 достаточно Ъ = 168 бит, так как в диапазоне [1,1000] существуют 168 простых чисел. Далее проверку на целочисленный квадратный корень можно осуществить путем применения операции хог над битовым вектором каждого элемента разбиения. Произведение частей разбиения числа п является квадратом в том случае, если на выходе получился нулевой вектор (§2.1 [3]).

Алгоритм 1 GenDecomposition (in TV, Ь; out Ду,ь)

l: DNtb 0; Р «-GenPrimes(N)

2: for % <r- 2 to TV do

3: t г; Di 0 {инициализация нулевого битового вектора} 4: for j 4— 1 to Ь do 5: while t mod Pj = 0 do

6: Dij <T- ->Dij-, t <T- t/Pj

7: return Ду,ь

Шаг 2. В алг. 2 описываются нахождение (строки 1—4) и параллельная обработка (строки 5—7) множества длин, которое определяется выражением (3). Вычислительные эксперименты показали (см. табл. 2), что большими затратами времени на нахождение количества разбиений обладает средний и ближние к среднему элементы множества К. Следовательно, при параллельном рассмотрении этого множества с использованием двух нитей, одной из них достанется элемент, который обладает большим временем выполнения, а другой — два соседних.

Алгоритм 2 LenParall (in п)

1: Кт 4- 0; т о

2: for i <Г- 1 to Lv^J do 3: if n mod 4 = i mod 4 then 4: Km i; m m + 1

5: ^pragma omp parallel for num_threads(2) schedule(dynamic, 1) reduction(+:r4, qop, rank)

6: for i <— 1 to m do

7: г4, qop, rank <— r±, qop, rank + levelparalb(n, Ki)

Шаг 3. Подсчет количества уровней (сами уровни определяются выражениями (4)—(5)) и их параллельная обработка описаны в алг. 3. Строки 1—2 соответствуют частному случаю, в котором происходит проверка на четность и квадрат числа п, когда длина разбиения k = 1 (описание функции SpecialCase опущена для краткости). Строки 4-12 соответствуют подсчету количества уровней разбиения числа п длины к. В строках 4—5 производится нахождение суммы первого уровня. Далее, в строках 6—12 происходит инкремент переменной т до тех пор, пока сумма элементов разбиения, по определению 1, не станет равной п. Строки 13-19 описывают параллельную обработку уровней. В строках 17-18 происходит генерация уровня lj для разбиения числа п длины к, и вычисляется сумма частей этого разбиения.Вычислительные эксперименты показали (см. табл. 3), что чем меньше номер уровня, тем большими затратами времени на вычисление количества разбиений он обладает.

Алгоритм 3 LevelParall (in п, к; out г4, qop, rank) 1: if к = 1 then

2: return SpecialCase (in n; out Г4, qop, rank)

3: m <— 0; sum <— 0; r4 <— 0; rank <— 0; qop <— 0 4: for i1 to к do 5: sum sum + 1 + 2{i — 1) 6: while true do 7: if sum > n then 8: break

9: else if sum = n then 10: m <- m + 1; break

11: else

12: m <r- m + 1; sum sum + 2k

13: #pragma omp parallel for num_threads(2) schedule(dynamic, 1) reduction(+:r4, qop, rank)

14: for jV 1 to m do

15: L\ <- 0; sum <- 0

16: for i <Г- 1 to к do

17: L] 4r- 1 + 2(7 - 1) + 2(i - 1)

18: sum <— sum + L\

19: г4, qop, rank <— Г4, qop, rank + LevelRec(2, sum, n, k, 20: return r^, qop, rank

Шаг 4. На последнем этапе (см. алг. 4) выполняется рекурсивная генерация разбиений числа п длины к > 1 от второго элемента к последнему в рамках заданного уровня I. Перед вызовом нового шага рекурсии сохраняется текущее разбиение (строка 4). Для удовлетворения условиям нечетности и различности элементов на каждом j-м шаге после вызова рекурсии прибавляется к частям разбиения, которые стоят на позициях в диапазоне \j, А;], число 2 и пересчитывается их сумма (строки 6-8). При достижении j = к прибавляется к последнему элементу разбиения недостающая сумма, чтобы соответствовать определению 1 (строка 10). Далее, выполняется проверка на квадрат числа с помощью показателей степеней простых чисел (строки 13-15).

Алгоритм 4 LevelRec (in j, sum, n, к, L\\ out qop, rank, г4)

1: while true do 2: if sum < n then 3: if к ф j then

4: U+1 <— iJ {Сохранение текущего разбиения для следующего шага рекурсии}

5: qop, rank, r4 qop, rank, r4 + LevelRec(j + 1, sum, n,

6: sum <r- sum+2(k—j — 1) {Сумма частей разбиения на текущем шаге рекурсии}

7: for г j to к do

8: L? ■<— Lj + 2 {Прибавление числа 2 к частям разбиения начиная с позиции

равному шагу рекурсии} 9: else

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

10: L3k L3k + (п — sum); sum <— n {На последнем шаге рекурсии прибавляется

недостающая сумма к последнему элементу} 11: else if sum = n then 12: Г4 Г4 + 1; factor <- 0

13: for i1 to к do

14: factor <r- factor © DLi {Использование битовых векторов четностей показа-

телей степеней простых чисел для проверки на квадрат}

15: if factor = 0 then

16: qop qop + 1 {Произведение элементов разбиения является квадратом}

17: else

18: rank <— rank + 1

19: return qop, rank, Г4 20: else

21: return qop, rank, Г4

2.2. Поиск оптимального коэффициента с

В алг. 5 описывается поиск оптимального коэффициента с. Пусть Хдг содержит значения п € [1, iV], Удг — количество разбиений числа п, и задан замкнутый интервал С 6 [begin, end\ с шагом е. Возьмем во внимание, что при выполнении аппроксимации на разных диапазонах заданных точек можно получить разные значения параметров. Поиск оптимального коэффициента с заключается в нахождении такого значения коэффициента с, при котором отклонение двух других коэффициентов а и b из (9) на меньшем и большем диапазонах аппроксимации минимально. Будем считать большим диапазоном аппроксима-

ции равный п £ [1, iV], а меньшим — п £ [|_-/V/8J, [N/4 J ] (строки 2-3). Последовательно рассматривая С с шагом е и выполняя функцию CurveFit получим значения коэффициентов а±, b\ для меньшего и 02,62 Для большего диапазонов аппроксимации (строки 4—11). Для подбора коэффициентов по формуле (9) и в качестве реализации функции CurveFit можно использовать нелинейный метод наименьших квадратов (§2.4 [10]). Эта функция на вход принимает коэффициент с и табличные значения Хдг, Удг (строки 6-7). Обозначим разность коэффициентов как t\ = \а2 — а\ \ и t2 = \Ъ2 — bi |. Выбираем то значение с, у которого на замкнутом интервале С значения t± и t2 минимальны (строки 8-10). Будем считать оптимальным значением с то, у которого на меньшем промежутке аппроксимации значения ii и ¿2 минимальны (строки 12-13). Например, для гапк(п) при С £ [0,1] и е = 0.001 по предложенному алгоритму получен результат с = 0.731 ~ 3/4, который близок к значению в гипотезе Каргаполова (8).

Алгоритм 5 Optimize (in begin, end, e, Xn, Yn; out optti; optt2, optc) optt1 <— 00; optt2 <— 00; optc begin for n |_iV/8j to [N/4J do

A В <— Ух..п {Копируем n элементов}

tmp^ <— 00; tmpt2 <— 00; tmpc begin; с begin while с < end do

ai,bi <- CurveFit(^, В,C) a2, b2 <- CurveFit(X, У, c) h <- Ia2 - ai|; t2 <- \b2 - h\ if tmpt-L > t\ and tmpt2 > t2 then

tmptl ti; tmpt2 J— t2; tmpc J— с c<— c + e

if optt, > tmptl and optt2 > tmpt2 then optt-, tmptl; optt2 tmpt2; optc tmpc return opttl, optt2, optc

3. Реализация и вычислительные эксперименты

Алгоритм подсчета числа разбиений реализован на языке С при использовании стандарта для распараллеливания программ ОрепМР. Поиск оптимального коэффициента с реализован на языке Python. Исходные коды свободно доступны в репозитории GitHub [11].

По предложенному алгоритму возможно выполнить вложенный параллелизм следующим образом.

1. Параллельный регион из двух ОрепМР-нитей на обработку множества длин К разбиения числа п.

2. Параллельный регион из двух ОрепМР-нитей на обработку множества уровней L разбиения числа п в рамках соответствующей длины к.

На рис. 1 представлена схема, согласно которой программа создаст, при максимальной загрузке, четыре OpenMP-нити. Для поддержки вложенного параллелизма, необходимо изменить переменную окружения, отвечающую за данную опцию, с помощью функции omp_set_nested( 1).

Параллельный Параллельный

регион по длинам регион по уровням

Рис. 1. Схема распараллеливания

Для вычислительных экспериментов использован персональный компьютер, который обладает характеристиками, указанными в табл. 1.

Таблица 1. Характеристики

Параметр Значение

Процессор AMD Ryzen 9 5950Х 3.40 GHz

Число физ./лог. ядер 16/32

Кэш LI - 1.0 MB, L2 — 8.0 MB, L3 - 64.0 МБ

Операционная система Windows 10 Pro х64

Оперативная память 32 ГБ, 3200 MHz

Время выполнения алгоритма для элементов к{ из множества длин К отображено в табл. 2 в зависимости от п. Вычислительные эксперименты показали, что количество разбиений числа п длины к{ возрастает до некоторого элемента множества К, а затем уменьшается. В большинстве случаях основное время вычисления занимает элемент с индексом г=Г(|Я-| + 1)/2].

Таблица 2. Время выполнения кс.

п г = 1 г = 2 г = 3 г = 4 г = 5 г = 6 г = 7

400 0.001 0.387 1.662 0.043 0.001 - -

425 0.001 0.007 1.586 2.882 0.032 - -

450 0.001 0.051 4.748 4.125 0.019 - -

475 0.001 0.374 13.104 5.192 0.009 - -

500 0.001 2.042 30.408 5.646 0.004 - -

525 0.001 0.016 9.909 62.869 5.353 0.001 -

550 0.001 0.144 34.640 107.794 4.288 0.001 -

575 0.001 1.229 111.656 165.038 2.956 0.001 -

600 0.002 7.842 301.919 214.401 1.698 0.001 -

625 0.001 0.033 44.023 725.841 247.097 0.817 0.001

650 0.001 0.338 176.511 1447.473 245.358 0.322 -

675 0.001 3.326 650.631 2547.758 211.521 0.101 -

700 0.003 24.070 2008.258 3903.361 156.567 0.025 -

Время выполнения алгоритма для элементов из множества уровней Ь отображено в столбцах 5—9 в табл. 3 в зависимости от п. Во втором столбце указана длина к{ разбиения числа п, где г = |~(|.ЙГ| +1)/2], в третьем — мощность множества \Ь\, в четвертом — количество г±(п) для числа п длины к{. Вычислительные эксперименты показали, что количество разбиений числа п длины кг уровня Ц уменьшается с ростом j.

Таблица 3. Время выполнения lj, с.

п ki \L\ г4 J — 1 J = 2 3 = 3 ¿ = 4 3 = 5

400 12 11 1.3 • 108 0.943 0.430 0.185 0.073 0.026

425 9 20 1.4 • 108 0.506 0.361 0.252 0.173 0.117

450 10 18 4.2 • 108 1.770 1.167 0.753 0.474 0.289

475 11 17 1.1 ■ 109 5.524 3.352 1.979 1.128 0.619

500 12 15 2.5 • 109 14.308 7.967 4.275 2.186 1.069

525 13 14 4.8 • 109 33.040 16.661 8.021 3.660 1.571

550 14 13 7.9 • 109 61.741 28.069 12.045 4.841 1.800

575 15 12 1.2 • Ю10 100.423 40.685 15.391 5.377 1.707

600 16 11 1.5 • Ю10 140.244 50.385 16.635 4.977 1.324

625 13 18 5.5 • Ю10 334.202 193.965 107.724 58.396 30.497

650 14 17 1.1 • 1011 724.543 391.159 199.100 97.121 45.406

675 15 16 1.8 • 1011 1377.487 677.709 313.998 137.651 57.033

700 16 14 2.7- 10й 2280.791 1014.834 422.054 164.246 59.489

Таблица 4 содержит затраченное время в секундах на выполнение алгоритма поиска количества разбиения с дополнительными условиями для числа п различной размерности. В таблице Шь — число нитей на параллельный регион по длинам и — число нитей на параллельный регион по уровням.

Таблица 4. Время выполнения алгоритма, с.

п thk - 1 thk — 2

thi - 1 thi - 2 thi - 3 thi - 4 thi - 1 thi - 2 thi - 3 thi - 4

400 2.094 1.179 1.123 1.105 1.672 0.958 0.958 0.973

500 38.255 20.773 19.532 19.306 30.770 15.684 14.721 14.636

600 530.554 299.363 269.692 268.925 308.938 156.577 147.153 146.164

700 6091.733 3422.781 3143.981 3137.729 3920.940 2323.431 2300.573 2309.608

Ускорение, получаемое при использовании параллельного алгоритма для р ядер, по сравнению с последовательным вариантом выполнения вычислений, определяется как

SP(n) = (10)

где Т\(п) — время выполнения последовательного алгоритма и Тр(п) — время выполнения параллельного алгоритма при использовании р ядер.

Эффективность — средняя доля времени выполнения параллельного алгоритма, в течение которого ядра процессора реально используются для решения задачи, определяется

Ер(п) = МО. (П)

Из практики известно, что одна нить использует одно ядро в многоядерном процессоре, тогда число используемых ядер равно Ог^ * Результаты исследования показаны на рис. 2 при ЬНк — 2. Вычислительные эксперименты показали, что оптимальным вариантом является использование двух нитей на параллельный регион по длинам Ог^ — 2 и двух — по уровням Ы%1 = 2. Например, при использовании 6 ядер ускорение увеличивается незначительно, а эффективность становиться меньше 50% при некоторых п.

3.0

аЗ 2.5

Л

о

ё 2.0 1.5 1.0

1.0

Й 0.8

о

0

1 0.6

к н

1о-4 ^ 0.2

0.0

Рис. 2. Ускорение и параллельная эффективность алгоритма при Иг^ = 2

■■■•О.....□.....[ "О............п......о.....

Р'' □.....□ 1_г ■ ■ ■■■□.....□

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

/ р- г— гй_- ---Я" ■ -О —

.* д ///р- —О— —о- —-о- —о-о-< >— —О-о-О-—о— А—

—о— п - 400 п - 600

/ -А- п = 500 —О— п = 700

1 2 4 6 8 10 12 14 16 18 20 22 24 26 28 30 32

Число используемых логических ядер

Число используемых логических ядер

4. Анализ результатов 4.1. Гипотезы Каргаполова

Вычислены значения количества разбиений для трех величин, соответствующим условиям из введения, для п < 960 с шагом 1. Для проверки применимости предположений Каргаполова (7) и (8), рассмотрим два диапазона значений п £ [1,240] и п Е [721,960]. Выбор обусловлен тем, что при небольших значениях п присутствуют колебания графика количества разбиений, но с возрастанием п они визуально исчезают.

Расчет по формулам (7) и (8) показал, что обе гипотезы дают приблизительно одинаковые значения. На рис. 3 изображен график функции из второй гипотезы Каргаполова. На рис. За присутствуют колебания гапк(п) ~ Г4(п), но при увеличении п кривая сглаживается (рис. 36). Относительная погрешность гипотезы от реальных значений показана на рис. 4 (красной линией обозначено пороговое значение 1%).

а) в диапазоне пЕ [1,240] б) в диапазоне п Е [721,960]

Рис. 3. Предположение Каргаполова

50 40 ^ 30 ^20 10 0

1 138 275 412 549 686 823 960 п

Рис. 4. Относительная погрешность гипотезы

Имеет место следующий вывод по гипотезам Каргаполова, что гапк(п) ~ 7*4(71) ~ г(п)/2 с ростом п (см. табл. 5). Таким образом, можно допустить, что при п > 960 гипотезы будут давать точные результаты, но при небольших п имеет место значительное расхождение с реальными значениями.

4.2. Приближенная формула для квадратичных нечетных разбиений

Для получения приближенной формулы воспользуемся методом, описанным в подразделе 2.2. Для qop{n) при С £ [0,2] и е = 0.001 получаем коэффициент с = 1.449. После выполнения аппроксимации по формуле (9) для квадратичных нечетных разбиений, стали известны коэффициенты а = 0.43 и Ь = 1. Подставляя результаты в (9) получим при п —>• оо

ЮР(п) ~ (12)

Из графика (см. рис. 5а) функции (12) видно, что простое применение метода не учитывает колебания, которые с ростом п не сглаживаются для ^ор(п), и имеют период Т = 8. Разобьем на части в зависимости от сравнения по модулю 8 числа п. Таким образом, на

32 Вестник ЮУрГУ. Серия «Вычислительная математика и информатика»

Таблица 5. Относительная погрешность, %

п Гипотеза 1 Гипотеза 2

236 2.55 2.39

237 4.15 4.00

238 6.63 6.80

239 9.32 9.49

240 1.69 1.53

... ...

956 1.00 1.08

957 0.68 0.76

958 0.92 1.01

959 1.25 1.33

960 1.01 1.09

рис. 56 для дор(п) можно заметить образование четырех пар. Следовательно, для оценки колебаний рассмотрим разложение на 4 части

{8/с + 1, 8к + 8}; {8к + 2, 8А; + 7}; {8к + 3, 8/с + 6}; {8/с + 4, 8/с + 5}. (13)

5.654 5.045

1Г 4.436

^ 3.827 3.218 2.609

2.000 .......

900 908 916 924 932 940 948 956

п

а) без разложения

5.654

5.045

^ 4.436 ¥

^ 3.827 3.218 2.609

2.000 .....

900 908 916 924 932 940

п

б) разложение на части

хЮ8

Рис. 5. Квадратичные нечетные разбиения

При таком рассмотрении количества квадратичных нечетных разбиений, получены коэффициенты с для каждой части из списка, и найдены а и 6 при выполнении аппроксимации по формуле (9). Полученные результаты сформулированы как предположение 1. При разложении дор(п) на 4 части относительная погрешность уменьшилась (см. рис. 6 и табл. 6).

Таблица 6. Относительная погрешность дор(п), %

п Без разложения Разложение на 4 части

236 49.69 19.43

237 67.48 9.58

238 30.19 17.88

239 18.25 1.96

240 36.85 11.40

956 8.87 0.69

957 10.02 0.38

958 4.75 0.83

959 2.94 0.47

960 7.99 0.10

1 138 275 412 549 686 823 960

п

50-40-££ 30-чЕГ 20 -10 -о

1 138 275 412 549 п

а) без разложения б) разложение на 4 части

Рис. 6. Относительная погрешность дор(п)

823 960

Предположение 1. При п оо имеет место асимптотическая формула

аор(п)

Заключение

3.301 Л.015л/п

«,1.802 С'

1.888 ,1.011-у/п „1.711 С :

0.277 г0.998л/та

„1.381 С .

0.003 Л).952л/п

„П.ЯЯК С

при п = 1 (тос! 8) или п = 8 (тос! 8) при п = 2 (тос! 8) или п = 7 (тос! 8) при п = 3 (тос! 8) или п = 6 (тос! 8) при п = 4 (тос! 8) или п = 5 (тос! 8)

(14)

В работе рассмотрены разбиения натурального числа п, части которого различны, нечетны и их произведение не является квадратом. Задача нахождения количества разбиений числа п является вычислительно затратной, так как число разбиений быстро увеличивается с ростом п.

Предложен параллельный алгоритм в общей памяти для нахождения количества разбиений числа п с дополнительными условиями. Алгоритм основан на концепции распараллеливания по данным и использовании вложенного параллелизма. Выделяется множество длин К разбиения числа п, элементы которого обрабатываются параллельно. Во время обработки длины к разбиения числа п выделяется множество уровней Ь, рассмотрение которого также выполняется параллельно. Приемлемые значения ускорения и параллель-

A.A. Самоплов

ной эффективности предложенного алгоритма получаются при использовании двух нитей на параллельный регион по длинам и двух — по уровням. Таким образом, ускорение при разных п превышает 2.1, а параллельная эффективность не опускается ниже 50%.

Рассмотрены гипотезы Каргаполова для оценки количества нечетных разбиений, соответствующие условиям из введения, для г±(п) и гапк(п). Анализ результатов показал, что на диапазоне п 6 [1,960] с возрастанием п разница между реальными и оценочными значениями быстро уменьшается и относительная погрешность также незначительна. Таким образом, можно допустить, что оба предположения Каргаполова верны при п > 960.

Предложен алгоритм поиска оптимального коэффициента с. Этот алгоритм позволяет подобрать коэффициенты а и 6 с учетом того, что на разных диапазонах аппроксимации, могут получится разные значения этих коэффициентов. Для оценки количества квадратичных нечетных разбиений, множество значений qop(n) разбивается на 4 части в зависимости от числа п. Затем использовался предложенный метод поиска оптимального коэффициента с. После подбора коэффициентов а, Ь и с из полученных результатов сформулировано предположение 1.

В качестве дальнейшего исследования может быть предложено теоретическое доказательство или опровержение предположения 1.

Литература

1. Ferraz R.A. Simple components and central units in group algebras // Journal of Algebra. 2004. Vol. 279, no. 1. P. 191-203. DOI: 10.1016/j . jalgebra.2004.05.005.

2. Алеев Р.Ж., Каргаполов A.B., Соколов B.B. Ранги групп центральных единиц целочисленных групповых колец знакопеременных групп // Фундаментальная и прикладная математика. 2008. Т. 14, № 7. С. 15-21.

3. Каргаполов A.B. Центральные единицы целочисленных групповых колец знакопеременных групп: дис. ... канд. / Каргаполов Андрей Валерьевич. Южно-Уральский Государственный Университет, Россия, 2012.

4. Sagan В.Е. The Symmetric Group: Representations, Combinatorial Algorithms, and Symmetric Functions. New York: Springer New York, 2001. XVI, 240 p. DOI: 10.1007/978-1-4757-6804-6.

5. Doliskani J.N., Malekian E., Zakerolhosseini A. A Cryptosystem Based on the Symmetric Group Sn // IJCSNS International Journal of Computer Science and Network Security. 2008. Vol. 8, no. 2. P. 226-234.

6. Эндрюс Г. Теория разбиений. Москва: Наука, 1982. 256 с.

7. Постников А.Г. Введение в аналитическую теорию чисел. Москва: Наука, 1971. 416 с.

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

8. Липский В. Комбинаторика для программистов. Москва: Мир, 1988. 200 с.

9. Андерсон Д.А. Дискретная математика и комбинаторика. Москва: Вильяме, 2004. 960 с.

10. Kelley С.Т. Iterative Methods for Optimization. University City, Philadelphia: Society for Industrial and Applied Mathematics, 1999. 196 p. DOI: 10.1137/1.9781611970920.

11. Самойлов A.A. Исследование разбиений с дополнительными условиями. URL: https: //github.com/SashaSamoilov/qop-partitions (дата обращения: 25.09.2023).

Самойлов Александр Андреевич, аспирант, кафедра системного программирования, Южно-Уральский государственный университет (национальный исследовательский университет) (Челябинск, Российская Федерация)

DOI: 10.14529/ cmse240102

DISTRIBUTION OF SQUARES AND HYPOTHESIS VERIFICATION IN ODD INTEGER PARTITIONS

© 2024 A.A. Samoilov

South Ural State University (pr. Lenina 76, Chelyabinsk, 454080 Russia) E-mail: samoilovaa@susu.ru Received: 10.03.2023

The article considers partitions of a natural number n whose parts axe distinct, odd and their product is not a square. Such partitions are applicable for determining the rank of the group of central units of an integral group ring of an alternating group. The number of partitions grows exponentially, hence the enumeration task is computationally expensive. The article proposes a parallel algorithm in shared memory for finding the number of partitions of the n with additional conditions. The algorithm is based on the concept of data parallelism and the use of nested parallelism. A set of lengths K of the partition of the n is obtained, the elements of which are processed in parallel. During the processing of the length k of the partition of the n, the set of levels L is obtained, the elements of which are processed in parallel as well. Acceptable values of speedup and parallel efficiency of the proposed algorithm are obtained by using two threads per parallel length region and two threads per parallel level region. Thus, the speedup for distinct n increases to 2.1, and the parallel efficiency does not decrease below 50%. The results obtained were used to check Kargapolov's hypotheses and analyze the distribution of the number of odd partition in certain ranges. An algorithm for finding the optimal coefficient c is proposed. Using this algorithm, an asymptotic formula for the number of partitions of the n is obtained, in which the parts are distinct, odd and their product is a square. This formula is based on experimental data and formulated as a conjecture. Keywords: integer partition, asymptotic formula, parallel computing, OpenMP.

FOR CITATION

Samoilov A. A. Distribution of Squares and Hypothesis Verification in Odd Integer Partitions. Bulletin of the South Ural State University. Series: Computational Mathematics and Software Engineering. 2024. Vol. 13, no. 1. P. 22-37. (in Russian) DOI: 10.14529/cmse240102.

This paper is distributed under the terms of the Creative Commons Attribution-Non Commercial 4-0 License which permits non-commercial use, reproduction and distribution of the work without further permission provided the original work is properly cited.

References

1. Ferraz R.A. Simple components and central units in group algebras. Journal of Algebra. 2004. Vol. 279, no. 1. P. 191-203. DOI: 10.1016/j . jalgebra.2004.05.005.

2. Aleev R.Z., Kargapolov A.V., Sokolov V.V. The ranks of central unit groups of integral group rings of alternating groups. Fundamental and Applied Mathematics. 2008. Vol. 14, no. 7. P. 15-21. (in Russian).

3. Kargapolov A.V. Central units of integral group rings of alternating groups: PhD thesis / Kargapolov Andrey Valerievich. South Ural State University, Russia, 2012. (in Russian).

4. Sagan B.E. The Symmetric Group: Representations, Combinatorial Algorithms, and Symmetric Functions. New York: Springer New York, 2001. XVI, 240 p. DOI: 10.1007/978-1-4757-6804-6.

A.A. CaMOHJiOB

5. Doliskani J.N., Malekian E., Zakerolhosseini A. A Cryptosystem Based on the Symmetric Group Sn. IJCSNS International Journal of Computer Science and Network Security. 2008. Vol. 8, no. 2. P. 226-234.

6. Andrews G. The Theory of Partitions. Moscow: Nauka, 1982. 256 p. (in Russian).

7. Postnikov A.G. Introduction to Analytic Number Theory. Moscow: Nauka, 1971. 416 p. (in Russian).

8. Lipsky V. Combinatorics for Programmers. Moscow: Mir, 1988. 200 p. (in Russian).

9. Anderson J.A. Discrete Mathematics with Combinatorics. Moscow: Williams, 2004. 960 p. (in Russian).

10. Kelley C.T. Iterative Methods for Optimization. University City, Philadelphia: Society for Industrial and Applied Mathematics, 1999. 196 p. DOI: 10.1137/1.9781611970920.

11. Samoilov A.A. Study of partitions with additional conditions. URL: https: //github. com/ SashaSamoilov/qop-partitions (accessed: 25.09.2023).

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