È importante che, nella definizione fornita, la matrice viva in un campo finito, dica dove m è primo. Questo ti permette di usare il teorema di Eulero per calcolare i doppi esponenziali a q eZmm che appare nella matrice nel tempo O ( log ( m n )un'qemodm .
a q i ≡ a q iO ( log( m n )M( logm ) )
Altrimenti, sembra difficile persino calcolare i coefficienti di matrice senza fattorizzare m .
un'qio≡ aqio( modφ ( m ) )( modm )
m
Se è primo o può essere fattorizzato in modo efficiente, la complessità del caso peggiore è dominata dal numero di passaggi necessari per la moltiplicazione della matrice O ( n ω ) . Ad esempio, l' approccio alla forma normale di Smith che ho citato nel post del partner calcolerebbe il determinante nel tempo O ( n ωmO ( nω) se si utilizzano algoritmi di moltiplicazione "lenti" ∗ . ω può essere scelto per essere 2.373.O ( nωlog2mlog( m n ) )*ω
Si ottiene un rallentamento in Moore vs Vandermonde dal momento che è necessario raddoppiare i coefficienti della matrice. Quando puoi fattorizzare questo rallentamento è solo pollogaritmico su m . Altrimenti, l' algoritmo presentato ti dà una riduzione di Cook a esponenziale doppio-modulare su Z m .mmZm
Nota *: algoritmi più veloci per la moltiplicazione dei numeri interi consentono di sostituire il con M ( registro m registro registro m ) .log2mM( logm loglogm )
Aggiornamento : sulla possibilità di ottenere .O ( n logun'n )
Non ho una risposta definitiva per questo, ma ho trovato alcune informazioni che potrebbero restringere la tua ricerca.
Gli algoritmi per matrici strutturate che calcolano quantità come determinanti nel tempo sono chiamati "superveloci" in letteratura. Tutti gli algoritmi "superveloci" noti per matrici strutturate (Vandermonde, Toeplitz, Hankel) sembrano basarsi su una proprietà comune di queste matrici nota come "rango di spostamento" basso. Conferire la discussione sul primo capitolo di questo libro (pagine ad accesso aperto) o in questo articolo [ACM] , [PDF] .O ( n logun'n )
Da quello che ho letto, dato un Moore matrice M , se tu fossi in grado di trovare le matrici A , B in modo tale che la nuova matrice L ( M ) = A M - M B (o, in alternativa L ( M ) = M - A M B ) ha la seguente strutturam × nMUNBL ( M) = A M- MBL ( M) = M- A MB
L ( M) = ∑k = 1rgKhTK
e il rango è piccolo (costante o limitato da o ( minr > 0 ), quindi puoi applicare le tecniche esistenti (controlla il capitolo 5 del libro, pagine ad accesso aperto) per triangolare M e, quindi, calcolare det M , usando O ( n log 2 n ) . Sopra, g k , h k indicano i vettori. Se non riesci a trovare il libro sopra per leggere tutto,questo articolocontiene anche molte informazioni su questi metodi.o ( min{ m , n } )Mdet MO ( n log2n )gKhK
Sfortunatamente, non sono stato in grado di trovare una struttura di basso dislocamento per la matrice Moore (Vandermonde ha). La principale complicazione qui sembra derivare dalla natura "non lineare" del doppio esponenziale. Se aiuta, i casi di Vandermonde, Cauchy, Toeplitz, Hankel sono trattati nel libro.