Jaki jest najszybszy algorytm do obliczania rangi macierzy prostokątnej?


15

Biorąc pod uwagę macierz m×n (przy założeniu, że mn ), jaki jest najszybszy algorytm obliczający swoją pozycję i podstawę kolumn?

Wiem, że można to rozwiązać za pomocą liniowego przecięcia macierzy, co implikuje algorytm deterministyczny czasowy i algorytm randomizowany czasowo O ( m n ω - 1 ) . Czy istnieje algorytm deterministyczny czasowy O ( m n ω - 1 ) , który bardziej bezpośrednio redukuje problem (lub eliminację Gaussa) do mnożenia macierzy?O(mn1.62)O(mnω1)O(mnω1)

Odpowiedzi:


9

Możesz wprowadzić macierz do postaci echelonu w czasie O ( n ω + ϵ ) dla dowolnego ϵ > 0 . Zobacz książkę „Teoria złożoności algebraicznej” Bürgissera, Clausena, Shokrollahi, rozdział 16.5.2n×nO(nω+ϵ)ϵ>0

Teraz zastosuj tę procedurę razy do swojej macierzy m × n . Daje to algorytm z operacjami arytmetycznymi O ( m n ω - 1 ) .m/nm×nO(mnω1)

Jeśli wprowadzisz macierz do postaci echelon, wówczas zawiera ona macierz zerową o rozmiarze n × n . Bierzesz pozostałą macierz n × n , dodajesz nowy blok n × n swojej matrycy wejściowej i doprowadzasz ją do formy echelon i tak dalej.2n×nn×nn×nn×n


1
mm/nm/n

Czy jest na to dolna granica? Czy ranga ma jakąkolwiek siłę obliczeniową?
Thomas Ahle

3

m×nO~(nnz(A)+rω) time, where nnz(A) is the number of non-zero entries in A and r is the rank of A. This follows from Theorem 1.1 in Cheung et. al. [CKL'13] and binary searching over r. This is faster than the O(mnω1) algorithm mentioned above.


2
I guess you mean "faster than the O(mnω1) algorithm" (I cannot edit the answer myself as the edit is too small)
smapers

1
Thanks for pointing that out. The citation above is a paper by the OP so my answer is mostly for completeness.
Ainesh Bakshi
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.