Determinante de una matriz de Vandermonde generalizada

10

La matriz de Moore es similar a la matriz de Vandermonde pero tiene una definición ligeramente modificada. http://en.wikipedia.org/wiki/Moore_matrix

¿Cuál es la complejidad de calcular el determinante de un rango completo de la matriz de Moore módulo algún entero?n×n

¿Se puede reducir el determinante de Moore de usando técnicas FFT a para algunos ?O(n3)O(nlogan)aR+{0}

¿Es la complejidad de Moore det modulo un número entero y Vandermonde det lo mismo? La complejidad del determinante de Vandermonde es (Página 644 en el Manual de Ciencias de la Computación Teórica: Algoritmos y complejidad Por Jan Leeuwen)O(nlog2n)

Publicación similar a la actual: módulo determinante m

T ....
fuente
¿Se puede calcular el determinante de Moore incluso en tiempo O (n ^ 3) (en una RAM entera)?
Jeff el
1
@ Jɛ ff E Es por eso que he mencionado módulo aleatoria . NN
T ....
Por cierto, y solo tengo curiosidad, ¿hay aplicaciones conocidas que se beneficiarían de tal algoritmo "superrápido"?
Juan Bermejo Vega
@J ffE, ¿sabes si calcular una doble exponencial modular sobre N está en BPP para N trivial ? Porque ese es un problema para calcular los coeficientes de la matriz. εNN
Juan Bermejo Vega

Respuestas:

4

En general, existe un algoritmo teórico de tiempo para encontrar la descomposición LU de una matriz arbitraria utilizando el algoritmo Coppersmith-Winograd , que obviamente produce el determinante (sumando el tiempo O ( n ) ). Sin embargo, existe el problema de que el algoritmo Coppersmith – Winograd no se considera utilizable en la práctica. Afaik, la gente usa principalmente el algoritmo de Strassen de tiempo O ( n 2.807 ) . ¿No utiliza esto lu_factorize de UBLAS ?O(n2.376)O(n)O(n2.807)

En su caso, la matriz de Moore debería admitir optimizaciones considerables porque básicamente cualquier procedimiento de eliminación gaussiana como la descomposición de LU se puede hacer de manera abstracta. De hecho, encontrará una buena fórmula para calcular el determinante de Moore al que hace referencia Wikipedia , que presumiblemente se prueba simplemente resolviendo la descomposición de LU en general.O(n)

Jeff Burdges
fuente
Hola Jeff: ¿Qué referencia estás referenciando para la fórmula O (n ^ 2)? Creo que Vandermonde det puede calcularse en O (nlogn) pero no puedo encontrar referencia. Entonces, ¿debería Moore det también estar en O (nlogn)?
T ....
Sí, debería haber dicho O (n) obviamente, realmente O (n log n) para n grande.
Jeff Burdges
Hola Jeff: ¿Tienes una referencia?
T ....
77
@JeffBurdges: si el tiempo de ejecución es O (n log n) "para n grande", entonces, por definición, el tiempo de ejecución es O (n log n), no O (n).
Jeff el
No veo una fórmula referenciada por Wikipedia. En el mejor de los casos, se ve Θ ( n 2 ) . O(n)Θ(n2)
Peter Taylor
3

