L'inversione di una matrice è nella classe di complessità ?
Dal runtime direi di sì ma la matrice invertita può contenere voci in cui la dimensione non è limitata polinomialmente dall'input?
L'inversione di una matrice è nella classe di complessità ?
Dal runtime direi di sì ma la matrice invertita può contenere voci in cui la dimensione non è limitata polinomialmente dall'input?
Risposte:
Sì, può essere fatto in tempi polinomiali, ma la prova è abbastanza sottile. Non è semplicementetempo, perché l'eliminazione gaussiana comporta la moltiplicazione e l'aggiunta di numeri e il tempo necessario per eseguire ciascuna di queste operazioni aritmetiche dipende dalla loro entità. Per alcune matrici, i valori intermedi possono diventare estremamente grandi, quindi l'eliminazione gaussiana non necessariamente avviene nel tempo polinomiale.
Fortunatamente, ci sono algoritmi che non vengono eseguiti in tempo polinomiale. Richiedono un po 'più di attenzione nella progettazione dell'algoritmo e nell'analisi dell'algoritmo per dimostrare che il tempo di esecuzione è polinomiale, ma può essere fatto. Ad esempio, il tempo di esecuzione dell'algoritmo di Bareiss è qualcosa di simile [in realtà è più complesso di così, ma per ora consideralo una semplificazione].
Per molti più dettagli, vedi il blog di Dick Lipton Dimenticando i risultati e qual è la complessità temporale effettiva dell'eliminazione gaussiana? e il sommario di Wikipedia .
Infine, una parola di cautela. Il tempo di esecuzione preciso dipende esattamente su quale campo stai lavorando. La discussione di cui sopra si applica se si lavora con numeri razionali. D'altra parte, se, ad esempio, stai lavorando su un campo finito(gli interi modulo 2), quindi viene eseguita l' ingenua eliminazione gaussianatempo. Se non capisci cosa significhi, puoi probabilmente ignorare questo ultimo paragrafo.
Esiste una formula per le voci della matrice inversa che fornisce ciascuna voce come un rapporto di due determinanti, uno di una minore della matrice originale e l'altro dell'intera matrice originale. Questo dovrebbe aiutarti a limitare la dimensione delle voci nella matrice inversa, se stai attento, data una nozione ragionevole di "dimensione" (nota che anche se inizi con una matrice intera, l'inverso potrebbe contenere voci razionali).
Detto questo, spesso l'inverso della matrice viene studiato dal punto di vista della teoria della complessità algebrica, in cui si contano le operazioni di base indipendentemente dalla grandezza. In questo modello, si può dimostrare che la complessità dell'inverso della matrice equivale alla complessità della moltiplicazione della matrice, fino a termini pollogaritmici; questa riduzione può forse aiutarti anche a limitare la dimensione dei coefficienti.
Dato l'algoritmo efficiente nel modello della teoria della complessità algebrica, ci si chiede se implica un algoritmo altrettanto efficiente nel modello normale; può essere che sebbene le voci finali abbiano dimensioni polinomiali, il calcolo coinvolge quelle più grandi? Questo probabilmente non è il caso, e anche se lo fosse, il problema potrebbe forse essere evitato usando il teorema del resto cinese.