O número mínimo de operações aritméticas para calcular o determinante

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 = 5nnnn=5

Lembik
fonte
4
Perguntei a especialistas sobre isso e, aparentemente, ainda não se sabe se são necessárias 9 multiplicações para calcular o determinante de uma matriz 3x3.
Jeffrey Shallit
@JeffreyShallit Se 9 for possível, isso já é interessante (como é menor que n3 por exemplo). Que tal n=4 ?
Lembik
3
Não, nada interessante. 9 multiplicações para n = 3 seguem a expansão por menores. Para n = 4 novamente, a expansão por menores dá 40. Não sei como fazê-lo em menos de 40 multiplicações.
Jeffrey Shallit
@JeffreyShallit Oh, eu vejo, bom ponto. É incrível (pelo menos para mim) se nada melhor do que ingênuo é conhecido por qualquer fixo . n
Lembik
Se alguém souber, talvez eles possam nos dizer.
Jeffrey Shallit

Respostas:

9

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×nnω+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)

D invertibledet(ABCD)=det(D)det(ABD1C).

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 )nn=4det(D)D1BD1C2×8=16det(ABD1C)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=2540

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)

A. Rex
fonte
Você conhece algum limite inferior apenas no número de multiplicações? Mesmo para n = 3?
Jeffrey Shallit
O seu fraseado "o número de operações aritméticas necessário para calcular o determinante de um matriz é n ω + O ( 1 ) " sugere que um limite inferior é conhecido. Mas não vi isso em nenhum dos trabalhos citados. Estou esquecendo de algo? n×nnω+o(1)
Jeffrey Shallit 30/11
2
O limite inferior está no artigo de W.Baur e V.Strassen "A complexidade das derivadas parciais" ( dx.doi.org/10.1016/0304-3975(83)90110-X )
Vladimir Lysikov