Wurde daran gearbeitet, die minimale Anzahl elementarer arithmetischer Operationen zu finden, die erforderlich sind, um die Determinante einer × Matrix für kleines und festes zu berechnen ? Zum Beispiel ist .
Wurde daran gearbeitet, die minimale Anzahl elementarer arithmetischer Operationen zu finden, die erforderlich sind, um die Determinante einer × Matrix für kleines und festes zu berechnen ? Zum Beispiel ist .
Antworten:
Es ist bekannt , dass die Anzahl der Rechenoperationen erforderlich , die Determinante einer berechnen - Matrix ist n ω + O ( 1 ) , wobei ω die konstante Matrizenmultiplikation ist. Siehe zum Beispiel diese Tabelle auf Wikipedia sowie deren Fußnoten und Verweise. Es ist zu beachten, dass die asymptotische Komplexität der Matrixinversion auch der Matrixmultiplikation in diesem Sinne entspricht.
Die Äquivalenz ist sehr effektiv. Insbesondere können Sie die Determinante einer Matrix rekursiv berechnen, indem Sie daran arbeiten -Blöcke mit dem Schur-Komplement:
Sie können also eine Determinante berechnen , indem Sie zwei ( n / 2 ) × ( n / 2 ) -Determinanten berechnen, eine ( n / 2 ) × ( n / 2 ) -Matrix invertieren und zwei Paare von ( n / 2 ) multiplizieren. × ( n / 2 ) Matrizen und einige einfachere Operationen. Wenn die Determinantenaufrufe rekursiv erweitert werden, wird die Komplexität letztendlich von der Matrixmultiplikation und -inversion dominiert.
Dies funktioniert gut, auch für kleine und sogar ohne Verwendung von subkubischen Matrixmultiplikationsalgorithmen. (Natürlich entspricht dies mehr oder weniger der Gaußschen Elimination.) Zum Beispiel können wir für n = 4 det ( D ) mit zwei Multiplikationen berechnen , D - 1 mit vier Divisionen, B D - 1 C mit 2 × 8 = 16 Multiplikationen det ( A - B D - 1 C )mit zwei Multiplikationen und die endgültige Antwort mit einer Multiplikation. Die Gesamtzahl beträgt Multiplikationen plus Divisionen, was weniger als die 40 aus der Cofaktorerweiterung ist. Die Verwendung des Strassen-Algorithmus spart hier zwei Multiplikationen, jedoch mehr asymptotisch.
Möglicherweise stellen Sie fest, dass bei dieser Erweiterung die Division entscheidend ist. Wenn Sie eine Teilung vermeiden möchten, können Sie dies in -Operationen tun, indem Sie mit Clow-Sequenzen und dynamischer Programmierung arbeiten . Es ist auch bekannt, wie man n 2 + ω / 2 + o ( 1 ) -Multiplikationen und keine Divisionen erzielt.