Hitung semua nilai eigen dari matriks adjacency yang sangat besar dan sangat jarang


13

Saya memiliki dua grafik dengan masing-masing hampir n ~ 100000 node. Dalam kedua grafik, setiap node terhubung tepat ke 3 node lainnya sehingga matriks adjacency simetris dan sangat jarang.

Bagian yang sulit adalah saya membutuhkan semua nilai eigen dari matriks adjacency tetapi bukan vektor eigen. Agar akurat, ini akan menjadi sekali seumur hidup saya (sejauh yang saya bisa lihat, setidaknya!) Jadi saya ingin mendapatkan semua nilai eigen dan tidak keberatan menunggu beberapa hari untuk mendapatkannya.

Saya mencoba scipypembungkus di sekitar ARPACK, tetapi terlalu lama. Saya menemukan beberapa perpustakaan tetapi mereka bekerja paling baik untuk mendapatkan subset dari nilai eigen terbesar / terkecil. Apakah ada perpustakaan yang berfungsi untuk matriks jarang simetris dengan implementasi paralel mungkin untuk mendapatkan semua nilai eigen?


6
Karena penasaran, mengapa Anda membutuhkan semua nilai eigen? Sebagian besar masalah ukuran ini adalah perkiraan masalah yang bahkan lebih besar (atau bahkan dimensi tak terbatas), sehingga nilai eigen dari masalah kecil hanya mendekati masalah yang benar-benar ingin dipecahkan. Paling sering, kualitas perkiraan hanya baik untuk nilai eigen terkecil atau terbesar, dan semua yang lain hanya kurang didekati dan akibatnya tidak banyak kepentingan praktis.
Wolfgang Bangerth


@ WolfgangBangerth: (Maafkan saya jika ini jelas bagi Anda) Masalahnya berasal dari fisika bahan. Ini terkait dengan perkiraan bahan pengikat yang ketat untuk mendapatkan struktur pita, sifat getaran dan listrik. Untuk mendapatkan ini, saya membutuhkan spektrum penuh nilai eigen. BTW, ini bukan hal yang baru dan kembali ke 70-an dan 80-an tetapi karena sistem saya amorf, saya perlu memiliki sistem yang sangat besar untuk mendapatkan hasil yang baik. Meskipun kebanyakan orang hanya peduli pada kristal yang sangat mudah dibandingkan dengan kasus saya.
Mahdi

2
@ Mahdi: Ya, yang saya maksudkan adalah bahwa sifat fisik ditentukan oleh spektrum dari beberapa operator diferensial parsial. Saya curiga (tapi tentu saja tidak tahu, karena Anda tidak menggambarkan dari mana masalah itu berasal) bahwa masalah nilai eigen matriks besar yang Anda miliki hanyalah perkiraan masalah PDE. Akibatnya, nilai eigen Anda juga hanya akan menjadi perkiraan.
Wolfgang Bangerth

Jawaban:


8

Anda dapat menggunakan transformasi spektral shift-invert [1] dan menghitung pita spektrum demi pita.

Teknik ini juga dijelaskan dalam artikel saya [2]. Selain implementasi di [1], implementasi tersedia di C ++ di perangkat lunak Graphite saya [3] ( pembaruan 17 Januari : sekarang semuanya porting ke geogram / grafit versi 3 ), yang saya gunakan untuk menghitung fungsi eigen dari operator Laplace untuk jerat dengan hingga 1 juta simpul (masalah yang mirip dengan Anda).

Bagaimana itu bekerja:

A(V,λ)A(V,1/λ)A1AA1ALLtAx=bAσIdσ(AσId)1σ

[1] http://www.mcs.anl.gov/uploads/cels/papers/P1263.pdf

[2] http://alice.loria.fr/index.php/publications.html?redirect=0&Paper=ManifoldHarmonics@2008

[3] http://alice.loria.fr/software/graphite/doc/html/


Bruno terima kasih! Ini terlihat sangat menjanjikan, saya akan melihatnya!
Mahdi

1

Opsi lain akan menggunakan rotasi Jacobi. Karena matriks Anda sudah hampir diagonal, seharusnya tidak perlu banyak waktu untuk bertemu. Secara umum konvergen dalam laju linier, tetapi setelah iterasi yang cukup, laju konvergensi menjadi kuadratik.

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.