Thomasアルゴリズムは、対称対角優勢なスパース三重対角線形システムを解くための最速の方法ですか


13

Thomasアルゴリズムが、アルゴリズムの複雑さの観点から対称対角線上にあるスパース三重対角システムを解決するための最速の方法(おそらく?)かどうか疑問に思っています(LAPACKなどの実装パッケージを探していません)。トーマスアルゴリズムとマルチグリッドの両方が複雑さであることは知っていますが、マルチグリッドの定数因子はそれよりも少ないのでしょうか?マルチグリッドの方が速いように思えませんが、私は前向きではありません。On

注:マトリックスが非常に大きい場合を考えています。直接的な方法または反復的な方法のどちらでもかまいません。

回答:


12

反復法(マルチグリッド)と直接/厳密法(トーマス)を正確な操作回数で比較することは、実際には意味がないと思います。IIRC、トーマス操作カウントはすべての三重対角システムで 8 Nです。おそらく、線形解を持っているという些細なケースであると思われるマルチグリッドのビートを想像できますが、それでも各レベルで残差を評価するコストはトーマスのコストに匹敵します。8N

マルチグリッド)の有用性は、スパース行列に一般的であり、三重対角システムに限定されないという事実にあります。ON


ありがとう。反復法は正確ではないことを理解しています。非常に小さな許容値(たとえば10 ^ -15)を指定し、比較のために「正確」であるとして扱う必要がありました。
ジェームズ14

@ user2697246よく、あなたは「確かに」最速について尋ねました。マルチグリッド(または任意の反復スキーム)の正確な収束率は、常にソリューション自体と開始推測に依存します-線形ソリューションは1ステップで効果的に正確に解かれますが、より振動的なものはより多くの操作を必要とします。トーマスは、すべての場合に正確な固定操作カウントを持っています。実際には、自明ではない場合の三重対角システムを(連続的に)解決することで、トーマスに勝つことは決してありません。
アウレリウス14

@Aurelius Thomasアルゴリズムは並列化できますか?そうでない場合、それはマルチグリッドの大きな利点の1つです。
ニックアルガー14

3
@NickAlgerいいえ、Thomasアルゴリズムは厳密にシリアルであり、はい並列化はマルチグリッドにとって大きな利点です(ただし、三重対角システムの特定のケースでは、通信の待ち時間があなたを殺すと思われます)。減少である(PCR)によって並列化、N Iは、GPU上で正常に使用しています。ONlogNN
アウレリウス14

1つの修正、トーマスアルゴリズムは9Nではなく8N操作を必要とします。また、「マルチグリッド...線形解を持つ」とはどういう意味ですか?ここで検討中のすべてのシステムは線形です。
ダグリピンスキー14

11

簡単な答えは、トーマスアルゴリズムは、ほぼすべての場合にどの反復スキームよりも高速になるということです。例外はおそらく、Gauss-Seidelのような非常に単純な反復スキームの単一の反復を適用することですが、これは許容できる解決策を提供する可能性は非常に低いです。また、これは並列処理の問題を無視しています。

OnOn

5N3N3N22N2


「マルチグリッドはO(n)ですが、定数が非常に大きいため、3重対角行列の場合は特に適切ではありません。」私もこれを考えていますが、グーグルは、証拠なしで述べられている0.1から0.2の定数を主張するTrottenburgのMultigridの本の行を持ち出しました。信じられないと思います。
アウレリウス14

1
@Aurelius興味深い。三重対角行列には3N個のエントリがあるため、これは一般的なケースでは明らかに不可能です。コストが〜0.1 * Nの場合、ほとんどのエントリを操作することさえありません。
ダグリピンスキー14

はい、同じページにいます。3ポイントのステンシルを単純に評価するには、3N操作が必要です。私はただスキミングしていたので、おそらく完全に誤解したかもしれませんが、Googleブックスの抜粋であなた自身でそれを見ることができます。
アウレリウス14

4
完全な引用(21ページ)は、「実用的な意味での効率とは、このO(N)ステートメントの比例定数が小さいか中程度であることを意味します。これは確かにマルチグリッドの場合です。非常に小さく(0.1〜0.2以下の範囲で)でき、反復ステップごとの不明ごとの操作カウントも小さくなります。」0.1-0.2は、マルチグリッドの各サイクルの残差削減を指します。O(N)の定数は、サイクルごとにマトリックス乗算の1.5〜2.0倍のオーダーになります(合計で1ダースまたは2サイクル)。
ゴドリックシーア14

ああ、@ GodricSeerに感謝します。
アウレリウス14

0

単一コア上でもマルチグリッドループはオプティマイザーによってベクトル化できます。そのため、オペレーションカウントは役立ちますが、シリアルワールドにおいても、プロセッサはベクトル並列処理を備えているため、コスト分析から解決までの時間を正確に予測できない可能性があることを忘れてはなりません。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.