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


13

我想知道托马斯算法是否是解决算法复杂性(不寻找像LAPACK之类的实现包)方面最快的方法(可证明?)来解决对称对角占优的稀疏三对角线系统。我知道,托马斯算法和多重网格都为复杂度,但是多重网格的常数因子可能较小吗?在我看来,Multigrid可能不会更快,但我并不乐观。O(n)

注意:我正在考虑矩阵很大的情况。可以采用直接方法或迭代方法。

Answers:


12

我相信,就确切的操作数而言,将迭代方法(多重网格)与直接/精确方法(Thomas)进行比较并没有真正的意义。IIRC,托马斯操作计数是用于任何三对角线系统。我唯一可以想象的是,多重网格可以想象的是,对于具有线性解的微不足道的情况,甚至在那时,评估每个级别的残差的成本都可以与Thomas的成本相提并论。8N

多重网格的有用性在于,它对于稀疏矩阵是通用的,而不仅限于三对角线系统。O(N)


谢谢。我意识到迭代方法并不精确。我应该指定一个很小的公差(例如10 ^ -15),并出于比较目的将其视为“精确”。
詹姆斯

@ user2697246好了,您问“最快”的问题。多网格(或任何迭代方案)的确切收敛速度始终取决于解决方案本身和开始的猜测-线性解决方案将一步一步有效地得到解决,而更具振荡性的事情将需要更多操作。对于所有情况,Thomas都有准确的固定操作计数。实际上,您永远不会击败托马斯(系列)解决非平凡案件的三对角线系统。
Aurelius

@Aurelius托马斯算法可以并行化吗?如果没有,那就是多电网的一大优势!
Nick Alger 2014年

3
O(NlogN)N

一种修正是,托马斯算法需要8N次运算,而不是9N次运算。另外,“多重网格...具有线性解”是什么意思?这里考虑的所有系统都是线性的。
Doug Lipinski 2014年

11

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

O(n)O(n)

5N3N3N22N2


“在三对角矩阵的情况下,多重网格是一个特别糟糕的选择,因为尽管多重网格为O(n),但常数很大。” 我也认为这是事实,但是谷歌搜索在特罗滕堡的Multigrid书中提出了一条线,该线声称常数为0.1-0.2,未经证实。我认为我不相信。
Aurelius

1
@Aurelius有趣。在一般情况下,这显然是不可能的,因为三对角矩阵中有3N个条目。如果费用为〜0.1 * N,则意味着您甚至都不会对大多数条目进行操作。
Doug Lipinski 2014年

是的,我们在同一页面上;仅评估3点模板需要3N操作。我只是在浏览,所以也许我完全误解了该声明,但是您可以在Google图书摘录中亲自看到它。
Aurelius

4
全引号(第21页)是“在实际意义上的效率意味着该O(N)语句中的比例常数很小或中等。对于多网格,情况确实如此:如果设计得当,与h无关的收敛因子可以使其很小(在0.1-0.2甚至更少的范围内),并且每个迭代步骤每个未知数的操作计数也很小。” 0.1-0.2是指多网格每个循环的剩余减少量。O(N)上的常数约为每个周期乘以矩阵的1.5-2.0倍(总共十二个或两个周期)。
Godric Seer 2014年

啊,谢谢@GodricSeer,这更有意义。
Aurelius

0

优化器可以向量化甚至在单核上的多网格循环。因此,尽管操作计数可以提供帮助,但我们也不要忘记,即使在串行世界中,处理器也具有矢量并行性,因此解决时间可能也不是我们根据成本分析预测的准确时间。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.