Apa algoritma efisien dikenal untuk menghitung penentu matriks bilangan bulat dengan koefisien dalam , cincin residu modulo . Angka mungkin bukan prima tetapi komposit (jadi perhitungan dilakukan dalam cincin, bukan bidang).
Sejauh yang saya tahu (baca di bawah), kebanyakan algoritma adalah modifikasi dari eliminasi Gaussian. Pertanyaannya adalah tentang efisiensi komputasi dari prosedur ini.
Jika kebetulan ada beberapa pendekatan yang berbeda, saya juga ingin tahu tentang itu.
Terima kasih sebelumnya.
Memperbarui:
Izinkan saya menjelaskan sumber pertanyaan ini. Asumsikan, adalah bilangan prima. Jadi adalah sebuah bidang. Dan dalam hal ini kita dapat melakukan semua perhitungan menggunakan angka kurang dari , jadi kami memiliki batas atas semua operasi pada angka: penambahan, perkalian dan inversi --- semua operasi yang diperlukan untuk menjalankan eliminasi Gaussian.
Di sisi lain kita tidak dapat melakukan inversi untuk beberapa angka jika bukan prima. Jadi kita perlu beberapa trik untuk menghitung determinan.
Dan sekarang saya ingin tahu trik apa yang diketahui untuk melakukan pekerjaan itu dan apakah trik tersebut dapat ditemukan di dalam dan di kertas-kertas buku.
sumber
Jawaban:
Jika Anda mengetahui faktorisasi Anda dapat menghitung modulo setiap p e i i secara terpisah dan kemudian menggabungkan hasil menggunakan remaindering Cina. Jika e i = 1 , maka menghitung modulo p e i i mudah, karena ini adalah bidang. Untuk yang lebih besar e i , Anda dapat menggunakan Hensel angkat.m=pe11⋯penn peii ei=1 peii ei
sumber
Ada algoritma kombinatorial oleh Mahajan dan Vinay yang bekerja di atas cincin komutatif: http://cjtcs.cs.uchicago.edu/articles/1997/5/contents.html
sumber
Untuk mengatasi masalah ini ada algoritma deterministik cepat berdasarkan pada bentuk normal Smith yang kompleksitas kasus terburuknya dibatasi oleh biaya perkalian-matriks atas bilangan bulat modulo . Untuk setiap matriks A , algoritma mengeluarkan bentuk normal Smith, dari mana det ( A ) dapat dengan mudah dihitung.m A det(A)
Lebih konkret, mendefinisikan sehingga dua n × n matriks dengan koefisien diambil dari Z m dapat dikalikan dengan menggunakan O ( n ω ) dasar operasi aritmatika pada Z m (selain integer, perkalian, eksponensial, dll). Kemudian,ω n×n Zm O(nω) Zm
Ketika ini ditulis pada tahun 1996, tidak ada alternatif yang lebih cepat tanpa asimptotis (makalah ini menyebutkan keberadaan algoritma dengan ikatan yang sama tetapi saya tidak tahu yang mana, atau apakah mereka probabilistik).
Pembaruan (17 Juli 2013): fitur bonus yang bagus dari algoritma ini adalah bahwa ia berjalan dalam waktu polinomial untuk m komposit sewenang-wenang tanpa mengetahui faktorisasi prime-nuber dari m ! Ini bagus karena tidak ada algoritma efisien (klasik) yang diketahui untuk memfaktorkan (tentu saja, jika Anda memiliki komputer kuantum, maka Anda dapat menerapkan algoritma Shor ). Jika kamum m memang memiliki faktorisasi maka algoritma yang disarankan Markus tampaknya lebih mudah untuk diterapkan.
Catatan: dalam makalah, kompleksitas "operasi aritmatika dasar" adalah jika Anda menggunakan aritmatika integer standar, tetapi Anda dapat mencapai O ( M ( log m ) log log m ) dengan teknik yang lebih cepat. M ( t ) membatasi biaya untuk mengalikan dua bilangan bulat t- bit. Catatan saat ini untuk ω adalah 2.3727 .O(log2m) O(M(logm)loglogm) M(t) t ω
sumber