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:
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.
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ò eseguire-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?