Próbuję dowiedzieć się, czy istnieje szybszy sposób obliczenia wszystkich wartości własnych i wektorów własnych bardzo dużej i rzadkiej macierzy przylegania niż przy użyciu scipy.sparse.linalg.eigsh O ile mi wiadomo, metody te wykorzystują tylko rzadkość i atrybuty symetrii macierzy. Macierz przylegania jest również binarna, co sprawia, że myślę, że istnieje szybszy sposób, aby to zrobić.
Utworzyłem losową macierz rzadkiej przylegalności 1000 x 1000 i porównałem kilka metod na moim laptopie z Ubuntu 13.04 x230:
- scipy.sparse.linalg.eigs: 0,65 sekundy
- scipy.sparse.linalg.eigsh: 0,44 sekundy
- scipy.linalg.eig: 6,09 sekund
- scipy.linalg.eigh: 1,60 sekundy
W przypadku rzadkich eigsh i eigsh ustawiam k, liczbę pożądanych wartości własnych i wektorów własnych, jako rangę macierzy.
Problem zaczyna się od większych matryc - na matrycy 9000 x 9000 zajęło scipy.sparse.linalg.eigsh 45 minut!