Apakah ada pekerjaan pada menemukan jumlah minimum operasi aritmatika dasar yang diperlukan untuk menghitung determinan dari suatu oleh matriks untuk kecil dan tetap ? Misalnya, .n
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, .n
Jawaban:
Hal ini diketahui bahwa jumlah operasi aritmatika yang diperlukan untuk menghitung determinan dari suatun×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)
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 )n n = 4 det ( D ) D- 1 B D- 1C 2 × 8 = 16 det ( A - B D- 1C) 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 = 25 40
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 )
sumber