Il numero minimo di operazioni aritmetiche per calcolare il determinante


14

C'è stato qualche lavoro su come trovare il numero minimo di operazioni aritmetiche elementari necessarie per calcolare il determinante di una n con n matrice per le piccole e fissa n ? Ad esempio, n=5 .


4
Ho chiesto agli esperti di questo, e apparentemente non è ancora noto se siano necessarie o meno 9 moltiplicazioni per calcolare il determinante di una matrice 3x3.
Jeffrey Shallit,

@JeffreyShallit Se 9 è possibile, questo è già interessante (poiché ad esempio è inferiore a n3 ). Che ne dici di n=4 ?
Lembik,

3
No, per niente interessante. 9 moltiplicazioni per n = 3 seguono l'espansione per minori. Per n = 4, l'espansione dei minori dà 40. Non so come farlo in meno di 40 moltiplicazioni.
Jeffrey Shallit,

@JeffreyShallit Oh capisco, buon punto. È sorprendente (almeno per me) se non si sa nulla di meglio dell'ingenuo per qualsiasi fisso . n
Lembik,

Se qualcuno lo sa, forse possono dircelo.
Jeffrey Shallit,

Risposte:


9

È noto che il numero di operazioni aritmetiche necessarie per calcolare il determinante di una matrice è n ω + o ( 1 ) , dove ω è la costante di moltiplicazione della matrice. Vedi ad esempio questa tabella su Wikipedia, nonché le sue note e riferimenti. Si noti che la complessità asintotica dell'inversione della matrice è la stessa della moltiplicazione della matrice in questo stesso senso.n×nnω+o(1)ω

L'equivalenza è abbastanza efficace. In particolare, puoi calcolare ricorsivamente il determinante di una matrice lavorando su blocchi ( n / 2 ) × ( n / 2 ) usando il complemento di Schur:n×n(n/2)×(n/2)

D invertibiledet(UNBCD)=det(D)det(UN-BD-1C).

Pertanto, è possibile calcolare un determinante calcolando due determinanti ( n / 2 ) × ( n / 2 ) , invertendo una matrice ( n / 2 ) × ( n / 2 ) , moltiplicando due coppie di ( n / 2 ) × ( n / 2 ) matrici e alcune operazioni più semplici. Espandendo ricorsivamente le chiamate determinanti, la complessità finisce per essere dominata dalla moltiplicazione e dall'inversione della matrice.n×n(n/2)×(n/2)(n/2)×(n/2)(n/2)×(n/2)

Funziona bene anche per piccoli e anche senza utilizzare algoritmi di moltiplicazione a matrice sub-cubica. (Naturalmente, finisce per essere più o meno equivalente all'eliminazione gaussiana.) Ad esempio, per n = 4 , possiamo calcolare det ( D ) con due moltiplicazioni, D - 1 con quattro divisioni, B D - 1 C con 2 × 8 = 16 moltiplicazioni, det ( A - B D - 1 C )nn=4det(D)D-1BD-1C2×8=16det(UN-BD-1C)con due moltiplicazioni e la risposta finale con una moltiplicazione. Il numero totale è moltiplicazioni più divisioni, che è inferiore a 40 dall'espansione cofattore. L'uso dell'algoritmo di Strassen consente di salvare due moltiplicazioni qui, ma in modo più asintotico.2+4+16+2+1=2540

Si può notare che questa espansione utilizza in modo cruciale la divisione. Se si desidera evitare la divisione, è possibile farlo nelle operazioni lavorando con le sequenze di Clow e la programmazione dinamica . È anche noto come ottenere moltiplicazioni n 2 + ω / 2 + o ( 1 ) e nessuna divisione.O(n4)n2+ω/2+o(1)


Conosci qualche limite inferiore al solo numero di moltiplicazioni? Anche per n = 3?
Jeffrey Shallit,

La tua frase "il numero di operazioni aritmetiche necessarie per calcolare il determinante di una matrice è n ω + o ( 1 ) " suggerisce che è noto un limite inferiore. Ma non l'ho visto in nessuna delle opere citate. Mi sto perdendo qualcosa? n×nnω+o(1)
Jeffrey Shallit,

2
Il limite inferiore è nel documento di W.Baur e V.Strassen "La complessità dei derivati ​​parziali" ( dx.doi.org/10.1016/0304-3975(83)90110-X )
Vladimir Lysikov
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.