Classe de complexidade da inversão de matriz

9

Está invertendo uma matriz na classe Complexidade ?P

Desde o tempo de execução, eu diria que sim O(n3) mas a matriz invertida pode conter entradas em que o tamanho não é polinomialmente limitado pela entrada?

irritável
fonte
1
Na prática O(n3)na maioria das vezes significa que é o limite para os flops , supondo que você esteja trabalhando em matrizes sobre números de ponto flutuante, que são obviamente aproximações deR. As implementações usuais são executadas nesse limite de tempo, com a ressalva de que, em vez de o tempo exceder, você obtém instabilidade numérica . Este comentário pretende esclarecer a alegação usual, não invalidar as respostas abaixo, que assumem "bignums" .
Fizz

Respostas:

7

Sim, isso pode ser feito em tempo polinomial, mas a prova é bastante sutil. Não é simplesmenteO(n3)tempo, porque a eliminação gaussiana envolve multiplicar e adicionar números, e o tempo para executar cada uma dessas operações aritméticas depende de quão grandes elas são. Para algumas matrizes, os valores intermediários podem se tornar extremamente grandes, de modo que a eliminação gaussiana não é necessariamente executada no tempo polinomial.

Felizmente, não são algoritmos que não são executados em tempo polinomial. Eles exigem muito mais cuidado no design do algoritmo e na análise do algoritmo para provar que o tempo de execução é polinomial, mas isso pode ser feito. Por exemplo, o tempo de execução do algoritmo de Bareiss é algo comoO(n5(registron)2) [na verdade, é mais complexo que isso, mas tome isso como uma simplificação por enquanto].

Para muito mais detalhes, consulte a entrada de blog de Dick Lipton, Forgetting Results, e Qual é a complexidade de tempo real da eliminação gaussiana? e resumo da Wikipedia .

Finalmente, uma palavra de cautela. O tempo de execução preciso depende exatamente de qual campo você está trabalhando. A discussão acima se aplica se você estiver trabalhando com números racionais. Por outro lado, se, por exemplo, você estiver trabalhando no campo finitoGF(2)(os inteiros módulo 2), seguida de eliminação de Gauss ingênuo não ser executado emO(n3)Tempo. Se você não entender o que isso significa, provavelmente poderá ignorar este último parágrafo.

DW
fonte
Essas observações são válidas para decomposições LU e QR (em vez de inversão "direta")?
Fizz
@RespawnedFluff, ótima pergunta! Eu não sei. Parece que valeria a pena uma pergunta separada.
DW
Se você deseja apenas uma solução exata para UMAx=bcom coeficientes inteiros, ou seja, uma solução em lógica "bignum", o método padrão é via expansão p-adic ; isso leva apenasO(n3euog2n). Uma implementação é, por exemplo, IML . Daqui resulta que, para inverter exatamente essa matriz, você precisaO(n4euog2n); há detalhes mais práticos em sciencedirect.com/science/article/pii/S0377042708003907
Fizz
2

Existe uma fórmula para as entradas da matriz inversa que fornece cada entrada como uma razão de dois determinantes, um de menor da matriz original e o outro de toda a matriz original. Isso deve ajudá-lo a limitar o tamanho das entradas na matriz inversa, se você for cuidadoso, dada uma noção razoável de "tamanho" (observe que, mesmo que você comece com uma matriz inteira, o inverso pode conter entradas racionais).

Dito isto, muitas vezes a matriz inversa é estudada do ponto de vista da teoria da complexidade algébrica, na qual você conta operações básicas independentemente da magnitude. Nesse modelo, pode-se mostrar que a complexidade da matriz inversa é equivalente à complexidade da multiplicação da matriz, até termos polilogarítmicos; talvez essa redução também possa ajudá-lo a limitar o tamanho dos coeficientes.

Dado o algoritmo eficiente no modelo da teoria da complexidade algébrica, questiona-se se isso implica um algoritmo igualmente eficiente no modelo usual; pode ser que, embora as entradas finais sejam de tamanho polinomial, o cálculo envolva outras maiores? Provavelmente não é esse o caso, e mesmo que fosse, talvez o problema pudesse ser evitado usando o teorema chinês restante.

Yuval Filmus
fonte