Saya tertarik dalam menghitung 'th kekuatan dari matriks . Misalkan kita memiliki algoritma untuk perkalian matriks yang berjalan dalam waktu . Kemudian, orang dapat dengan mudah menghitung dalam waktu. Apakah mungkin untuk menyelesaikan masalah ini dalam kompleksitas waktu yang lebih rendah?
Entri matriks dapat, secara umum, berasal dari semiring tetapi Anda dapat mengambil struktur tambahan jika itu membantu.
Catatan: Saya mengerti bahwa dalam komputasi umum dalam waktu akan memberikan algoritma untuk eksponensial. Tetapi, sejumlah masalah menarik berkurang ke kasus khusus dari matriks eksponensial di mana m = , dan saya tidak dapat membuktikan hal yang sama tentang masalah yang lebih sederhana ini.
Jawaban:
Jika matriks dapat didiagonalisasi maka pengambilan daya ke- dapat dilakukan dalam waktu O ( D ( n ) + n logn
di mana D ( n ) adalah waktu untuk diagonalize A .
Untuk melengkapi detailnya, jika dengan D diagonal , maka A n = ( P - 1 D P ) n = P - 1 D n PA = P- 1D P D
dan dapat dihitung dengan hanya mengambil setiap elemen diagonal (masing-masing nilai eigen A ) ke kekuatan ke- n .Dn SEBUAH n
sumber
Satu jalan keluar yang baik adalah Singular Value Decomposition SVD . Diberikan matriks A nyata dari peringkat penuh , SVD membaginya menjadi A = U Σ U T di mana Σ adalah matriks diagonal, dalam waktu O ( n 3 ) . Dengan sifat-sifat SVD, A m = U Σ m U T , sehingga hanya matriks diagonal yang perlu di-eksponensial, dan ini dapat dilakukan dalam O ( n log m )n × n SEBUAH A = UΣ UT Σ O ( n3) SEBUAHm= UΣmUT O ( n logm ) waktu. Melakukan perkalian akhir membutuhkan O ( n 2.3727 ) , jadi kami memiliki semua operasi O ( n 3 + n log m ) . U× Σm× UT O ( n2.3727) O ( n3+ n logm )
Perbarui setelah komentar Intinya adalah bahwa begitu SVD ditemukan, daya apa pun hanya membutuhkan waktu untuk dihitung dengan algoritma CW Anda sendiri. Tapi ini bukan pertanyaan Anda. Jika benar-benar ada algoritma o ( M ( n ) log ( m ) ) , itu akan segera dikonversi menjadi algoritma o ( log n ) untuk bilangan bulat. Saya curiga tidak ada yang seperti itu.O ( n2.3727+ n logm ) o ( M( n ) log( m ) ) o ( logn )
sumber