Kompleksitas kekuatan matriks komputasi

14

Saya tertarik dalam menghitung n '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?n×nSEBUAHHAI(M.(n))SEBUAHnHAI(M.(n)catatan(n))

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.SEBUAHmHai(M.(n)catatan(m))Hai(catatanm)HAI(n)

Shitikanth
sumber
apa saja entri dari matriks? Bilangan bulat?
Kaveh
1
Entri dapat, secara umum, berasal dari semiring tetapi Anda dapat mengambil struktur tambahan jika itu membantu.
Shitikanth
Saya tidak bisa mendapatkan pengurangan dari multiplasi menjadi kuadrat dari metode yang diusulkan di atas (yaitu menggunakan ). Namun, menggunakan ( 0 A B 0 ) 2 berfungsi. Namun, ini hanya memberikan Ω ( M ( n ) )(SEBUAH±B)2(0SEBUAHB0)2Ω(M.(n)) pada komputasi . SEBUAHn
Shitikanth

Jawaban:

11

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 .

HAI(D(n)+ncatatann)
D(n)SEBUAH

Untuk melengkapi detailnya, jika dengan D diagonal , maka A n = ( P - 1 D P ) n = P - 1 D n PSEBUAH=P-1DPD

SEBUAHn=(P-1DP)n=P-1DnP

dan dapat dihitung dengan hanya mengambil setiap elemen diagonal (masing-masing nilai eigen A ) ke kekuatan ke- n .DnSEBUAHn

Ran G.
sumber
6
Bahkan jika matriks dapat didiagonalisasi, algoritma yang paling dikenal untuk komposisi eigend mengambil waktu. Dengan menggunakan algoritma Coppersmith-Winograd, kami sudah memiliki algoritma O ( n 2.3727 log ( m ) ) untuk komputasi A. m .HAI(n3)HAI(n2.3727catatan(m))SEBUAHm
Shitikanth
1
(1) Batas waktu yang Anda kutip bukan oleh Coppersmith-Winograd (seperti yang mungkin Anda ketahui). (2) Semua algoritma dari bentuk itu hanya berfungsi untuk cincin; mereka tidak berfungsi untuk semiring umum (seperti yang Anda izinkan dalam pertanyaan Anda).
Ryan Williams
5

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×nSEBUAHSEBUAH=UΣUTΣHAI(n3)SEBUAHm=UΣmUTHAI(ncatatanm)waktu. Melakukan perkalian akhir membutuhkan O ( n 2.3727 ) , jadi kami memiliki semua operasi O ( n 3 + n log m ) . U×Σm×UTHAI(n2.3727)HAI(n3+ncatatanm)

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.HAI(n2.3727+ncatatanm)Hai(M.(n)catatan(m))Hai(catatann)

PKG
sumber
Karena algoritma Coppersmith-Winograd menemukan produk dari dua matriks dalam waktu , kami sudah memiliki algoritma O ( n 2.3727 log ( m ) ) untuk menghitung A m . Saya tertarik mengetahui apakah ini dapat diperbaiki tanpa memerlukan algoritma multiplikasi matriks yang lebih baik, terutama untuk m = O ( n ) . HAI(n2.3727)HAI(n2.3727catatan(m))SEBUAHmm=HAI(n)
Shitikanth
1
SEBUAH=UΣUVU
1
nmn=1HAI(M.(1)catatanmSEBUAHm
2
@Shitikanth lihat ccrwest.org/gordon/jalg.pdf untuk survei algoritma eksponensial cepat. Secara umum, tidak mungkin untuk menggunakan lebih sedikit dari multiplikasi . catatanm
Joe
1
Ini tidak jelas dari pertanyaan Anda, seperti yang dinyatakan.
PKG