Qual è la complessità temporale effettiva dell'eliminazione gaussiana?


72

In una risposta a una domanda precedente , ho menzionato la comune ma falsa convinzione che l' eliminazione "gaussiana" si verifichi nel tempo . Mentre è ovvio che l'algoritmo utilizza operazioni aritmetiche , l'implementazione incurante può creare numeri con esponenzialmente molti bit. Come semplice esempio, supponiamo di voler diagonalizzare la seguente matrice:O(n3)O(n3)

[2000120011201112]

Se utilizziamo una versione dell'algoritmo di eliminazione senza divisione, che aggiunge solo multipli interi di una riga a un'altra e ruotiamo sempre su una voce diagonale della matrice, la matrice di output ha il vettore lungo la diagonale.(2,4,16,256,,22n1)

Ma qual è la complessità temporale effettiva dell'eliminazione gaussiana? La maggior parte degli autori di ottimizzazione combinatoria sembrano essere contenti di "fortemente polinomiale", ma sono curioso di sapere quale sia effettivamente il polinomio.

Un articolo del 1967 di Jack Edmonds descrive una versione dell'eliminazione gaussiana ("probabilmente dovuta a Gauss") che corre in un periodo fortemente polinomiale. L'intuizione chiave di Edmonds è che ogni voce in ogni matrice intermedia è il determinante di un minore della matrice di input originale. Per una matrice con voci di numero intero -bit, Edmonds dimostra che il suo algoritmo richiede numeri interi con al massimo bit . Partendo dal presupposto "ragionevole" che , l'algoritmo di Edmonds viene eseguito nel tempo se utilizziamo l'aritmetica intera del libro di testo, o nel tempo se noi usa la moltiplicazione basata su FFT, su una RAM intera standard, che può eseguiren×nmO(n(m+logn))m=O(logn)O(n5)O~(n4)O(logn)-bit aritmetica a tempo costante. (Edmonds non ha fatto questa analisi temporale, ha solo affermato che il suo algoritmo è "buono".)

Questa è ancora la migliore analisi conosciuta? Esiste un riferimento standard che fornisce un limite di tempo esplicito migliore o almeno un limite migliore sulla precisione richiesta?

Più in generale: qual è il tempo di esecuzione (sulla RAM intera) dell'algoritmo più veloce noto per la risoluzione di sistemi arbitrari di equazioni lineari?


2
(inserendo un'onda violenta) non è possibile aggirare il problema dei numeri interi di grandi dimensioni in questo caso particolare utilizzando i trucchi primi piccoli del modulo di hashing? l'algoritmo sarebbe randomizzato, ma comunque ... Certamente questo non risponde alla domanda che hai posto ...
Suresh Venkat,

1
Forse i seguenti riferimenti potrebbero essere d'aiuto? dispense di Lovasz , il capitolo di Yap sui determinanti (Yap dà complessità po 'per il calcolo determinante tramite l'algoritmo di Bareiss). Dal libro di Yap (esercizio 10.1.1 (iii)), avevo l'impressione che non fosse noto se la riduzione gaussiana fornisse valori intermedi cresciuti esponenzialmente in dimensioni di bit, ma ora non ne sono sicuro. O(n3MB[n(logn+L)])
user834

1
L'algoritmo standard di eliminazione gaussiana divide la riga pivot per l'elemento pivot prima di ridurre le righe successive. La domanda aperta fa riferimento a questa versione standard. L'esempio che ho dato all'inizio della mia domanda usa una variante diversa, che NON si divide per l'elemento pivot.
Jeffε,

3
Curioso. Il tempo di Yap per l'algoritmo di Bereiss è identico al tempo implicito dall'analisi di Edmonds sull'eliminazione gaussiana.
Jeffε,

1
rjlipton ha esaminato l'area recentemente e cita la tesi di dottorato di Kannan sull'argomento. una parte fondamentale dell'analisi è la forma normale di Smith
vzn

Risposte:


35

Penso che la risposta sia , dove omettiamo i fattori (poli) logaritmici. Il limite è presentato in "W. Eberly, M. Giesbrecht, P. Giorgi, A. Storjohann, G. Villard. Risoluzione di sistemi lineari interi sparsi. Proc. ISSAC'06, Genova, Italia, ACM Press, 63-70, luglio 2006 ", ma si basa su un documento di Dixon:" Soluzione esatta di equazioni lineari usando espansioni P-adiche, John D. Dixon, NUMERISCHE MATHEMATIK, Volume 40, Numero 1, 137-141 ".O~(n3log(A+b))


Grazie per il riferimento! Questo risponde alla mia seconda domanda, ma non alla mia prima.
Jeffε,

3
Se si utilizza il pivot, la dimensione in bit dei risultati intermedi nell'eliminazione gaussiana (GE) è polinomiale, non c'è esplosione esponenziale. Penso che questo sia il risultato di Bareiss. Per quanto riguarda la complessità di GE, esiste un algoritmo nel libro di Gathen e Gerhard, "Modern Computer Algebra" per calcolare il determinante di una matrice , che si basa su GE, l'aritmetica modulare e il teorema dei resti cinesi (Sez. 5.5, pp 101-105). La complessità è . Penso che un fattore di possa essere salvato usando l'aritmetica veloce. Se non sbaglio, questo è il limite menzionato da user834. AO(n4log2A)n
Elias,

@Elias, qual è la definizione della norma in quell'espressione? È il coefficiente più grande in dimensioni assolute? È la dimensione del bit? Inoltre, questo risultato è per matrici razionali arbitrarie?
Juan Bermejo Vega,

13

Penso che la risposta alla tua prima domanda sia anche causa dei seguenti argomenti: il documento di Edmonds non descrive una variante dell'eliminazione gaussiana ma dimostra che qualsiasi numero calcolato in una fase dell'algoritmo è un fattore determinante di una sottostruttura di A. Dal libro di Schrijver su Teoria della programmazione lineare e integra sappiamo che se la codifica di A necessita di bit (b dovrebbe essere inO~(n3log(A+b))O~(log(A)) quindi uno qualsiasi dei suoi sottodeterminanti necessita al massimo di 2b bit (Teorema 3.2). Per rendere l'eliminazione gaussiana un algoritmo temporale polinomiale, dobbiamo preoccuparci dei quozienti calcolati: dobbiamo cancellare i fattori comuni da ogni frazione che calcoliamo in ogni passaggio intermedio e quindi tutti i numeri hanno una lunghezza di codifica lineare nella lunghezza di codifica di A.

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.