¿Cuál es la complejidad temporal real de la eliminación gaussiana?


72

En una respuesta a una pregunta anterior , mencioné la creencia común pero falsa de que la eliminación "gaussiana" se ejecuta en el tiempo O(n3) . Si bien es obvio que el algoritmo utiliza operaciones aritméticas O(n3) , la implementación descuidada puede crear números con exponencialmente muchos bits. Como un ejemplo simple, supongamos que queremos diagonalizar la siguiente matriz:

[2000120011201112]

Si utilizamos una versión del algoritmo de eliminación sin división, que solo agrega múltiplos enteros de una fila a otra, y siempre pivotamos en una entrada diagonal de la matriz, la matriz de salida tiene el vector (2,4,16,256,,22n1) largo de la diagonal.

Pero, ¿cuál es la complejidad del tiempo real de la eliminación gaussiana? La mayoría de los autores de optimización combinatoria parecen estar contentos con "fuertemente polinomial", pero tengo curiosidad por saber qué es realmente el polinomio.

n×nmO(n(m+logn))m=O(logn)O(n5)O~(n4)O(logn)

¿Sigue siendo este el mejor análisis conocido? ¿Existe una referencia estándar que ofrezca un límite de tiempo explícito mejor, o al menos un límite mejor en la precisión requerida?

Más en general: ¿Cuál es el tiempo de ejecución (en la RAM entera) del algoritmo más rápido conocido para resolver sistemas arbitrarios de ecuaciones lineales?


2
(insertando una onda de mano violenta) ¿no podría solucionar el gran problema de los enteros en este caso particular usando el módulo de hash pequeños trucos principales? el algoritmo sería aleatorio, pero aún así ... Es cierto que esto no responde la pregunta que hizo ...
Suresh Venkat

1
O(n3MB[n(logn+L)])

1
El algoritmo de eliminación gaussiano estándar divide la fila pivote por el elemento pivote antes de reducir las filas posteriores. La pregunta abierta se refiere a esta versión estándar. El ejemplo que di al comienzo de mi pregunta usa una variante diferente, que NO se divide por el elemento pivote.
Jeffε

3
Curioso. El límite de tiempo de Yap para el algoritmo de Bereiss es idéntico al límite de tiempo que implica el análisis de Edmonds sobre la eliminación gaussiana.
Jeffε

1
rjlipton examinó el área recientemente y cita la tesis doctoral de Kannan sobre el tema. una parte clave del análisis es la forma normal de
vzn

Respuestas:


35

O~(n3log(A+b))


Gracias por la referencia! Esto responde mi segunda pregunta, pero no la primera.
Jeffε

3
Si usa pivotar, el tamaño de bits de los resultados intermedios en la eliminación gaussiana (GE) es polinomial, no hay una explosión exponencial. Creo que este es el resultado de Bareiss. En cuanto a la complejidad de GE, hay un algoritmo en el libro de Gathen y Gerhard, "Modern Computer Algebra" para calcular el determinante de una matriz , que se basa en GE, la aritmética modular y el teorema del resto chino (Sec. 5.5, pp 101-105). La complejidad es . Creo que un factor de podría guardarse usando la aritmética rápida. Si no me equivoco, este es el límite que mencionó user834. AO(n4log2A)n
Elias

@Elias, ¿cuál es la definición de la norma en esa expresión? ¿Es el coeficiente más grande en tamaño absoluto? ¿Es el tamaño del bit? Además, ¿es este resultado para matrices racionales arbitrarias?
Juan Bermejo Vega

13

Creo que la respuesta a su primera pregunta también es debido a los siguientes argumentos: el artículo de Edmonds no describe una variante de eliminación gaussiana pero demuestra que cualquier número calculado en un paso del algoritmo es un determinante de alguna submatriz de A. Por el libro de Schrijver sobre Teoría de la programación lineal y entera , sabemos que si la codificación de A necesita b bits (b debería estar enO~(n3log(A+b))O~(log(A)) entonces cualquiera de sus subdeterminantes necesita como máximo 2b bits (Teorema 3.2). Para que la eliminación gaussiana sea un algoritmo de tiempo polinómico, debemos preocuparnos por los cocientes calculados: tenemos que cancelar los factores comunes de cada fracción que calculamos en cualquier paso intermedio y luego todos los números tienen una longitud de codificación lineal en la longitud de codificación de A.

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.