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分かかりました!