Modul penentu m

18

Apa algoritma efisien dikenal untuk menghitung penentu matriks bilangan bulat dengan koefisien dalam Zm , cincin residu modulo m . Angka m 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, m adalah bilangan prima. Jadi Zm adalah sebuah bidang. Dan dalam hal ini kita dapat melakukan semua perhitungan menggunakan angka kurang dari m , 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 m 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.

Valeriy Sokolov
sumber
3
Apa yang Anda maksud dengan `efisien ''? Masalahnya adalah jelas di . P
david
2
Apakah konstanta tetap? Bagaimana itu diberikan? m
Michael Blondin
2
Apa yang kamu maksud dengan kecil? Bisakah mereka ditulis secara unary?
Michael Blondin
5
Saya masih tidak mengerti pertanyaannya. Penentu matriks integer dapat dihitung dalam waktu polinomial, jadi Anda bisa mengambil nilai ini modulo . Tidak perlu melakukan divisi di Z m atau menemukan faktorisasi m . mZmm
david
2
@ VereriySokolov: Itu adalah aljabar linier dasar. Sebagai contoh, silakan periksa Soal 11.5.3 Kompleksitas Komputasi oleh Christos H. Papadimitriou.
Tsuyoshi Ito

Jawaban:

15

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=p1e1pnenpieiei=1pieiei

Markus Bläser
sumber
Terima kasih! Itu seperti sesuatu yang saya cari. Apakah ini praktik umum untuk penentu? (referensi dipersilahkan).
Valeriy Sokolov
6
Ini adalah teknik standar dari aljabar komputer. Lihat Modern Computer Aljabar oleh von zur Gathen dan Gerhard atau buku lain tentang aljabar komputer. Untuk masalah spesifik Anda, lihat juga makalah berikut dari Pan, Yu & Stewart comet.lehman.cuny.edu/vpan/pdf/pan146.pdf
Markus Bläser
17

Ada algoritma kombinatorial oleh Mahajan dan Vinay yang bekerja di atas cincin komutatif: http://cjtcs.cs.uchicago.edu/articles/1997/5/contents.html

Sasho Nikolov
sumber
Terima kasih atas balasan Anda dengan tautan ke makalah yang sangat menarik.
Valeriy Sokolov
Saya juga percaya ada algoritma yang lebih efisien karena penulis makalah ini memecahkan masalah yang lebih umum (untuk setiap dering komutatif).
Valeriy Sokolov
dengan "ada" maksud Anda "dikenal" atau "ada" (tetapi belum ditemukan)? ini adalah dugaan yang masuk akal, tetapi saya sedikit skeptis bahwa struktur cincin intigers modulo sejumlah komposit kecil dapat membantu Anda sebanyak itu. jika saya salah, saya akan menemukan itu menarik.
Sasho Nikolov
1
@ValeriySokolov bersikap adil, karena jawabannya memang menjawab pertanyaan Anda, Anda dapat mempertimbangkan menerimanya (atau jika Anda ingin menunggu jawaban yang mungkin lebih baik yang tidak masuk akal)
Suresh Venkat
@ SashoNikolov Saya telah menemukan bahwa Wolfram Mathematica entah bagaimana menghitung ini. Dalam "Catatan Implementasi" kata mereka: Det menggunakan metode modular dan pengurangan baris, membangun hasil menggunakan teorema sisa Cina. Saya ingin tahu persis apa yang mereka lakukan, tetapi pencarian cepat tidak memberi saya apa-apa. Adapun " komposit kecil " itu hanya berarti bahwa saya ingin mempertimbangkan kompleksitas penambahan dan perkalian dalam cincin ini menjadi O ( 1 ) . Itu semua faktor seperti O ( log m ) dianggap sebagai O ( 1 ) . mO(1)O(logm)O(1)
Valeriy Sokolov
11

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.mAdet(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×nZmO(nω)Zm

Diberikan matriks , terdapat algoritma deterministik yang menghitung det ( A ) menggunakan operasi aritmetika dasar O ( n ω ) selama Z mAZmn×ndet(A)O(nω)Zm [1] .

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 kamumm 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ω

Juan Bermejo Vega
sumber
bukan apa yang biasanya dilambangkan ω ? θω
Sasho Nikolov
Mungkin, saya tidak tahu notasi yang paling umum untuk ini.
Juan Bermejo Vega
Saya pikir Anda benar, saya akan mengubahnya menjadi "arus utama"
Juan Bermejo Vega