Czy były prace nad znalezieniem minimalnej liczby elementarnych operacji arytmetycznych potrzebnych do obliczenia wyznacznika macierzy na dla małej i stałej ? Na przykład .
Czy były prace nad znalezieniem minimalnej liczby elementarnych operacji arytmetycznych potrzebnych do obliczenia wyznacznika macierzy na dla małej i stałej ? Na przykład .
Odpowiedzi:
Wiadomo, że liczba operacji arytmetycznych niezbędnych do obliczenia wyznacznika macierzy wynosi , gdzie jest stałą mnożenia macierzy. Zobacz na przykład tę tabelę na Wikipedii, a także jej przypisy i odniesienia. Zauważ, że asymptotyczna złożoność inwersji macierzy jest również taka sama jak mnożenie macierzy w tym samym sensie.n ω + o ( 1 ) ω
Równoważność jest dość skuteczna. W szczególności możesz rekurencyjnie obliczać wyznacznik macierzy , pracując na blokach przy użyciu dopełniacza Schur:( n / 2 ) × ( n / 2 )
Zatem można obliczyć wyznacznik , obliczając dwa wyznaczniki , odwracając jedną macierz , mnożąc dwie pary macierze i niektóre prostsze operacje. Po rozszerzeniu rekurencyjnych wywołań złożoność zostaje zdominowana przez mnożenie i inwersję macierzy.( n / 2 ) × ( n / 2 ) ( n / 2 ) × ( n / 2 ) ( n / 2 ) × ( n / 2 )
Działa to dobrze nawet dla małych a nawet bez użycia algorytmów macierzy sub-sześciennej. (Oczywiście kończy się to mniej więcej równoważnością eliminacji Gaussa.) Na przykład dla możemy obliczyć z dwoma mnożeniami, z czterema podziałami, z mnożenia, z dwoma mnożeniami, a ostateczna odpowiedź z jednym mnożeniem. Łączna liczba wynosi pomnożeń plus podziałów, czyli mniej niżz ekspansji kofaktora. Użycie algorytmu Strassena zapisuje tutaj dwa mnożenia, ale bardziej asymptotycznie.
Możesz zauważyć, że to rozszerzenie używa podziału. Jeśli chcesz uniknąć podziału, możesz to zrobić w operacjach , pracując z sekwencjami Clow i programowaniem dynamicznym . Jest również znany sposób w celu uzyskania mnożenia i nie podziałów.