Qual é a complexidade de tempo real da eliminação gaussiana?


72

Em resposta a uma pergunta anterior , mencionei a crença comum, mas falsa, de que a eliminação "gaussiana" ocorre no tempo . Embora seja óbvio que o algoritmo usa operações aritméticas , a implementação descuidada pode criar números com muitos bits exponencialmente. Como um exemplo simples, suponha que desejemos diagonalizar a seguinte matriz:O(n3)O(n3)

[2000120011201112]

Se usarmos uma versão do algoritmo de eliminação sem divisão, que apenas adiciona múltiplos inteiros de uma linha a outra, e sempre rodarmos em uma entrada diagonal da matriz, a matriz de saída terá o vetor ao longo da diagonal.(2,4,16,256,,22n1)

Mas qual é a complexidade de tempo real da eliminação gaussiana? A maioria dos autores de otimização combinatória parece estar feliz com "fortemente polinomial", mas estou curioso sobre o que realmente é o polinômio.

Um artigo de 1967 de Jack Edmonds descreve uma versão da eliminação gaussiana ("possivelmente devido a Gauss") que é executada em tempo fortemente polinomial. O principal insight de Edmonds é que cada entrada em cada matriz intermediária é o determinante de uma menor da matriz de entrada original. Para uma matriz com entradas inteiras de bits, Edmonds prova que seu algoritmo requer números inteiros com no máximo bits. Sob a suposição "razoável" de que , o algoritmo de Edmonds é executado em se usarmos aritmética de número inteiro do livro, ou em se use multiplicação baseada em FFT, em uma RAM inteira padrão, que pode executarm O ( n ( m + log n ) ) m = O ( log n ) On×nmO(n(m+logn))m=O(logn)˜ O ( n 4 ) O ( log n )O(n5)O~(n4)O(logn)aritmética de bits em tempo constante. (Edmonds não fez essa análise do tempo; ele apenas afirmou que seu algoritmo é "bom".)

Essa ainda é a melhor análise conhecida? Existe uma referência padrão que fornece um limite de tempo explícito melhor ou pelo menos um limite melhor na precisão necessária?

De maneira mais geral: qual é o tempo de execução (na RAM inteira) do algoritmo mais rápido conhecido por resolver sistemas arbitrários de equações lineares?


2
(inserindo ondas de mão violentas), você não conseguia resolver o grande problema inteiro nesse caso específico usando pequenos truques primos do módulo hash? o algoritmo seria randomizados, mas ainda .. É certo que este não responde à pergunta que você fez ...
Suresh Venkat

11
Talvez as seguintes referências ajudassem? notas de aula de lovasz , capítulo de yap sobre determinantes (Yap fornece complexidade de bits para cálculo determinante através do algoritmo de Bareiss). No livro de Yap (exercício 10.1.1 (iii)), fiquei com a impressão de que não se sabia se a redução gaussiana deu valores intermediários que cresceram exponencialmente em tamanho de bit, mas agora não tenho certeza. O(n3MB[n(logn+L)])
user834

11
O algoritmo de eliminação gaussiano padrão divide a linha dinâmica pelo elemento dinâmico antes de reduzir as linhas posteriores. A questão em aberto refere-se a esta versão padrão. O exemplo que dei no início da minha pergunta usa uma variante diferente, que NÃO é dividida pelo elemento pivô.
Jeffε

3
Curioso. O tempo limite de Yap para o algoritmo de Bereiss é idêntico ao tempo implícito na análise de Edmonds da eliminação gaussiana.
Jeffε

11
rjlipton pesquisou a área recentemente e cita a tese de Kannan Phd sobre o assunto. uma parte fundamental da análise é wrt Smith forma normal
vzn

Respostas:


35

Penso que a resposta é , onde omitimos os fatores (poli) logarítmicos. O limite é apresentado em "W. Eberly, M. Giesbrecht, P. Giorgi, A. Storjohann, G. Villard. Resolução de sistemas lineares inteiros esparsos. Proc. ISSAC'06, Genova, Itália, ACM Press, 63-70, julho 2006 ", mas é baseado em um artigo de Dixon:" Solução exata de equações lineares usando expansões P-adic, John D. Dixon, NUMERISCHE MATHEMATIK, Volume 40, Número 1, 137-141 ".O~(n3log(A+b))


Obrigado pela referência! Isso responde à minha segunda pergunta, mas não à minha primeira.
Jeffε

3
Se você usar pivotagem, o tamanho de bits dos resultados intermediários na eliminação gaussiana (GE) será polinomial, não haverá explosão exponencial. Eu acho que esse é o resultado da Bareiss. Quanto à complexidade da GE, há um algoritmo no livro de Gathen e Gerhard, "Álgebra Moderna de Computadores" para calcular o determinante de uma matriz , baseada na GE, aritmética modular e teorema chinês do restante (Seção 5.5, 101-105). A complexidade é . Eu acho que um fator de poderia ser salvo usando aritmética rápida. Se não estou errado, esse é o limite mencionado pelo usuário834. AO(n4log2A)n
Elias

@Elias, qual é a definição da norma nessa expressão? É o maior coeficiente em tamanho absoluto? É o tamanho do bit? Além disso, esse resultado é para matrizes racionais arbitrárias?
Juan Bermejo Vega

13

Eu acho que a resposta para sua primeira pergunta também é devido aos seguintes argumentos: O artigo de Edmonds não descreve uma variante da eliminação gaussiana mas prova que qualquer número calculado em uma etapa do algoritmo é determinante de alguma submatriz de A. Pelo livro de Schrijver sobre Teoria da Programação Linear e Inteira , sabemos que se a codificação de A precisa de b bits (b deve estar emO~(n3log(A+b))O~(log(A)), qualquer um dos seus subdeterminantes precisa no máximo de 2b bits (Teorema 3.2). Para tornar a eliminação gaussiana um algoritmo de tempo polinomial, precisamos nos preocupar com os quocientes computados: temos que cancelar fatores comuns de cada fração que computamos em qualquer etapa intermediária e, em seguida, todos os números têm comprimento de codificação linear no comprimento de codificação de A.

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.