ฉันพยายามที่จะคิดออกว่ามีวิธีที่เร็วกว่าในการคำนวณค่าลักษณะเฉพาะและ eigenvector ทั้งหมดของเมทริกซ์ adjacency ขนาดใหญ่มากและกระจัดกระจายกว่าการใช้ scipy.sparse.linalg.eigsh เท่าที่ฉันรู้วิธีการนี้ใช้เพียงการกระจายและ คุณลักษณะสมมาตรของเมทริกซ์ เมทริกซ์คำวิเศษณ์เป็นเลขฐานสองสิ่งที่ทำให้ฉันคิดว่ามีวิธีที่เร็วกว่าที่จะทำ
ฉันสร้างเมทริกซ์ adjacency แบบสุ่มขนาด 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 วินาที
ด้วยการกระจัดกระจาย eigs และ eigsh ฉันตั้ง k จำนวนค่าลักษณะเฉพาะและ eigenvectors ที่ต้องการให้เป็นอันดับของเมทริกซ์
ปัญหาเริ่มต้นด้วยเมทริกซ์ที่ใหญ่กว่า - บนเมทริกซ์ 9000x9000 ใช้เวลา scipy.sparse.linalg.eigsh 45 นาที!