Determinante di una matrice generalizzata di Vandermonde


10

La matrice Moore è simile alla matrice Vandermonde ma ha una definizione leggermente modificata. http://en.wikipedia.org/wiki/Moore_matrix

Qual è la complessità del calcolo del determinante di una data matrice di Moore n×n full rank di un numero intero?

Il determinante di Moore può essere ridotto da O(n3) usando le tecniche FFT a O(nlogun'n) per alcuni un'R+{0} ?

La complessità di Moore det modulo è un numero intero e Vandermonde rileva lo stesso? La complessità del determinante di Vandermonde è O(nlog2n) (Pagina 644 in Manuale di informatica teorica: algoritmi e complessità di Jan Leeuwen)

Post simile a quello attuale: determinante modulo m


Il determinante Moore può anche essere calcolato in tempo O (n ^ 3) (su una RAM intera)?
Jeffε

1
@ Jɛ ff E Ecco perché ho detto modulo casuale NN .
T ....

A proposito, e sono solo curioso, ci sono applicazioni conosciute che trarrebbero beneficio da tale algoritmo "superveloce"?
Juan Bermejo Vega

@J ffE, ti capita di sapere se il calcolo di una doppia esponenziazione modulare su N è in BPP per N banale ? Perché questo è un problema per calcolare i coefficienti della matrice. εNN
Juan Bermejo Vega

Risposte:


4

In generale, esiste un algoritmo teorico per trovare la decomposizione LU di una matrice arbitraria usando l' algoritmo Coppersmith-Winograd , che quindi produce ovviamente il determinante (aggiungendo il tempo O ( n ) ). Esiste tuttavia un problema che l'algoritmo Coppersmith – Winograd non è considerato utilizzabile nella pratica. Dopo tutto, le persone usano principalmente l' algoritmo O ( n 2.807 ) time Strassen. Boost di lu_factorize di UBLAS non lo usa?O(n2.376)O(n)O(n2.807)

Nel tuo caso, la matrice Moore dovrebbe ammettere notevoli ottimizzazioni perché praticamente qualsiasi eliminazione gaussiana come la procedura come la decomposizione LU può essere eseguita in modo astratto. In effetti, troverai una buona formula per calcolare il determinante di Moore a cui fa riferimento wikipedia , che presumibilmente si dimostra semplicemente elaborando la decomposizione LU in generale.O(n)


Ciao Jeff: a quale riferimento fai riferimento per la formula O (n ^ 2). Penso che Vandermonde det possa essere calcolato in O (nlogn) ma non riesco a trovare un riferimento. Quindi Moore det dovrebbe essere anche in O (nlogn)?
T ....

Sì, avrei dovuto dire O (n) ovviamente, davvero O (n log n) per n grande.
Jeff Burdges,

Ciao Jeff: hai un riferimento?
T ....

7
@JeffBurdges: se il tempo di esecuzione è O (n log n) "per n grande", quindi per definizione, il tempo di esecuzione è O (n log n), non O (n).
Jeffε

Non vedo una formula riferimento Wikipedia. Nella migliore delle ipotesi sembra Θ ( n 2 ) . O(n)Θ(n2)
Peter Taylor,

3

È 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 ia q iO(log(mn)M(logm)) Altrimenti, sembra difficile persino calcolare i coefficienti di matrice senza fattorizzare m .

un'qioun'qio(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(mn))*ω

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(logmloglogm)


Aggiornamento : sulla possibilità di ottenere .O(nlogun'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(nlogun'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)=UNM-MBL(M)=M-UNMB

L(M)=ΣK=1rgKhKT

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})MdetMO(nlog2n)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.


Posso far vivere la mia matrice in un campo di caratteri . Tuttavia, la dimensione degli alfabeti per la mia applicazione prevista sarà grande. Quindi m è di forma 3 k per alcuni k abbastanza grandi . 3m3KK
T ....

Va bene, dato che puoi calcolare la funzione totient di :)3K
Juan Bermejo Vega

bene, ciò non semplifica la complessità, direi che il campo è molto grande.
T ....

Semplifica i problemi che menziono con la doppia esponenziazione. Poiché , puoi usare il teorema di Eulero per raddoppiare un q iφ(3K)=3K-3K-1 : prima, calcola b = q iun'qiomodm , quindi a bB=qiomodφ(3K) . Puoi farlo nel tempo O ( log ( n 3 k ) M ( k log 3 ) ) . Usando l'algoritmo di moltiplicazione scolastica, M ( n ) = n 2 , otterresti un costo "netto" finale di O ( n ω k 2 l o g 2 3 ( log n + k log 3 ) ) che è efficiente. un'Bmod3KO(log(n3K)M(Klog3))M(n)=n2O(nωK2log23(logn+Klog3))
Juan Bermejo Vega

Possiamo sostituire con 1 + ϵ ? Questo è il risparmio sui costi che mi incuriosisce (potrebbe essere possibile dalla struttura della matrice). Con ω 2 , non guadagno nulla per il mio scopo. ω1+εω2
T ....
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.