Algoritma untuk Matriks Integer Besar Jarang

12

Saya mencari perpustakaan yang melakukan operasi matriks pada matriks jarang besar tanpa mengorbankan stabilitas numerik. Matriks akan menjadi 1000+ oleh 1000+ dan nilai-nilai matriks akan berada di antara 0 dan 1000. Saya akan melakukan algoritma kalkulus indeks sehingga saya akan menghasilkan vektor baris (jarang) dari matriks serial. Ketika saya mengembangkan setiap baris, saya perlu menguji independensi linear. Setelah saya mengisi matriks saya dengan jumlah vektor bebas linear yang diinginkan, maka saya perlu mengubah matriks menjadi bentuk eselon baris tereduksi.

Masalahnya sekarang adalah implementasi saya menggunakan eliminasi Gaussian untuk menentukan independensi linear (memastikan bentuk eselon baris setelah semua vektor baris saya ditemukan). Namun, mengingat kepadatan dan ukuran matriks, ini berarti entri di setiap baris baru menjadi lebih besar secara eksponensial dari waktu ke waktu, karena lcm dari entri utama harus ditemukan untuk melakukan pembatalan. Menemukan bentuk yang dikurangi dari matriks semakin memperburuk masalah.

Jadi pertanyaan saya adalah, apakah ada algoritma, atau lebih baik lagi suatu implementasi, yang dapat menguji independensi linear dan menyelesaikan bentuk eselon baris tereduksi sambil menjaga entri sekecil mungkin? Tes yang efisien untuk independensi linier sangat penting karena dalam algoritma kalkulus indeks paling banyak dilakukan.

jgonagle
sumber

Jawaban:

5

Anda dapat bekerja modulo sejumlah bilangan prima besar untuk mendapatkan hasil modulo bilangan prima ini, lalu periksa apakah ada rasional dengan beberapa digit yang cukup memenuhi kongruensi ini. Jika ya, Anda bisa mengecek dengan matriks-vektor, kalikan aproksimasi yang ditemukan tepat. Ini dapat diubah menjadi algoritma keputusan yang tepat.

101000

tautan terkait:
http://cs.ucsb.edu/~koc/docs/j21.pdf
http://dl.acm.org/citation.cfm?id=355767
http://dl.acm.org/citation. cfm? id = 355765

Arnold Neumaier
sumber