Houve algum trabalho em encontrar o número mínimo de operações aritméticas elementares necessários para calcular o determinante de um por matriz para pequeno e fixo ? Por exemplo, .n n n = 5
14
Houve algum trabalho em encontrar o número mínimo de operações aritméticas elementares necessários para calcular o determinante de um por matriz para pequeno e fixo ? Por exemplo, .n n n = 5
Respostas:
Sabe-se que o número de operações aritméticas necessário para calcular o determinante de um matriz é n ω + O ( 1 ) , onde ω é a constante multiplicação de matrizes. Veja, por exemplo, esta tabela na Wikipedia, bem como suas notas de rodapé e referências. Observe que a complexidade assintótica da inversão da matriz também é a mesma que a multiplicação da matriz no mesmo sentido.n×n nω+o(1) ω
A equivalência é bastante eficaz. Em particular, você pode recursivamente calcular o determinante de uma matriz, trabalhando em ( n / 2 ) x ( n / 2 ) blocos usando o complemento de Schur:n×n (n/2)×(n/2)
Assim, é possível calcular uma determinante calculando dois ( n / 2 ) x ( n / 2 ) determinantes, invertendo uma ( n / 2 ) x ( n / 2 ) matriz, multiplicando-se dois pares de ( n / 2 ) × ( n / 2 ) matrizes e algumas operações mais simples. Expandindo as chamadas determinantes recursivamente, a complexidade acaba sendo dominada pela multiplicação e inversão da matriz.n×n (n/2)×(n/2) (n/2)×(n/2) (n/2)×(n/2)
Isso funciona bem mesmo para pequenos e mesmo sem o uso de algoritmos de multiplicação de matriz sub-cúbica. (É claro que acaba sendo mais ou menos equivalente à eliminação gaussiana.) Por exemplo, para n = 4 , podemos calcular det ( D ) com duas multiplicações, D - 1 com quatro divisões, B D - 1 C com 2 × 8 = 16 multiplicações, det ( A - B D - 1 C )n n=4 det(D) D−1 BD−1C 2×8=16 det(A−BD−1C) com duas multiplicações e a resposta final com uma multiplicação. O número total é multiplicações mais divisões, que é menor que os 40 da expansão do cofator. O uso do algoritmo de Strassen salva duas multiplicações aqui, mas mais assintoticamente.2+4+16+2+1=25 40
Você pode perceber que essa expansão usa crucialmente a divisão. Se você deseja evitar a divisão, pode-se fazê-lo nas operações trabalhando com sequências Clow e programação dinâmica . É também ele conhecido como conseguir n 2 + ω / 2 + S ( 1 ) multiplicações e divisões não há.O(n4) n2+ω/2+o(1)
fonte