Saya mencoba mencari tahu apakah ada cara yang lebih cepat untuk menghitung semua nilai eigen dan vektor eigen dari matriks adjacency yang sangat besar dan jarang daripada menggunakan scipy.sparse.linalg.eigsh Sejauh yang saya tahu, metode ini hanya menggunakan sparseness dan atribut simetri dari matriks. Matriks adjacency juga biner, yang membuat saya berpikir ada cara yang lebih cepat untuk melakukannya.
Saya membuat matriks adjacency jarang 1000x1000 acak, dan membandingkan antara beberapa metode di laptop x230 ubuntu 13.04 saya:
- scipy.sparse.linalg.eigs: 0,65 detik
- scipy.sparse.linalg.eigsh: 0,44 detik
- scipy.linalg.eig: 6.09 detik
- scipy.linalg.eigh: 1,60 detik
Dengan sedikit eigsh dan eigsh, saya menetapkan k, nilai eigen yang diinginkan dan vektor eigen, menjadi pangkat matriks.
Masalahnya dimulai dengan matriks yang lebih besar - pada matriks 9000x9000, butuh scipy.sparse.linalg.eigsh 45 menit!