Matrixmultiplikationsalgorithmen werden hinsichtlich ihrer arithmetischen Komplexität analysiert . Das Berechnungsmodell besteht aus linearen Programmen mit Anweisungen des Formularsa ← b ∘ c, wo ∘ ∈ { + , - , × , ÷ }, ein ist eine Variable und b , ckönnen entweder Variablen, Eingaben oder Konstanten sein. Zusätzlich werden bestimmte Variablen als Ausgaben unterschieden . Hier erfahren Sie beispielsweise, wie Sie zwei multiplizieren2 × 2 Matrizen unter Verwendung des üblichen Algorithmus mit Eingabematrizen eini j,bi j und Ausgabematrix ci j::
x11x12x21x22←ein11×b11←ein11×b12←ein21×b11←ein21×b12y11y12y21y22←ein12×b21←ein12×b22←ein22×b21←ein22×b22c11c12c21c22←x11+y11←x12+y12←x21+y21←x22+y22
Das Komplexitätsmaß ist die Anzahl der Zeilen im Programm.
Für die Matrixmultiplikation kann man für alle Algorithmen eine Normalform beweisen . Jeder Algorithmus kann auf Kosten einer konstanten multiplikativen Zunahme der Komplexität in einen Algorithmus der folgenden Form umgewandelt werden:
- Bestimmte lineare Kombinationen αich der Eingabematrix einj k berechnet werden.
- Bestimmte lineare Kombinationen βich der Eingabematrix bj k berechnet werden.
- γich→αich×βich.
- Jeder Eintrag in der Ausgabematrix ist eine lineare Kombination von γichs.
Dies ist als bilineare Normalform bekannt . In dem oben gezeigten Matrixmultiplikationsalgorithmusxj k,yj k Funktion als γich, aber in Strassens Algorithmus sind die linearen Kombinationen interessanter; Sie sind dieM.ichist in der Beschreibung von Wikipedia .
Unter Verwendung eines Tensoring-Ansatzes (dh rekursiver Anwendung desselben Algorithmus), ähnlich der asymptotischen Analyse des Strassen-Algorithmus, kann gezeigt werden, dass ein solcher Algorithmus zum Multiplizieren gegeben ist n × n Matrix mit r Produkte (dh r Variablen γich), dann beliebig N.× N. Matrizen können in ihrer Komplexität multipliziert werden O (N.Lognr);; daher ist nur die Anzahl der Produkte asymptotisch von Bedeutung. In Straßens Algorithmusn = 2 und r = 7und so ist die Grenze O (N.Log27).
Das Problem, die minimale Anzahl von Produkten zu finden, die zur Berechnung der Matrixmultiplikation benötigt werden, kann so formuliert werden, dass der Rang eines Tensors dritter Ordnung (eine "Matrix" mit drei statt zwei Indizes) ermittelt wird, und dies bildet die Verbindung zur algebraischen Komplexitätstheorie. Weitere Informationen finden Sie in diesem Buch oder in diesen Vorlesungsunterlagen (Fortsetzung hier ).
Es gibt zwei Gründe, warum dieses Modell verwendet wird: Erstens ist es sehr einfach und für Analysen zugänglich. Zweitens ist es eng mit dem allgemeineren RAM-Modell verwandt.
Im RAM-Modell können geradlinige Programme implementiert werden, und die Komplexität in beiden Modellen hängt stark zusammen: Arithmetische Operationen haben in mehreren Varianten des Modells (z. B. dem RAM-Modell mit reellen Zahlen) Stückkosten und sind ansonsten polynomisch miteinander verbunden auf die Größe der Zahlen. Im Fall der modularen Matrixmultiplikation liefert die arithmetische Komplexität daher eine Obergrenze für die Komplexität im RAM-Modell. Im Fall einer ganzzahligen oder rationalen Matrixmultiplikation kann man zeigen, dass bei bilinearen Algorithmen, die aus der Tensorisierung resultieren, die Größe der Zahlen nicht zu stark zunimmt und die arithmetische Komplexität eine Obergrenze für das RAM-Modell bis hin zu logarithmischen Faktoren liefert .
Es könnte a priori der Fall sein, dass eine RAM-Maschine einige Tricks ausführen kann, die das arithmetische Modell nicht kennt. Oft möchten wir jedoch, dass Matrixmultiplikationsalgorithmen für Matrizen über beliebige Felder (oder sogar Ringe) funktionieren, und in diesem Fall sollte ein einheitlicher Algorithmus nur die vom Modell angegebenen arithmetischen Operationen verwenden. Dieses Modell ist also eine Formalisierung "feldunabhängiger" Algorithmen.