Complessità nel trovare la composizione elettronica di una matrice


40

La mia domanda è semplice:

Qual è il tempo di esecuzione nel caso peggiore dell'algoritmo più noto per il calcolo di una composizione elettronica di una matrice n×n ?

La composizione elettronica si riduce alla moltiplicazione della matrice o gli algoritmi più noti O(n3) (via SVD ) nel caso peggiore?

Si prega di notare che sto chiedendo un'analisi del caso peggiore (solo in termini di n ), non per limiti con costanti dipendenti dal problema come il numero di condizione.

EDIT : date alcune delle risposte qui sotto, lasciami aggiustare la domanda: sarei felice con una approssimazione ϵ . L'approssimazione può essere moltiplicativa, additiva, saggia o qualunque definizione ragionevole desideri. Sono interessato se esiste un algoritmo noto che ha una dipendenza migliore da n di qualcosa come O(poly(1/ϵ)n3) ?

EDIT 2 : vedi questa domanda correlata sulle matrici simmetriche .


Hai osservato la riduzione dall'inversione di matrice alla moltiplicazione di matrice nel libro di testo degli algoritmi CLRS? Vorrei iniziare guardando quelle idee per vedere se si estendono alla decomposizione degli automi.
Warren Schudy,

Sì, sembrano estendersi alla ricerca di una decomposizione LU, ma non so come farla funzionare per una decomposizione autonome.
Lev Reyzin

Sai se O(n3) è l'algoritmo più noto per il calcolo dell'SVD?
Robin Kothari,

1
n × nO(min(mn2,m2n))n×n

Tutto apposto. Nemmeno io so molto di quest'area, ma forse il calcolo SVD può essere ridotto alla composizione elettronica, poiché se riesci a comporre AA * e A * A, otterrai le matrici destra e sinistra per SVD.
Robin Kothari,

Risposte:


18

Ryan ha risposto a una domanda simile su mathoverflow. Ecco il link: mathoverflow-answer

Fondamentalmente, è possibile ridurre il calcolo degli autovalori alla moltiplicazione di matrici calcolando un determinante simbolico. Ciò fornisce un tempo di esecuzione di O ( ) per ottenere bit di autovalori; il runtime attualmente più noto è O ( ) per un'approssimazione entro .m n 3 + n 2 log 2 n log b 2 - bnω+1mmn3+n2log2nlogb2b

Il riferimento di Ryan è `` Victor Y. Pan, Zhao Q. Chen: The Complexity of the Matrix Eigenproblem. STOC 1999: 507-516 ''.

(Credo che ci sia anche una discussione sulla relazione tra la complessità degli autovalori e la moltiplicazione della matrice nel vecchio libro di Aho, Hopcroft e Ullman `` The Design and Analysis of Computer Algorithms '', tuttavia, non ho il libro in davanti a me e non posso darti il ​​numero esatto della pagina.)


13

Trovare autovalori è intrinsecamente un processo iterativo: trovare autovalori equivale a trovare le radici di un polinomio. Inoltre, il teorema di Abel-Ruffini afferma che, in generale, non è possibile esprimere le radici di un polinomio arbitrario in una semplice forma chiusa (cioè con radicali come la formula quadratica). Quindi non puoi sperare di calcolare gli autovalori "esattamente".

Ciò significa che un algoritmo di decomposizione spettrale deve essere approssimativo. Il tempo di esecuzione di qualsiasi algoritmo generale deve dipendere dalla precisione desiderata; non può semplicemente dipendere dalla dimensione.

Non sono un esperto in questo. Immagino che una dipendenza cubica da n sia abbastanza buona. Gli algoritmi che ho visto usano tutti la moltiplicazione matrice-vettore, piuttosto che la moltiplicazione matrice-matrice. Quindi sarei un po 'sorpreso se tutto si riduce alla moltiplicazione matrice-matrice.

Dai un'occhiata a http://en.wikipedia.org/wiki/List_of_numerical_analysis_topics#Eigenvalue_algorithms


Grazie per la risposta: avrò bisogno di un po 'di tempo per digerirlo! Ma se si usa la moltiplicazione matrice-vettore, la dipendenza da n potrebbe forse essere migliore di n ^ 3.
Lev Reyzin

6

Darò solo una risposta parziale relativa agli autovalori di una matrice.

Come accennato in precedenza, esistono molti metodi iterativi per trovare gli autovalori di una matrice (ad es. Iterazione di potenza), ma in generale, trovare gli autovalori si riduce alla ricerca delle radici del polinomio caratteristico. Trovare il polinomio caratteristico può essere fatto in , dove è il costo di bit moltiplica e è la dimensione po 'della voce di massima, da un calcolo determinante simbolico usando l'algoritmo di Bareiss . Vedi il libro di Yap su "Fondamenti dell'algebra algoritmica" , in particolare, Cap. 10, "Sistemi lineari" .M B ( s ) s LO(n3MB[n(logn+L)])MB(s)sL

