Программирование, 2023, № 5, стр. 79-86
ЭФФЕКТИВНЫЕ НИЖНИЕ ГРАНИЦЫ ДЛЯ РАНГА МАТРИЦЫ И ПРИЛОЖЕНИЯ
О. А. Зверков a, *, А. В. Селиверстов a, **
a Институт проблем передачи информации им. А.А. Харкевича Российской академии наук
127051 Москва, Большой Каретный пер., д. 19, Россия
* E-mail: zverkov@iitp.ru
** E-mail: slvstv@iitp.ru
Поступила в редакцию 26.06.2022
После доработки 27.07.2022
Принята к публикации 30.10.2022
- EDN: MHEYDZ
- DOI: 10.31857/S0132347423020176
Аннотация
Предложена эффективно проверяемая нижняя граница для ранга разреженной вполне неразложимой квадратной матрицы, содержащей по два ненулевых элемента в каждой строке и каждом столбце. Ранг такой матрицы равен порядку или отличается на единицу. Построены базисы специального вида в пространствах квадратичных форм от фиксированного числа переменных. Существование таких базисов позволило нам обосновать эвристический алгоритм для решения задачи распознавания, проходит ли данное аффинное подпространство через вершину многомерного единичного куба. В худшем случае этот алгоритм может вернуть уведомление о неопределенности результата вычисления, но для общего подпространства достаточно малой размерности корректно отвергает вход. Алгоритм реализован на языке Python. В ходе тестирования получены оценки времени работы этой реализации алгоритма.
1. ВВЕДЕНИЕ
Python – современный язык программирования общего назначения, вышедший в последние годы на первое место в различных рейтингах популярности и особенно востребованный в научных приложениях. Сильными сторонами Python считаются легкость начального освоения, быстрота процесса разработки, лаконичность и удобочитаемость текстов программ. В качестве основного недостатка обычно называется относительно низкая производительность программ, обусловленная в основном интерпретируемой природой языка и динамической типизацией. Однако этот недостаток во многом компенсируется доступностью большого разнообразия библиотек, предоставляющих Python-разработчикам доступ к эффективным реализациям различных алгоритмов, а также возможностью подключения собственных программных модулей, написанных на компилируемых языках [1]. В контексте нашей задачи удобной особенностью Python является встроенная в язык поддержка работы с целыми числами неограниченной битовой длины, а также с рациональными числами.
Ранг n × n матрицы над полем можно вычислить, используя полиномиальное число процессоров и выполнив на каждом из них лишь $O(\mathop {\log }\nolimits_2^2 n)$ операций над этим полем [2, 3]. Эффективное распараллеливание возможно не только для вычисления ранга, но также для вычисления обратной матрицы, $LDU$-разложения квадратной матрицы и разложения Холецкого симметричной положительно определенной матрицы [4, 5]. С другой стороны, сложность вычисления ранга [6] и характеристического многочлена [7–9] близка к сложности матричного умножения. Для циркулянтов известны легко проверяемые условия невырожденности [10]. Теоретический интерес представляет задача проверки линейной независимости системы многочленов от нескольких переменных. Иногда такие многочлены могут быть заданы короткими выражениями или арифметическими схемами, хотя матрицы коэффициентов таких многочленов имеют большой размер. Поэтому важны легко проверяемые оценки ранга матрицы. Обычно вычисления выполняются над полем рациональных чисел, но символьные вычисления можно проводить и над полями алгебраических чисел [11, 12].
Точки детерминантального многообразия соответствуют (с точностью до умножения на ненулевое число) матрицам фиксированного размера, ранг которых ограничен сверху. Детерминантальное многообразие может иметь очень большую степень [13, 14]. Поэтому над алгебраически замкнутым полем нельзя проверить значение ранга матрицы посредством неветвящейся программы небольшого размера. С другой стороны, на этих многообразиях лежат линейные подпространства, что иногда можно использовать для оценки ранга [15].
Используя оценки ранга, мы рассмотрим эвристический алгоритм проверки инцидентности данного подпространства и какой-либо вершины единичного куба. Такая проверка эквивалентна поиску (0, 1)-решения для системы уравнений
Хотя уже известны эвристические алгоритмы для решения этой задачи при дополнительных ограничениях [17–19], принято считать, что эта задача трудная для вычисления в худшем случае. Поэтому актуально создание новых алгоритмов, у которых вычислительная сложность в среднем ограничена многочленом от длины входа при других ограничениях.
Говоря о задачах распознавания, мы предполагаем три варианта ответа: вход может быть не только принят или отвергнут, но также возможно явное уведомление о неопределенности выбора. При этом ответ должен быть получен за конечное время и без ошибок, а при выполнении легко проверяемого условия уведомление о неопределенности может быть выдано лишь на малой доле входов среди всех входов данной длины [20, 21]. При оценке алгебраической сложности достаточно требовать, чтобы уведомление о неопределенности выдавалось на множестве входов, на которых обращается в нуль некоторый многочлен, отличный от тождественно нулевого [16, 22].
В разделе 2 представлены теоретические результаты. В разделе 3 описана реализация алгоритма на языке Python. В разделе 4 дано краткое заключение.
2. ТЕОРЕТИЧЕСКИЕ РЕЗУЛЬТАТЫ
Элементами (0, 1)-матрицы служат лишь нули или единицы. Подматрицей называется матрица, полученная удалением некоторых строк и столбцов. Матрица размера $n \times n$ называется вполне неразложимой, когда в ней нет нулевой подматрицы размера $s \times (n - s)$ ни для какого s.
Рассмотрим квадратные матрицы, имеющие в каждой строке и каждом столбце по два ненулевых элемента. Если такого типа (0, 1)-матрица вполне неразложимая, то ее перманент равен двум [23]. В этом случае значение определителя принадлежит множеству $\{ - 2,0,2\} $. Очевидно, вырождена любая такая (0, 1)-матрица над полем характеристики два. Примером вырожденной матрицы над произвольным полем служит 2 × 2 матрица ранга один, каждый элемент которой равен единице. Другим примером служит (0, 1)-циркулянт
Эта матрица тоже вырожденная, но ее ранг равен трем. Характеристический многочлен этой матрицы равен ${{x}^{4}} - 4{{x}^{3}} + 6{{x}^{2}} - 4x$. Мы дадим нижнюю оценку ранга таких матриц.
Теорема 1. Дана вполне неразложимая $n \times n$ матрица $A$, где в каждой строке и каждом столбце ровно по два ненулевых элемента. Ранг матрицы $A$ ограничен снизу: ${\text{rank}}(A) \geqslant n - 1$.
Доказательство. Условие полной неразложимости не нарушается при перестановке строк или столбцов. Поэтому без ограничения общности полагаем, что на главной диагонали матрицы $A$ все элементы ненулевые. Тогда матрица $A$ равна сумме двух невырожденных матриц $A = D + CP$, где обе матрицы $C$ и $D$ диагональные и невырожденные, а через $P$ обозначена матрица перестановки с нулями на главной диагонали. Поскольку матрица $A$ вполне неразложимая, перестановка $P$ состоит из одного цикла длины $n$.
Для любой матрицы перестановки $Q$ матрица $QA{{Q}^{{ - 1}}}$ получается из матрицы $A$ согласованной перестановкой строк и столбцов. При этом элементы на главной диагонали остаются на главной диагонали. Поэтому для некоторой матрицы перестановки $Q$ в матрице $QA{{Q}^{{ - 1}}}$ отличны от нуля элементы на главной диагонали, непосредственно над главной диагональю и еще один элемент в первом столбце и последней строке. Такая матрица $QA{{Q}^{{ - 1}}}$ имеет вид (для $n > 6$)
В теореме 1 условие полной неразложимости важно. Например, для четного $n$ у блочно-диагональной матрицы размера $n \times n$, на диагонали которой стоят 2 × 2 блоки по четыре единицы в каждом, ранг равен $n{\text{/}}2$.
Далее мы рассматриваем поля характеристики нуль. Рассмотрим задачу об инцидентности данного аффинного подпространства и какой-либо вершины $n$-мерного куба. Метод состоит в попытке построить алгебраическую гиперповерхность малой степени, проходящую через каждую вершину куба, но не пересекающую данное аффинное подпространство. Вычислительная сложность этого метода зависит от степени гиперповерхности. С другой стороны, этот метод эффективен лишь при условии, что размерность аффинного подпространства достаточно мала. Пусть это подпространство определяется системой из $m$ линейных уравнений. Размерность линейного пространства форм степени $d$ от переменных ${{x}_{0}}$, …, ${{x}_{n}}$ равна биномиальному коэффициенту $\left( {\begin{array}{*{20}{c}} {n + d} \\ d \end{array}} \right)$. Поэтому рассматриваемый метод эффективен в среднем, когда число уравнений удовлетворяет неравенству типа m ≥ n – $\sqrt {d(d - 1)n - o(n)} $, где через $d$ обозначена степень искомой гиперповерхности. Мы ограничимся случаем d = 2, когда гиперповерхностью служит квадрика [16].
Пусть $n$-мерный куб вложен в проективное пространство, а однородные координаты вершин принадлежат множеству $\{ 0,1\} $, но ни одна из вершин куба не лежит на бесконечно удаленной гиперплоскости ${{x}_{0}} = 0$. Известно [24], что квадрика, проходящая через каждую вершину этого куба, определяется квадратичной формой типа
Если подпространство задано системой уравнений ${{x}_{j}} = {{\ell }_{j}}({{x}_{0}}, \ldots ,{{x}_{{n - m}}})$, где $n - m < j \leqslant n$, то существование квадрики, проходящей через каждую вершину куба и пересекающей это подпространство лишь на бесконечности, эквивалентно разрешимости уравнения
В алгоритме 1 первые $n - m$ столбцов матрицы $A$ всегда содержат по два ненулевых элемента 1 и –1. В столбце с номером $j > n - m$ элементы равны многочленам второй степени от коэффициентов линейной формы ${{\ell }_{j}}$.
Алгоритм 1. Проверка существования вершины куба, инцидентной данному подпространству.
Input: целые числа $0 < m < n$ и линейные формы ${{\ell }_{j}}({{x}_{0}}, \ldots ,{{x}_{{n - m}}})$, где $n - m < j \leqslant n$.
1: Элементами матрицы $A$ служат коэффициенты формы
2: Расширенная матрица $B$ получается из матрицы $A$ добавлением столбца, в котором единица стоит в строке, соответствующей моному $x_{0}^{2}$, а остальные элементы этого столбца равны нулю;
3: if ${\text{rank}}(A) = {\text{rank}}(B)$ then вход отвергается
4: else уведомление о неопределенности.
Рассмотрим пример, соответствующий прямой на плоскости. Пусть $n = 2$, $m = 1$, линейная форма ${{\ell }_{2}} = {{x}_{0}} + {{x}_{1}}$. Получаем уравнение
Здесь три монома от переменных ${{x}_{0}}$ и ${{x}_{1}}$. Это $x_{0}^{2}$, ${{x}_{0}}{{x}_{1}}$ и $x_{1}^{2}$. Соответствующая матрица $A$ содержит два столбца и три строки:
Расширенная матрица равна
Здесь ${\text{rank}}(A) = 2$ и ${\text{rank}}(B) = 3$. Поэтому искомые ${{\lambda }_{1}}$ и ${{\lambda }_{2}}$ не существуют. Ответ алгоритма 1 состоит в уведомлении о неопределенности.
Рассмотрим другой пример, соответствующий прямой в пространстве. Пусть $n = 3$, $m = 2$, линейные формы ${{\ell }_{2}} = 2{{x}_{0}} + {{x}_{1}}$ и ${{\ell }_{3}} = 3{{x}_{1}}$. Получаем уравнение ${{\lambda }_{1}}( - {{x}_{0}}{{x}_{1}} + x_{1}^{2})\,\, + $ ${{\lambda }_{2}}(2x_{0}^{2} + 3{{x}_{0}}{{x}_{1}} + x_{1}^{2}) + $ ${{\lambda }_{3}}( - 3{{x}_{0}}{{x}_{1}} + 9x_{1}^{2}) = x_{0}^{2}$. Здесь снова три монома от переменных ${{x}_{0}}$ и ${{x}_{1}}$. Это $x_{0}^{2}$, ${{x}_{0}}{{x}_{1}}$ и $x_{1}^{2}$. Но матрица $A$ содержит три столбца и три строки:
Расширенная матрица равна
Матрица $A$ невырожденная, ранги матриц $A$ и $B$ совпадают. Алгоритм 1 отвергает вход.
Следующая теорема обеспечивает достаточное условие типа $m \geqslant n - \sqrt {2n - o(n)} $, при котором алгоритм 1 отвергает большую долю входов при фиксированных значениях $n$ и $m$. Доказательство основано на построении базиса специального вида в пространстве квадратичных форм.
Теорема 2. Даны положительные целые числа $n$ и $m < n$, для которых выполнено неравенство $2n \geqslant (n - m + 1)(n - m + 2)$. Для почти каждого набора из $m$ линейных форм ${{\ell }_{j}}({{x}_{0}}, \ldots ,{{x}_{{n - m}}})$, где $n - m < j \leqslant n$, найдутся значения коэффициентов ${{\lambda }_{1}}$, …, ${{\lambda }_{n}}$, для которых выполнено равенство квадратичных форм
Если для некоторого $\varepsilon > 0$ коэффициенты линейных форм ${{\ell }_{j}}$ независимо и равномерно распределены на множестве из
чисел, то вероятность отсутствия искомых значений ${{\lambda }_{1}}$, …, ${{\lambda }_{n}}$ не превышает $\varepsilon $.
Доказательство. Рассмотрим матрицу $A$ из алгоритма 1. По условию теоремы, в матрице $A$ число строк $r = (n - m + 1)(n - m + 2){\text{/}}2$ не превышает числа столбцов $n$. В этом случае достаточным условием существования искомых ${{\lambda }_{1}}$, …, ${{\lambda }_{n}}$ служит равенство ${\text{rank}}(A) = r$. Каждый элемент матрицы $A$ равен либо константе, либо многочлену второй степени от коэффициентов линейных форм ${{\ell }_{j}}$. Следовательно, минор порядка $r$ матрицы $A$ равен многочлену от коэффициентов линейных форм ${{\ell }_{j}}$, степень которого не превышает $2r$.
По лемме Шварца–Зиппеля [25], если этот многочлен не равен нулю тождественно, то вероятность обращения в нуль
не превышает
.
Осталось показать, что для некоторого набора форм ${{\ell }_{j}}$ угловой минор порядка $r$ матрицы $A$ отличен от нуля. При этом достаточно рассмотреть набор форм, коэффициенты которых не обязательно принадлежат указанному в условии множеству. Положим ${{\ell }_{{n - m + k}}} = {{x}_{0}} + {{x}_{k}}$ для $1 \leqslant k \leqslant n$ – m. Обозначим через $f(i,k)$ номер пары индексов $1 \leqslant i < k \leqslant n - m$, принимающий значения от 1 до $(n - m)(n - m - 1){\text{/}}2$. Положим ${{\ell }_{j}} = {{x}_{i}} + {{x}_{k}}$ для $j = 2(n - m) + f(i,k)$. При $j = r$ полагаем ${{\ell }_{r}}\, = \,2{{x}_{0}}$.
Для индексов $1 \leqslant i < k \leqslant n - m$ моному ${{x}_{i}}{{x}_{k}}$ соответствует строка, где отличен от нуля лишь элемент в столбце $j = 2(n - m) + f(i,k)$. Этот элемент равен двум. С другой стороны, в столбцах с номерами $1 \leqslant j \leqslant n - m$ по два ненулевых элемента: $ - 1$ в строке, соответствующей моному ${{x}_{0}}{{x}_{j}}$, и $1$ в строке, соответствующей моному $x_{j}^{2}$. Переставим строки в матрице $A$ в соответствии с таким порядком мономов: ${{x}_{0}}{{x}_{1}}$, …, ${{x}_{0}}{{x}_{{n - m}}}$, $x_{1}^{2}$, $x_{2}^{2}$, …, $x_{{n - m}}^{2}$, мономы ${{x}_{i}}{{x}_{k}}$ для $1 \leqslant i < k \leqslant n - m$ и последний $x_{0}^{2}$. Угловая подматрица порядка $r$ примет вид
Следовательно, ${\text{rank}}(A) = r$. ◻
Заметим, что в доказательстве теоремы 2 используется семейство разреженных матриц. Поэтому разреженность матрицы $A$ не служит препятствием для успешного применения обсуждаемого алгоритма. Более того, для разреженных матриц меньше сложность вычисления ранга, что позволяет работать в больших размерностях. В доказательстве теоремы 2 рассмотрен частный случай, когда матрица $A$ имеет полный ранг. Поэтому вычисление ранга можно заменить на проверку невырожденности матрицы $A$. Однако это было бы неоправданным ограничением применимости алгоритма 1.
3. РЕАЛИЗАЦИЯ
Обозначим через $L$ матрицу, составленную из коэффициентов линейных форм ${{\ell }_{j}}$ в алгоритме 1 и теореме 2. Первая строка матрицы $L$ соответствует форме ${{\ell }_{{n - m + 1}}}$, а последняя строка – форме ${{\ell }_{n}}$. Например, для двух линейных форм ${{\ell }_{2}}\, = \,2{{x}_{0}}\, + \,{{x}_{1}}$ и ${{\ell }_{3}} = 3{{x}_{1}}$ эта матрица равна
Сопоставление матрице $L$ матрицы $B$ требует меньше времени, чем вычисление рангов матриц $A$ и $B$. Такое преобразование реализует функция compose_b(), которая получает на вход матрицу $L$ и возвращает матрицу $B$, где обе матрицы представлены массивами NumPy. Порядок строк в $B$ соответствует лексикографическому мономиальному упорядочению, а первая строка матрицы – моному $x_{0}^{2}$. Матрица $A$ легко получается удалением последнего столбца из матрицы $B$. Функция compose_b() реализована на языке Python с использованием библиотеки NumPy.
При использовании целых чисел фиксированной битовой длины, NumPy позволяет значительно повысить эффективность работы с матрицами (как по скорости, так и по памяти) по сравнению со встроенными типами данных языка Python, например списками чисел [26]. При работе с другими типами данных, включая целые неограниченной длины и рациональные числа, эти преимущества в основном утрачиваются. Однако в любом случае NumPy позволяет кратко записывать стандартные операции над матрицами и их частями, например, как в нашем случае, выделение подматрицы, поэлементное сложение и умножение строк и т. п.
Через $s = n - m$ обозначена размерность подпространства, для которого проверяется инцидентность вершине $n$-мерного куба. Через height обозначено число мономов второй степени от переменных ${{x}_{0}}$, …, ${{x}_{s}}$, равное $(s + 1)(s + 2){\text{/}}2$.
Для оценки времени работы функции compose_b() при n = height генерировалась $(n - s) \times (s + 1)$ матрица $L$, элементами которой служат случайно выбранные целые числа из отрезка $[ - {{10}^{9}}{{,10}^{9}}]$. Время, затраченное на вычисление матрицы $B$, показано в таблице 1. В третьем столбце таблицы 1 указаны результаты для 64-битовых целых чисел, а в последнем столбце – для целых чисел неограниченной битовой длины, вычисления над которыми реализованы в языке Python. Мы использовали версии Python 3.10.4 и NumPy 1.22.4. Вычисления проведены на персональном компьютере на базе процессора Intel® Core i5-3570 и с оперативной памятью 16 гигабайтов. Поэтому для больших матриц вычисления с числами неограниченной битовой длины не были проведены из-за переполнения оперативной памяти, хотя для 64-битовых чисел вычисления продолжены вплоть до значений $s = 300$.
Таблица 1.
Время в секундах для вычисления матрицы $B$ при различных значениях $s$ и $n$ для двух типов целых чисел: 64-битовых и неограниченной битовой длины
| Параметры | Тип целых чисел | ||
|---|---|---|---|
| $s$ | $n$ | 64-битовые | без ограничений |
| 20 | 231 | 0.01 | 0.02 |
| 30 | 496 | 0.03 | 0.08 |
| 40 | 861 | 0.07 | 0.20 |
| 50 | 1326 | 0.14 | 0.50 |
| 60 | 1891 | 0.25 | 1.00 |
| 70 | 2556 | 0.43 | 1.90 |
| 80 | 3321 | 0.68 | 3.20 |
| 90 | 4186 | 1.10 | 5.00 |
| 100 | 5151 | 1.50 | 8.20 |
| 110 | 6216 | 2.20 | 12 |
| 120 | 7381 | 3.00 | 16 |
| 130 | 8646 | 4.20 | 24 |
| 140 | 10 011 | 5.40 | 36 |
| 150 | 11 476 | 7.50 | 51 |
| 160 | 13 041 | 9.50 | 66 |
| 170 | 14 706 | 13 | 89 |
| 180 | 16 471 | 15 | |
| 190 | 18 336 | 20 | |
| 200 | 20 301 | 23 | |
| 210 | 22 366 | 29 | |
| 220 | 24 531 | 34 | |
| 230 | 26 796 | 43 | |
| 240 | 29 161 | 50 | |
| 250 | 31 626 | 62 | |
| 260 | 34 191 | 83 | |
| 270 | 36 856 | 89 | |
| 280 | 39 621 | 100 | |
| 290 | 42 486 | 130 | |
| 300 | 45 451 | 170 | |
Одновременное вычисление рангов матриц $A$ и $B$ по данной на вход матрице $B$ также реализовано на языке Python. Для вычислений с рациональными числами используется класс Fraction из стандартной библиотеки Python.
Вычисление ранга основано на приведении матрицы к ступенчатому виду. Поскольку матрица $A$ служит подматрицей в $B$, для обеих матриц $A$ и $B$ такое преобразование можно сделать одновременно. Это позволяет примерно вдвое уменьшить время работы по сравнению с независимым вычислением рангов двух матриц.
Чтобы оценить время для вычисления функции rank_ab(), при n = height генерировались $(n - s) \times (s + 1)$ матрицы $L$, элементами которых служат случайно выбранные целые числа из отрезка $[ - N,N]$. Время вычисления для разных значений границы диапазона $N \in {{\{ 10}^{3}}{{,10}^{6}}{{,10}^{9}}\} $ показано в таблице 2. Чем больше размер матрицы, тем быстрее возрастает время работы при увеличении средней битовой длины элементов матрицы.
Таблица 2.
Время в секундах для вычисления ранга матрицы $B$ при различных значениях параметров $s$, $n$ и $N$
| Параметры | $N$ | |||
|---|---|---|---|---|
| $s$ | $n$ | 103 | 106 | 109 |
| 5 | 21 | 0.02 | 0.02 | 0.02 |
| 6 | 28 | 0.04 | 0.05 | 0.07 |
| 7 | 36 | 0.09 | 0.10 | 0.19 |
| 8 | 45 | 0.21 | 0.34 | 0.50 |
| 9 | 55 | 0.45 | 0.77 | 1.20 |
| 10 | 66 | 0.91 | 1.70 | 2.70 |
| 11 | 78 | 1.80 | 3.50 | 5.70 |
| 12 | 91 | 3.30 | 6.90 | 12 |
| 13 | 105 | 6 | 13 | 23 |
| 14 | 120 | 11 | 24 | 42 |
| 15 | 136 | 18 | 42 | 76 |
| 16 | 153 | 30 | 73 | 130 |
| 17 | 171 | 50 | 120 | 230 |
| 18 | 190 | 79 | 200 | 380 |
| 19 | 210 | 120 | 330 | 610 |
| 20 | 231 | 190 | 510 | 960 |
Отметим, что реализованный в библиотеке NumPy метод вычисления ранга, основанный на сингулярном разложении матрицы, в этой задаче применять небезопасно из-за возможных ошибок, связанных с использованием чисел с плавающей запятой. Например, при значениях $k \geqslant 16$ вычисляемый в NumPy 1.22.4 таким неточным способом ранг диагональной 2 × 2 матрицы с элементами 1 и 10k на главной диагонали оказывается равным единице. Поэтому для вычисления ранга мы использовали новую реализацию известного алгоритма Гаусса приведения матрицы к ступенчатому виду, которая позволяет работать с числами неограниченной битовой длины.
В итоге реализацией алгоритма 1 служит функция may_have_01solution(), которая получает на вход матрицу $L$. Значение равно True, когда алгоритм 1 дал бы неопределенный ответ. Значение False означает, что алгоритм 1 отвергает вход. Входом может служить матрица с рациональными элементами.
Листинги обсуждаемых функций и примеры их использования доступны по адресу http://lab6.iitp.ru/-/qualg
4. ЗАКЛЮЧЕНИЕ
Реализован на языке Python эвристический алгоритм полиномиального времени для распознавания подпространств достаточно малой размерности, инцидентных какой-либо из вершин единичного многомерного куба, хотя в худшем случае эта задача считается вычислительно трудной. Алгоритм либо корректно отвергает вход, либо сообщает об отсутствии очевидного препятствия к инцидентности. В частности, полученные ограничения на сложность этой задачи могут быть полезны для оценки надежности криптографических протоколов, основанных на поиске (0, 1)-решения системы уравнений [19, 27].
Алгоритм использует вычисление ранга матрицы. Полученные в теореме 1 оценки ранга неразложимой разреженной матрицы позволяют, в частности, тестировать вычисление ранга матрицы большого порядка.
Авторы благодарны анонимному рецензенту за сделанные замечания, позволившие улучшить статью.
Список литературы
Геворкян М.Н., Королькова А.В., Кулябов Д.С., Севастьянов Л.А. Пример модульного расширения системы компьютерной алгебры // Программирование. 2020. № 2. С. 30–37. DOI: Перевод: Programming and Computer Software. 2020. V. 46. № 2. P. 98–104.https://doi.org/10.31857/S0132347420020065
Chistov A.L. Fast parallel calculation of the rank of matrices over a field of arbitrary characteristic // In: L. Budach (eds) Fundamentals of Computation Theory. FCT 1985. Lecture Notes in Computer Science, vol. 199. Springer, Berlin, Heidelberg, 1985. P. 63–69. https://doi.org/10.1007/BFb0028792
Mulmuley K. A fast parallel algorithm to compute the rank of a matrix over an arbitrary field // Combinatorica. 1987. V. 7. № 1. P. 101–104. https://doi.org/10.1007/BF02579205
Malaschonok G., Tchaikovsky I. About big matrix inversion // In: Abramov S.A., Sevastyanov L.A. (eds) Computer algebra. Moscow: MAKS Press, 2021. P. 81–84. https://doi.org/10.29003/m2019.978-5-317-06623-9
Малашонок Г.И., Сидько А.А. Суперкомпьютерная среда выполнения для рекурсивных матричных алгоритмов // Программирование. 2022. № 2. С. 33–46. DOI: Перевод: Programming and Computer Software. 2022. V. 48. P. 90–101.https://doi.org/10.31857/S0132347422020091
Cheung H.Y., Kwok T.C., Lau L.C. Fast matrix rank algorithms and applications // Journal of the ACM. 2013. V. 60. № 5. Article № 31. P. 1–25. https://doi.org/10.1145/2528404
Abdeljaoued J., Malaschonok G.I. Efficient algorithms for computing the characteristic polynomial in a domain // Journal of Pure and Applied Algebra. 2001. V. 156. P. 127–145. https://doi.org/10.1016/S0022-4049(99)00158-9
Переславцева О.Н. О вычислении характеристического полинома матрицы // Дискретная математика. 2011. Т. 23. № 1. С. 28–45. DOI: Перевод: Discrete Mathematics and Applications. 2011. V. 21. № 1. P. 109–128.https://doi.org/10.4213/dm1128
Neiger V., Pernet C. Deterministic computation of the characteristic polynomial in the time of matrix multiplication // Journal of Complexity. 2021. V. 67. № 101572. P. 1–35. https://doi.org/10.1016/j.jco.2021.101572
Chen Z. On nonsingularity of circulant matrices // Linear Algebra and its Applications. 2021. V. 612. P. 162–176. https://doi.org/10.1016/j.laa.2020.12.010
Алаев П.Е., Селиванов В.Л. Поля алгебраических чисел, вычислимые за полиномиальное время. I // Алгебра и логика. 2019. Т. 58. № 6. С. 673–705. DOI: Перевод: Algebra Logiс. 2020. V. 58. P. 447–469.https://doi.org/10.33048/alglog.2019.58.601
Алаев П.Е., Селиванов В.Л. Поля алгебраических чисел, вычислимые за полиномиальное время. II // Алгебра и логика. 2021. Т. 60. № 6. С. 533–548. DOI: Перевод: Algebra Logiс. 2022. V. 60. P. 349–359.https://doi.org/10.33048/alglog.2021.60.601
Harris J., Tu L.W. On symmetric and skew-symmetric determinantal varieties // Topology. 1984. V. 23. № 1. P. 71–84. https://doi.org/10.1016/0040-9383(84)90026-0
Harris J. Algebraic geometry. Springer-Verlag New York, 1992. 330 p. https://doi.org/10.1007/978-1-4757-2189-8
Rubei E. Affine subspaces of matrices with constant rank // Linear Algebra and its Applications. 2022. V. 644. № 1. P. 259–269. https://doi.org/10.1016/j.laa.2022.03.002
Селиверстов А.В. Двоичные решения для больших систем линейных уравнений // Прикладная дискретная математика. 2021. № 52. С. 5–15. https://doi.org/10.17223/20710410/52/1
Кузюрин Н.Н. Полиномиальный в среднем алгоритм в целочисленном линейном программировании // Сибирский журнал исследования операций. 1994. Т. 1. № 3. С. 38–48.
Kuzyurin N.N. An integer linear programming algorithm polynomial in the average case // In: Korshunov A.D. (eds.) Discrete Analysis and Operations Research. Mathematics and Its Applications. V. 355. P. 143–152. Springer, Dordrecht, 1996. https://doi.org/10.1007/978-94-009-1606-7
Pan Y., Zhang F. Solving low-density multiple subset sum problems with SVP oracle // Journal of Systems Science and Complexity. 2016. V. 29. P. 228–242. https://doi.org/10.1007/s11424-015-3324-9
Рыбалов А.Н. О генерической сложности проблемы о сумме подмножеств для полугрупп целочисленных матриц // Прикладная дискретная математика. 2020. № 50. С. 118–126. https://doi.org/10.17223/20710410/50/9
Рыбалов А.Н. О генерической сложности проблемы вхождения для полугрупп целочисленных матриц // Прикладная дискретная математика. 2022. № 55. С. 95–101. https://doi.org/10.17223/20710410/55/7
Селиверстов А.В. Эвристические алгоритмы распознавания некоторых кубических гиперповерхностей // Программирование. 2021. № 1. С. 65–72. DOI: Перевод: Programming and Computer Software. 2021. V. 47. № 1. P. 50–55.https://doi.org/10.31857/S0132347421010106
Minc H. $(0,1)$-matrices with minimal permanents // Israel Journal of Mathematics. 1973. V. 15. P. 27–30. https://doi.org/10.1007/BF0277177010.1007/BF02771770
Seliverstov A.V., Lyubetsky V.A. About forms equal to zero at each vertex of a cube // Journal of Communications Technology and Electronics. 2012. V. 57. № 8. P. 892–895. https://doi.org/10.1134/S1064226912080049
Schwartz J.T. Fast probabilistic algorithms for verification of polynomial identities // Journal of the ACM. 1980. V. 27. № 4. P. 701–717. https://doi.org/10.1145/322217.322225
Harris C.R., Millman K.J., van der Walt S.J. et al. Array programming with NumPy // Nature. 2020. V. 585. № 7825. P. 357–362. https://doi.org/10.1038/s41586-020-2649-2
Chen Y.A., Gao X.S. Quantum algorithm for Boolean equation solving and quantum algebraic attack on cryptosystems // Journal of Systems Science and Complexity. 2022. V. 35. P. 373–412. https://doi.org/10.1007/s11424-020-0028-6
Дополнительные материалы отсутствуют.
Инструменты
Программирование


