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 i ≡ a q iO(log(mn)M(logm))m
aqi≡aqi(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)=AM−MBL(M)=M−AMB
L(M)=∑k=1rgkhTk
, 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.