Es importante que, en la definición que proporcione, la matriz viva en un campo finito, digamos donde m es primo. Esto le permite utilizar el teorema de Euler para calcular los dobles exponenciales que aparecen en la matriz en el tiempo . De lo contrario, parece difícil incluso calcular los coeficientes de la matriz sin factorizar .ZmmO ( log ( m n )aqemodma q ia q iO(log(mn)M(logm))m

aqiaqi(modφ(m))(modm)
m

Si es primo o puede factorizarse de manera eficiente, la complejidad del peor de los casos está dominada por el número de pasos que necesita para la multiplicación matricial . Por ejemplo, el enfoque de forma normal de Smith que mencioné en la publicación asociada calcularía el determinante en el tiempo si usa "lento" algoritmos de multiplicación . puede ser elegido para ser 2.373.O ( n ω ) O ( n ωmO(nω) ωO(nωlog2mlog(mn))ω

Obtiene una desaceleración en Moore vs Vandermonde, ya que debe doble exponer los coeficientes de la matriz. Cuando puede factorizar esta desaceleración es solo poliligarítmica en . Si no, el algoritmo presentado le ofrece una reducción de Cook a Exponenciación Doble Modular en .m Z mmmZm

Nota *: los algoritmos más rápidos para la multiplicación de enteros le permiten reemplazar con .M ( log m log log m )log2mM(logmloglogm)


Actualización : sobre la posibilidad de lograr .O(nlogan)

No tengo una respuesta definitiva para esto, pero encontré información que puede apretar su búsqueda.

Los algoritmos para matrices estructuradas que calculan cantidades como determinantes en el tiempo se denominan "superrápidos" en la literatura. Todos los algoritmos "superrápidos" conocidos para matrices estructuradas (Vandermonde, Toeplitz, Hankel) parecen basarse en una propiedad común de estas matrices conocida como bajo "rango de desplazamiento". Conferir la discusión sobre el primer capítulo de este libro (páginas de acceso abierto), o en este artículo [ACM] , [PDF] .O(nlogan)

Por lo que leí, dada una matriz Moore , si pudiste encontrar las matrices , modo que la nueva matriz (o alternativamente ) tiene la siguiente estructuraM A B L ( M ) = A M - M B L ( M ) = M - A M Bm×nMABL(M)=AMMBL(M)=MAMB

L(M)=k=1rgkhkT

, y el rango es pequeño (constante o delimitado por ), entonces puede aplicar las técnicas existentes (consulte el capítulo 5 del libro, abra- páginas de acceso) para triangular y, por lo tanto, calcular , usando . Arriba, , denotan vectores. Si no puede encontrar el libro de arriba para leerlo todo, este artículo también tiene mucha información sobre estos métodos.o ( minr>0o(min{m,n})M O ( n log 2 n ) g k h kdetMO(nlog2n)gkhk

Desafortunadamente, no he podido encontrar una estructura de bajo rango de desplazamiento para la matriz de Moore (Vandermonde lo ha hecho). La principal complicación aquí parece surgir de la naturaleza "no lineal" del doble exponencial. Si ayuda, los casos de Vandermonde, Cauchy, Toeplitz, Hankel se resuelven en el libro.

Juan Bermejo Vega
fuente
Puedo hacer que mi matriz viva en un campo de char . Sin embargo, el tamaño de los alfabetos para mi aplicación prevista será grande. Entonces tiene la forma para algunos suficientemente grandes . m 3 k k3m3kk
T ....
Eso está bien, ya que puedes calcular la función totient de :)3k
Juan Bermejo Vega
bueno, eso no simplifica la complejidad, diría yo ya que el campo es muy muy grande.
T ....
Simplifica los problemas que menciono con la doble exponenciación. Dado que , puede usar el teorema de Euler para exponer doblemente : primero, calcule , luego . Puede hacerlo a tiempo . Usando el algoritmo de multiplicación escolar, , y obtendría un costo "neto" final de Que es eficiente. a q iφ(3k)=3k3k1b = q iaqimodma bb=qimodφ(3k) O ( log ( n 3 k ) M ( k log 3 ) ) M ( n ) = n 2 O ( n ω k 2 l o g 2 3 ( log n + k log 3 ) )abmod3kO(log(n3k)M(klog3))M(n)=n2O(nωk2log23(logn+klog3))
Juan Bermejo Vega
¿Podemos reemplazar por ? Ese es el ahorro de costos que tengo curiosidad (puede ser posible a partir de la estructura de la matriz). Con , no gano nada para mi propósito. 1 + ϵ ω 2ω1+ϵω2
T ....