行列の固有分解を見つけることの複雑さ


40

私の質問は簡単です:

コンピューティングのための最もよく知られているアルゴリズムの実行時間最悪の場合は何である固有値分解のマトリックスは?n×n

固有分解は行列乗算に還元されますか、それとも最悪の場合で最も知られているアルゴリズム(SVD経由)ですか?O(n3)

条件番号のような問題に依存する定数を持つ境界ではなく、最悪の場合の分析(のみで)を求めていることに注意してください。n

編集:以下の回答のいくつかを考えて、質問を調整させてください:私は -approximationに満足するでしょう。近似は、乗法、加法、エントリ単位、または任意の合理的な定義にすることができます。ようなものよりもへの依存性が高い既知のアルゴリズムがあるかどうかに興味がありますか?nはO P O LのY1 / ε N 3ϵnO(poly(1/ϵ)n3)

編集2対称行列に関するこの関連質問を参照してください。


CLRSアルゴリズムの教科書で、行列の反転から行列の乗算への削減を見ましたか?これらのアイデアを見て、それらが固有分解にまで及ぶかどうかを確認することから始めます。
ウォーレンシューディ

はい-LU分解を見つけるまで拡張されているように見えますが、固有分解でそれを機能させる方法はわかりません。
レフレイジン

がSVDを計算するための最も知られているアルゴリズムであるかどうか知っていますか?O(n3)
ロビンコタリ

1
n × nO(min(mn2,m2n)n×n

わかった。私もこの領域についてはあまり知りませんが、おそらくSVD計算は固有分解に還元できます。AA*とA * Aを固有分解できれば、SVDの左右の行列が得られるからです。
ロビンコタリ

回答:


18

Ryanはmathoverflowについても同様の質問に答えました。リンクはこちら:mathoverflow-answer

基本的に、シンボリック行列式を計算することにより、固有値計算を行列乗算に減らすことができます。これにより、O()の実行時間が与えられ、ビットの固有値が取得されます。現在知られている最良のランタイムは、内の近似に対するO()です。、M 、N 3 + N 2 ログ2 N ログB 2 - bはnω+1mmn3+n2ログ2nログb2b

ライアンの言及は「Victor Y. Pan、Zhao Q. Chen:The Complexity of the Matrix Eigenproblem。STOC 1999:507-516 ''

(古いAho、Hopcroft、Ullmanの本「The Design and Analysis of Computer Algorithms」では、固有値の複雑さと行列乗算の関係についても議論があると思いますが、私はその本を持っていません私の目の前で、正確なページ番号をお伝えすることはできません。)


13

固有値を見つけることは本質的に反復プロセスです。固有値を見つけることは、多項式の根を見つけることと同等です。さらに、Abel-Ruffiniの定理は、一般に、任意の多項式の根を単純な閉じた形式(つまり、2次式のようなラジカルで)で表現できないと述べています。したがって、固有値を「正確に」計算することは望めません。

これは、スペクトル分解アルゴリズムが近似でなければならないことを意味します。一般的なアルゴリズムの実行時間は、目的の精度に依存する必要があります。次元だけに依存することはできません。

私はこれに関する専門家ではありません。nへの3次依存性はかなり良いと思います。私が見たアルゴリズムはすべて、行列と行列の乗算ではなく、行列とベクトルの乗算を使用しています。だから、もしそれがすべて行列-行列の乗算に帰着するなら、私はいくらか驚くでしょう。

見て http://en.wikipedia.org/wiki/List_of_numerical_analysis_topics#Eigenvalue_algorithms


あなたの答えをありがとう-それを消化するのに時間が必要です!ただし、行列とベクトルの乗算を使用する場合、nへの依存性はn ^ 3よりも優れている可能性があります。
レフReyzin

6

行列の固有値に関する部分的な回答のみを提供します。

On3MB[nlogn+L]MBssL。「アルゴリズム代数の基礎」に関するYapの本、特にChapを参照してください10、「線形システム」

特性多項式が見つかったら、分離間隔を使用して、必要な精度で根を見つけることができます。Yapの本Chapを参照してください6詳細については、「多項式の根」。正確な実行時間は忘れますが、特性多項式の次数とその精度が望ましい多項式です。

精度の程度に関係なく固有ベクトルを計算することは多項式でもあると思いますが、単純なアルゴリズムはありません。もちろん、以前に言及されたトリックの標準的なバッグがありますが、私が知る限り、それらはどれも所望の精度のために多項式実行時間を保証しません。


興味深いですが、これはn ^ 3よりもさらに悪いようです。これが可能な限り最高だと知っていますか?
レフReyzin

この性質のアルゴリズムの実行時間は、O(n ^ 3)程度のマトリックス乗算の複雑さに関係しています。Strassenのアルゴリズムについては知っていますが、数値安定性の問題を無視しないと、行列乗算でO(n ^ 3)が返ってくると思います。「平均」の場合、反復法はより速く収束する可能性がありますが、一般的には、O(n ^ 3)について行うことが最善であると考えています。
user834

数値の安定性の問題を気にしないのであれば、O(n ^ 2.376)で解決できると言っていますか?
レフレイジン

5

CommandurとKaleによるMax-Cutの組み合わせアルゴリズムを提供する新しい論文をチェックできます。(大まかな読みから)彼らのアルゴリズムは、最大固有値に対応する固有ベクトルを組み合わせて見つけ、この固有ベクトルを取得したらLuca Trevisanのアルゴリズムを使用することに基づいているようです。

彼らは、そのような固有ベクトルを見つけるために、ランチョスのアルゴリズムの代替アプローチを使用しているようですので、興味深いかもしれません。固有ベクトルを見つけるための彼らの方法の複雑さが主張されているかどうかはわかりませんが、調べる価値があるかもしれません。また、彼らが興味を持っているのは時間そのものではなく近似比であるため、彼らが与えるどんな時間境界も最適ではないかもしれません。


1

これは古い質問ですが、いくつかの重要な文献を見逃しているようです。

Oω+ηωη>0

はい、最後に多くの精度が失われるため、特性多項式の組み立てとBigFloatでの計算を提案するPan + Chen + Zhengの論文がありますが、これを実用的なアプローチと見なす人は多くありません。

また、最も広く使用されているアルゴリズムであるFrancis QR反復には、一般的な行列の収束の証拠はありません。Kressnerの本では、いくつかの反例について説明しています。


0

はい、ほとんどすべての数値線形代数を行列乗算に還元できますが、いつものように、数値の安定性は問題です。また、固有分解などの問題では、解が非合理的である可能性があるため、近似に満足する必要があります。BiniとPan の著書Polynomial and Matrix Computationsをご覧ください。

ここに別のリファレンスがあります- 高速線形代数は安定してい ますhttp://www.netlib.org/lapack/lawnspdf/lawn186.pdf


3
ポインターに感謝しますが、Googleブックの本を検索してみると、行列の乗算の削減を見つけることができませんでした。具体的な参照またはアルゴリズムへのポインタはありますか?また、SVDアルゴリズムは、行列の条件数に依存するようです。これは最悪のケースの分析ではありません。数値安定性の問題などに関して、すべての乗算と除算に単位時間がかかり、正確な答えが得られる理想的なケースを想定してみましょう。
レフレイジン
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.