Il est important que, dans la définition que vous fournissez, la matrice vive dans un champ fini, disons où est premier. Cela vous permet d'utiliser le théorème d' Euler pour calculer les doubles exponentielles qui apparaissent dans la matrice au temps .
Sinon, il semble même difficile de calculer les coefficients de la matrice sans factoriser . mZmmaqemodmO(log(mn)M(logm))
aqi≡aqi(modφ(m))(modm)
m
Si est premier ou peut être factorisé efficacement, la complexité la plus défavorable est dominée par le nombre d'étapes dont vous avez besoin pour la multiplication matricielle . Par exemple, l' approche de la forme normale de Smith que j'ai mentionnée dans la publication partenaire calculerait le déterminant dans le temps si vous utilisez "slow" algorithmes de multiplication . peut être choisi pour 2.373.mO(nω)O(nωlog2mlog(mn))∗ω
Vous obtenez un ralentissement dans Moore vs Vandermonde car vous devez double-exponentier les coefficients de la matrice. Lorsque vous pouvez factoriser ce ralentissement est simplement polylogarithmique sur . Sinon, l' algorithme présenté vous donne une réduction de Cook à Double-Modular-Exponentiation sur .mmZm
Remarque *: des algorithmes plus rapides pour la multiplication d'entiers vous permettent de remplacer par .log2mM(logmloglogm)
Mise à jour : sur la possibilité de réaliser .O(nlogan)
Je n'ai pas de réponse définitive à cela, mais j'ai trouvé des informations qui pourraient resserrer votre recherche.
Les algorithmes pour les matrices structurées qui calculent des quantités comme des déterminants dans le temps sont appelés "ultra-rapides" dans la littérature. Tous les algorithmes "ultra-rapides" connus pour les matrices structurées (Vandermonde, Toeplitz, Hankel) semblent s'appuyer sur une propriété commune de ces matrices connue sous le nom de "rang de déplacement" bas. Conférer la discussion sur le premier chapitre de ce livre (pages en accès libre), ou dans cet article [ACM] , [PDF] .O(nlogan)
D'après ce que j'ai lu, étant donné une matrice Moore , si vous pouviez trouver des matrices , telles que la nouvelle matrice (ou alternativement ) a la structure suivantem×nMABL(M)=AM−MBL(M)=M−AMB
L(M)=∑k=1rgkhTk
, et le rang est petit (soit constant soit délimité par ), alors vous pouvez appliquer les techniques existantes (consultez le chapitre 5 du livre, ouvrez- pages d'accès) pour triangulariser et, par conséquent, calculer , en utilisant . Au-dessus, les , désignent des vecteurs. Si vous ne trouvez pas le livre ci-dessus pour lire le tout, cet article contient également de nombreuses informations sur ces méthodes.r>0o(min{m,n})MdetMO(nlog2n)gkhk
Malheureusement, je n'ai pas été en mesure de trouver une structure de rang à faible déplacement pour la matrice de Moore (Vandermonde l'a). La principale complication semble ici venir de la nature "non linéaire" de la double exponentielle. Si cela aide, les cas de Vandermonde, Cauchy, Toeplitz, Hankel sont traités dans le livre.