Быстрая целочисленная матрица с нулевым пространством в Python? - PullRequest
0 голосов
/ 23 февраля 2019

У меня есть программа на Python, которая принимает матрицы с коэффициентами, которые могут быть только -1, 0 и 1. Мне нужно вычислить пустое пространство для этих матриц.Эти матрицы могут быть огромными (миллионы записей), а производительность имеет решающее значение.

Scipy's null_space имеет приемлемую производительность, но проблема в том, что он возвращает пустое пространство в виде ортонормированной матрицы.Я хотел бы, чтобы полученная матрица имела целочисленные коэффициенты.

Sympy's nullspace возвращает желаемую матрицу, однако, потому что это чистый Python (и, вероятно, также потому, что он использует исключение Гаусса вместо более быстрогоалгоритмы) имеет очень плохую производительность.

Есть ли что-нибудь еще, что я могу попробовать?Было бы хорошо, если бы решения можно было легко распараллелить.

1 Ответ

0 голосов
/ 23 февраля 2019

Вы можете попробовать разложение QR.Сципи использует SVD для нулевого пространства.QR в принципе быстрее.

Редактировать: Короткий поиск по Mathoverflow показывает это https://mathoverflow.net/questions/61861/fast-algorithms-for-computing-nullspace-of-a-positive-semidefinite-matrix-over-z

...