托马斯算法是求解对称对角占优稀疏三对角线性系统的最快方法吗

计算科学 线性求解器 稀疏矩阵 复杂 多重网格
2021-12-01 01:19:19

我想知道 Thomas 算法是否是解决对称对角主导稀疏三对角系统的最快方法(可证明?)就算法复杂性而言(不寻找 LAPACK 等实现包)。我知道托马斯算法和多重网格都是O(n)复杂性,但也许多重网格的常数因子更小?在我看来,multigrid 似乎不会更快,但我并不积极。

注意:我正在考虑矩阵非常大的情况。直接或迭代方法都是可以接受的。

3个回答

我相信在精确操作计数方面将迭代方法(多网格)与直接/精确方法(Thomas)进行比较并没有真正意义。IIRC,Thomas 操作计数为8N对于任何三对角系统。我唯一一次可以想象多重网格可以想象的击败是针对具有线性解决方案的微不足道的情况,即使这样,评估每个级别的残差的成本也将与 Thomas 的成本相当。

O(N)多重网格的用处在于它对于稀疏矩阵是通用的,并且不限于三对角系统。

简短的回答是,对于几乎所有情况,Thomas 算法都比任何迭代方案都要快。例外情况可能是应用非常简单的迭代方案(例如 Gauss-Seidel)的单次迭代,但这极不可能给出可接受的解决方案。此外,这忽略了并行处理问题。

在三对角矩阵的情况下,多重网格是一个特别糟糕的选择,因为尽管多重网格是(n),常数很大。事实上,在矩阵变得非常大之前,多重网格甚至没有超过 Gauss-Seidel 的优势。这是因为需要对每个多重网格级别进行投影、延长和松弛操作,每个级别都需要(n)其中 n 是该多重网格级别的未知数。

最后,这个问题最好通过操作计数来解决。对于 Thomas 算法,共有5ñ乘法和3ñ解决方案需要添加。迭代方案至少需要与矩阵向量乘法一样多的操作,并且给定一个三对角矩阵,每个矩阵向量乘法需要3ñ-2乘法和2ñ-2补充。因此,即使是任何(甚至是最简单的)迭代方案的两个应用程序都将比 Thomas 算法更昂贵。

即使在单核上的多重网格循环也可以由优化器矢量化。因此,虽然操作计数可以提供帮助,但我们不应忘记,即使在串行世界中,处理器也具有矢量并行性,因此解决时间可能与我们从成本分析中预测的不完全一样。