Złożoność mocy macierzy obliczeniowych


14

Jestem zainteresowany obliczania „th moc macierzy . Załóżmy, że mamy algorytm mnożenia macierzy, który działa w czasie . Następnie można łatwo obliczyć w czasie . Czy można rozwiązać ten problem w mniejszym stopniu złożoności?n × n A O ( M ( n ) ) A n O ( M ( n ) log ( n ) )nn×nAO(M(n))AnO(M(n)log(n))

Wpisy w macierzy mogą na ogół pochodzić z semiringu, ale można założyć dodatkową strukturę, jeśli to pomoże.

Uwaga: rozumieć, że zasadniczo obliczeniowym w czas dałoby algorytm potęgowania. Ale wiele interesujących problemów sprowadza się do specjalnego przypadku potęgowania macierzy, gdzie m = , a ja nie byłem w stanie udowodnić tego samego na temat tego prostszego problemu. o ( M ( n ) log ( m ) )Amo(M(n)log(m))o(logm)O(n)


jakie są wpisy macierzy? Liczby całkowite?
Kaveh

1
Wpisy mogą na ogół pochodzić z pół wieku, ale możesz założyć dodatkową strukturę, jeśli to pomoże.
Shitikanth

Nie mogłem uzyskać redukcji z mnożenia do kwadratu z wyżej zaproponowanej metody (tj. Używając ). Jednak użycie działa. Daje to jednak tylko przy obliczaniu . ( 0 A B 0 ) 2 Ω ( M ( n ) ) A n(A±B)2(0AB0)2Ω(M(n))An
Shitikanth

Odpowiedzi:


11

Jeżeli matryca jest diagonalizable następnie biorąc th mocy mogą być wykonane w czasie gdzie jest czas diagonalize .n

O(D(n)+nlogn)
D(n)A

Aby uzupełnić szczegóły, jeśli z przekątną , to A=P1DPD

An=(P1DP)n=P1DnP

i można obliczyć, po prostu przenosząc każdy element przekątnej (każdą wartość własną ) na tą moc.DnAn


6
Nawet jeśli macierz jest diagonalizowalna, najbardziej znane algorytmy dla składu eigend zajmują czas . Za pomocą algorytmu Coppersmith-Winograd, że już O ( n 2,3727 Log ( m ) ) algorytm do obliczania A m . O(n3)O(n2.3727log(m))Am
Shitikanth

1
(1) Czas, który zacytowałeś, nie pochodzi od Coppersmith-Winograd (jak zapewne wiesz). (2) Wszystkie algorytmy tej formy działają tylko dla pierścieni; nie działają w przypadku semiracji ogólnych (jak na to pozwalasz w swoim pytaniu).
Ryan Williams

5

Jednym dobrym wyjściem jest SVD . Biorąc pod uwagę rzeczywistym macierzy z pełno SVD rozdziela się od siebie, jak A = U Ď U , T , gdzie Σ jest macierzą diagonalną, w czasie O ( n- 3 ) . Według właściwości SVD, A m = U Σ m U T , więc tylko macierz diagonalna musi być potęgowana wykładniczo, i można to zrobić w O ( n log m )n×nAA=UΣUTΣO(n3)Am=UΣmUTO(nlogm)czas. Przeprowadzenie końcowego mnożenia wymaga O ( n 2,3727 ) , więc mamy w sumie operacje O ( n 3 + n log m ) . U×Σm×UTO(n2.3727)O(n3+nlogm)

Aktualizacja po komentarzu Chodzi o to, że po znalezieniu SVD każda moc potrzebuje tylko do obliczenia według własnego algorytmu CW. Ale to nie jest twoje pytanie. Jeśli naprawdę istniałby algorytm o ( M ( n ) log ( m ) ) , natychmiast przekształciłby się w algorytm o ( log n ) dla liczb całkowitych. Podejrzewam, że jeden taki nie istnieje.O(n2.3727+nlogm)o(M(n)log(m))o(logn)


Ponieważ algorytm Coppersmith-Winograd znajduje iloczyn dwóch macierzy w razem, już O ( n 2,3727 Log ( m ) ) algorytm do obliczania A m . Interesuje mnie wiedza, czy można to poprawić bez potrzeby lepszego algorytmu mnożenia macierzy, szczególnie dla m = O ( n ) . O(n2.3727)O(n2.3727log(m))Amm=O(n)
Shitikanth

1
SVD nie podaje ogólnie - macierz po prawej stronie to V U A=UΣUVU
Suresh

1
Trochę mylące jest również mieć dla mocy, więc użyję m . Jeżeli n = 1 należy wziąć O ( M ( 1 ) dziennika m czasu, aby znaleźć A m , co odpowiada pomnożenie liczbnmn=1O(M(1)logmAm
PKG

2
@Shitikanth patrz ccrwest.org/gordon/jalg.pdf, aby uzyskać informacje na temat algorytmów szybkiego potęgowania. Zasadniczo nie jest możliwe użycie mniejszej niż wielokrotność . logm
Joe

1
Jak zostało powiedziane, nie było to jasne w twoim pytaniu.
PKG
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.