Es ist wichtig, dass in der von Ihnen angegebenen Definition die Matrix in einem endlichen Feld lebt, z. B. wobei eine Primzahl ist. Auf diese Weise können Sie den Satz von Euler verwenden , um die Doppelexponentiale zu berechnen , die in der Matrix in der Zeit .
Andernfalls scheint es schwierig zu sein, die Matrixkoeffizienten zu berechnen, ohne zu faktorisieren . mZmmaqemodmO(log(mn)M(logm))
aqi≡aqi(modφ(m))(modm)
m
Wenn eine Primzahl ist oder effizient faktorisiert werden kann, wird die Komplexität im ungünstigsten Fall von der Anzahl der Schritte dominiert, die Sie für die Matrixmultiplikation benötigen . Zum Beispiel würde der Smith-Normalform-Ansatz, den ich im Partnerbeitrag erwähnt habe, die Determinante in der Zeit berechnen, wenn Sie "slow" verwenden. Multiplikationsalgorithmen . kann als 2.373 gewählt werden.mO(nω)O(nωlog2mlog(mn))∗ω
In Moore gegen Vandermonde kommt es zu einer Verlangsamung, da Sie die Koeffizienten der Matrix doppelt potenzieren müssen. Wenn Sie faktorisieren können, ist diese Verlangsamung auf nur polylogarithmisch . Wenn nicht, erhalten Sie mit dem vorgestellten Algorithmus eine Cook-Reduktion auf Double-Modular-Exponentiation für .mmZm
Hinweis *: Mit schnelleren Algorithmen für die Ganzzahlmultiplikation können Sie durch ersetzen .log2mM(logmloglogm)
Update : über die Möglichkeit, .O(nlogan)
Ich habe keine eindeutige Antwort darauf, aber ich habe einige Informationen gefunden, die Ihre Suche möglicherweise verschärfen.
Algorithmen für strukturierte Matrizen, die Größen wie Determinanten in der Zeit berechnen, werden in der Literatur als "superschnell" bezeichnet. Alle bekannten "superschnellen" Algorithmen für strukturierte Matrizen (Vandermonde, Toeplitz, Hankel) scheinen auf einer gemeinsamen Eigenschaft dieser Matrizen zu beruhen, die als niedriger "Verschiebungsrang" bekannt ist. Konferenz über das erste Kapitel dieses Buches (Open-Access-Seiten) oder in diesem Artikel [ACM] , [PDF] .O(nlogan)
Nach dem, was ich gelesen habe, bei gegebener Moore-Matrix , wenn Sie die Matrizen , so finden konnten, dass die neue Matrix (oder alternativ ) hat die folgende Strukturm×nMABL(M)=AM−MBL(M)=M−AMB
L(M)=∑k=1rgkhTk
Wenn der Rang klein ist (entweder konstant oder durch begrenzt ), können Sie vorhandene Techniken anwenden (siehe Kapitel 5 des Buches, open- Zugriffsseiten), um zu triangulieren und daher mit berechnen . Oben bezeichnen die , Vektoren. Wenn Sie das obige Buch nicht finden, um das Ganze zu lesen, enthält dieser Artikel auch viele Informationen zu diesen Methoden.r>0o(min{m,n})MdetMO(nlog2n)gkhk
Leider konnte ich keine Struktur mit niedrigem Verschiebungsrang für die Moore-Matrix finden (Vandermonde hat). Die Hauptkomplikation scheint sich hier aus der "nichtlinearen" Natur des Doppelexponentials zu ergeben. Wenn es hilft, werden die Fälle für Vandermonde, Cauchy, Toeplitz, Hankel in dem Buch herausgearbeitet.