scipy.sparse.linalg.eigsh を使用するよりも、非常に大きくて疎な隣接行列のすべての固有値と固有ベクトルを計算する高速な方法があるかどうかを調べようとしています。私の知る限り、この方法は疎性と行列の対称属性。隣接行列もバイナリであるため、より高速な方法があると思います。
ランダムな 1000x1000 疎隣接行列を作成し、x230 ubuntu 13.04 ラップトップでいくつかの方法を比較しました。
- scipy.sparse.linalg.eigs: 0.65 秒
- scipy.sparse.linalg.eigsh: 0.44 秒
- scipy.linalg.eig: 6.09 秒
- scipy.linalg.eigh: 1.60 秒
まばらな eig と eigsh を使用して、目的の固有値と固有ベクトルの数である k を行列のランクに設定します。
問題はより大きな行列から始まります - 9000x9000 の行列では、scipy.sparse.linalg.eigsh 45 分かかりました!