在实践中如何解决稀疏Ax = b系统?

时间:2018-09-05 10:32:36

标签: algorithm matrix sparse-matrix linear-algebra numerical-methods

让A是一个nxn稀疏矩阵,由(i,j,a)形式的m个元组的序列表示,索引为i,j(介于0和n-1之间),a为值a在基础字段F中。

在实践中,使用什么算法求解形式为Ax = b的线性方程组?请描述一下,不要仅仅链接到某个地方。

注意:

  • 我对有限域的精确解以及对使用浮点表示形式的实数或复数的精确和有界误差解都感兴趣。我想有理数的精确或有界解也很有趣。
  • 我对可并行化解决方案特别感兴趣。
  • A不是固定的,也就是说,对于同一个A,您不会只是获得不同的b。

1 个答案:

答案 0 :(得分:1)

我使用和并行化的两个主要算法是Wiedemann algorithmLanczos algorithm(以及GF(2)计算的它们的块变体),这两个算法都比结构化高斯消去更好。

LaMacchia-Odlyzo论文(用于Lanczos算法的论文)将告诉您您需要了解的内容。这些算法涉及将稀疏矩阵乘以一系列向量。为了有效地做到这一点,您需要使用right data structure(链接列表)来使矩阵向量的乘积时间与矩阵中非零值的数量(即稀疏度)成正比。

这些算法的并行化是微不足道的,但是优化将取决于系统的体系结构。矩阵-向量乘法的并行化是通过将矩阵分成行块(每个处理器获得一个块)来完成的,每个行块分别乘以向量。然后,将结果合并以得到新的向量。

我已经广泛地进行了这些类型的计算。打破RSA-129 factorisation的原始作者花了6周的时间在16,384个处理器MasPar上使用结构化高斯消除。在同一台计算机上,我与Arjen Lenstra(作者之一)合作,用Wiedemann块在4天之内和使用Lanczos块在1天之内求解矩阵。不幸的是,我从未发表过结果!