Una volta trovato il polinomio caratteristico, si possono trovare le radici con qualsiasi grado di precisione desiderato usando intervalli di isolamento. Vedi il libro di Yap, cap. 6 "Roots of Polynomials" per i dettagli. Dimentico il tempo di esecuzione esatto ma il suo polinomio nel grado del polinomio caratteristico e le cifre di precisione desiderate.

Ho il sospetto che il calcolo degli autovettori fino a qualunque grado di precisione sia anche polinomiale, ma non vedo un algoritmo semplice. Esistono, ovviamente, i trucchi standard che sono stati precedentemente menzionati, ma per quanto ne so, nessuno di essi garantisce un tempo di esecuzione polinomiale per la precisione desiderata.


interessante, ma questo sembra anche peggio di n ^ 3. sappiamo che questo è il migliore possibile?
Lev Reyzin

I tempi di esecuzione su algoritmi di questa natura sono legati alla complessità della moltiplicazione di matrici che è circa O (n ^ 3). Conosco l'algoritmo di Strassen ma se non si ignorano i problemi di stabilità numerica, allora credo che si ritorni O (n ^ 3) per la moltiplicazione della matrice. I metodi iterativi potrebbero convergere più rapidamente nel caso "medio", ma credo, in generale, che O (n ^ 3) sia il migliore che puoi fare.
user834

Quindi stai dicendo che se non mi interessano i problemi di stabilità numerica, possiamo portarlo a O (n ^ 2.376)?
Lev Reyzin

5

Potresti dare un'occhiata al nuovo articolo di Commandur e Kale che fornisce un algoritmo combinatorio per Max-Cut. Sembra (da una lettura sommaria) che il loro algoritmo si basi sulla ricerca combinatoria dell'autovettore corrispondente al massimo autovalore e quindi sull'uso dell'algoritmo di Luca Trevisan una volta che hanno questo autovettore.

Sembra che stiano usando un approccio alternativo all'algoritmo di Lanczos per trovare un tale autovettore, quindi potrebbe essere interessante. Non sono sicuro di quale sia la pretesa complessità del loro metodo per trovare l'autovettore, ma potrebbe valere la pena esaminarlo. Inoltre, poiché è il rapporto di approssimazione e non il tempo in sé a cui sono interessati, qualunque sia il limite temporale che danno potrebbe non essere ottimale.


1

Questa è una vecchia domanda, ma alcune importanti pubblicazioni sembrano essersi perse.

Esistono algoritmi per i quali abbiamo un supporto teorico più forte. Ad esempio, ci sono iterazioni basate sulla funzione del segno della matrice, vedi ad esempio "L'algebra lineare veloce è stabile" di Demmel, Dumitriu e Holtz . In quel documento, viene mostrato che il problema degli autovalori può essere risolto nel tempo , dove è l'esponente della moltiplicazione di matrici e è qualsiasi numero .ω η > 0(Oω+η)ωη>0

Sì, c'è il documento Pan + Chen + Zheng che suggerisce di assemblare il polinomio caratteristico e di calcolarlo in BigFloat perché alla fine si perde molta precisione, ma non molte persone considererebbero questo un approccio pratico.

Cito anche che l'algoritmo più utilizzato, l'iterazione Francis QR, non ha prove di convergenza per matrici generali; il libro di Kressner parla di numerosi controesempi.


0

Sì, praticamente tutta l'algebra lineare numerica può essere ridotta alla moltiplicazione della matrice, sebbene, come sempre, la stabilità numerica sia un problema. Inoltre, con problemi come la composizione elettronica, dovresti accontentarti di un'approssimazione perché la soluzione potrebbe essere irrazionale. Dai un'occhiata al libro Polynomial and Matrix Computations di Bini and Pan.

Ecco un altro riferimento: Fast Linear Algebra is Stable http://www.netlib.org/lapack/lawnspdf/lawn186.pdf


3
Grazie per il puntatore, ma facendo una ricerca nel libro su google books, non sono riuscito a trovare la riduzione alla moltiplicazione di matrici. Hai un puntatore a qualche riferimento o algoritmo concreto? E i loro algoritmi SVD sembrano dipendere dal numero di condizione della matrice, che non è un'analisi del caso peggiore. Per quanto riguarda i problemi di stabilità numerica, ecc., Assumiamo il caso idealizzato, in cui tutte le moltiplicazioni e divisioni richiedono tempo unitario e producono risposte esatte.
Lev Reyzin
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.