大型稀疏整数矩阵的算法

计算科学 线性代数 算法 矩阵
2021-12-20 02:57:45

我正在寻找一个在不牺牲数值稳定性的情况下对大型稀疏矩阵执行矩阵运算的库。矩阵将是 1000+ x 1000+,矩阵的值将在 0 到 1000 之间。我将执行索引演算算法,因此我将连续生成矩阵的(稀疏)行向量。在我开发每一行时,我需要测试线性独立性。一旦我用所需数量的线性独立向量填充我的矩阵,我就需要将矩阵转换为简化的行梯形形式。

现在的问题是我的实现使用高斯消除来确定线性独立性(一旦找到我的所有行向量,确保行梯形)。然而,考虑到矩阵的密度和大小,这意味着每个新行中的条目随着时间的推移呈指数增长,因为必须找到前导条目的 lcm 才能执行取消。找到矩阵的简化形式进一步加剧了这个问题。

所以我的问题是,是否有一种算法,或者更好的实现,可以测试线性独立性并解决减少的行梯形,同时保持条目尽可能小?对线性独立性的有效测试尤其重要,因为在索引演算算法中它执行得最多。

1个回答

您可以对多个大素数进行取模以得到对这些素数取模的结果,然后检查是否存在满足这些同余性的位数足够少的有理数。如果是,您可以通过矩阵向量相乘来检查找到的近似值是否准确。这可以转化为精确的决策算法。

但是,如果矩阵的行列式的大小为101000(在您的场景中很可能),您通常不会找到其组件需要少于几千位数的解决方案。

相关链接:
http ://cs.ucsb.edu/~koc/docs/j21.pdf
http://dl.acm.org/citation.cfm?id=355767
http://dl.acm.org/citation。 cfm?id=355765