Jumlah minimum operasi aritmatika untuk menghitung penentu

14

Apakah ada pekerjaan pada menemukan jumlah minimum operasi aritmatika dasar yang diperlukan untuk menghitung determinan dari suatu oleh matriks untuk kecil dan tetap ? Misalnya, .nnnnn=5

Lembik
sumber
4
Saya telah bertanya kepada para ahli tentang hal ini, dan tampaknya saat ini tidak diketahui apakah diperlukan 9 kali perkalian untuk menghitung determinan matriks 3x3.
Jeffrey Shallit
@ JeffreyShallit Jika adalah mungkin itu sudah menarik (karena kurang dari misalnya). Bagaimana dengan ? 9n3n=4
Lembik
3
Tidak, tidak menarik sama sekali. 9 perkalian untuk n = 3 diikuti oleh ekspansi oleh anak di bawah umur. Untuk n = 4 lagi, ekspansi oleh anak di bawah umur memberi 40. Saya tidak tahu bagaimana melakukannya dalam waktu kurang dari 40 perkalian.
Jeffrey Shallit
@ JeffreyShallit Oh, begitu, bagus. Sungguh menakjubkan (setidaknya bagi saya) jika tidak ada yang lebih baik daripada naif yang dikenal untuk tetap . n
Lembik
Jika seseorang tahu, mungkin mereka bisa memberi tahu kami.
Jeffrey Shallit

Jawaban:

9

Hal ini diketahui bahwa jumlah operasi aritmatika yang diperlukan untuk menghitung determinan dari suatu n×n matriks adalah nω+o(1) , di mana ω adalah perkalian matriks konstan. Lihat misalnya tabel ini di Wikipedia, serta catatan kaki dan rujukannya. Perhatikan bahwa kompleksitas asimptotik dari inversi matriks juga sama dengan perkalian matriks dalam pengertian yang sama.

Persamaannya cukup efektif. Secara khusus, Anda secara rekursif dapat menghitung determinan dari matriks dengan bekerja pada ( n / 2 ) × ( n / 2 ) blok menggunakan komplemen Schur:n×n(n/2)×(n/2)

D invertibledet(ABCD)=det(D)det(ABD1C).

Dengan demikian, Anda dapat menghitung sebuah penentu dengan menghitung dua ( n / 2 ) × ( n / 2 ) faktor penentu, pembalik satu ( n / 2 ) × ( n / 2 ) matriks, mengalikan dua pasang ( n / 2 ) × ( n / 2 ) matriks, dan beberapa operasi yang lebih sederhana. Memperluas panggilan penentu secara rekursif, kompleksitas akhirnya didominasi oleh perkalian dan inversi matriks.n×n(n/2)×(n/2)(n/2)×(n/2)(n/2)×(n/2)

Ini bekerja dengan baik bahkan untuk kecil dan bahkan tanpa menggunakan algoritma perkalian matriks sub-kubik. (Tentu saja, pada akhirnya lebih atau kurang setara dengan eliminasi Gaussian.) Misalnya, untuk n = 4 , kita dapat menghitung det ( D ) dengan dua perkalian, D - 1 dengan empat divisi, B D - 1 C dengan 2 × 8 = 16 perkalian, det ( A - B D - 1 C )nn=4det(D)D1BD1C2×8=16det(ABD1C)dengan dua perkalian, dan jawaban terakhir dengan satu perkalian. Jumlah totalnya adalah perkalian ditambah divisi, yang kurang dari 40 dari ekspansi kofaktor. Menggunakan algoritma Strassen menyimpan dua perkalian di sini, tetapi lebih asimtotik.2+4+16+2+1=2540

Anda mungkin memperhatikan bahwa ekspansi ini sangat menggunakan divisi. Jika Anda ingin menghindari pembagian, maka seseorang dapat melakukannya dalam operasi dengan bekerja dengan urutan Clow dan pemrograman dinamis . Juga diketahui bagaimana mencapai perkalian n 2 + ω / 2 + o ( 1 ) dan tidak ada divisi.O(n4)n2+ω/2+o(1)

A. Rex
sumber
Apakah Anda tahu ada batas bawah hanya pada jumlah perkalian? Bahkan untuk n = 3?
Jeffrey Shallit
Kalimat Anda "jumlah operasi aritmatika yang diperlukan untuk menghitung determinan dari suatu matriks adalah n ω + o ( 1 ) " menunjukkan bahwa batas bawah dikenal. Tetapi saya tidak melihat ini dalam salah satu karya yang dikutip. Apakah saya melewatkan sesuatu? n×nnω+Hai(1)
Jeffrey Shallit
2
Batas bawah ada di koran oleh W.Baur dan V.Strassen "Kompleksitas turunan parsial" ( dx.doi.org/10.1016/0304-3975(83)90110-X )
Vladimir Lysikov