Der berühmte Strassen-Matrixmultiplikationsalgorithmus ist für uns eine echte Wohltat, da er die Zeitkomplexität von traditionell O (n 3 ) auf O (n 2,8 ) reduziert .
Aber von allen Quellen, die ich durchgesehen habe, auch von Cormen und Steven Skiennas Buch, sagen sie eindeutig nichts darüber aus, wie Strassen darüber dachte.
Was ist das Grundprinzip des Strassen-Matrixmultiplikationsalgorithmus? Ist das ein glücklicher Zufall oder steckt etwas Tieferes drin?
algorithms
matrix
user1369975
quelle
quelle
Antworten:
Außer Strassen kann Ihnen niemand sagen, wie Strassen auf seine Idee gekommen ist. Aber¹, ich kann Ihnen sagen, wie Sie diese Formel selbst hätten finden können - vorausgesetzt, Sie interessieren sich für algebraische Geometrie und Darstellungstheorie. Dies gibt Ihnen auch die Möglichkeit zu zeigen, dass die Strassen-Formel so gut wie möglich ist, oder genauer gesagt, dass es keine Formel gibt, die das Produkt von zwei 2 × 2-Matrizen berechnet, die weniger als 7 Multiplikationen verwenden .
Da Sie sich für Matrizen interessieren, gehen wir davon aus, dass Sie mit der linearen Grundalgebra vertraut sind und bei fortgeschrittenen Details etwas verschwommen sind.
Zunächst sei E die Menge aller linearen Abbildungen von einer Ebene zu einer Ebene. Dies ist im Grunde die Menge aller 2 × 2-Matrizen, aber wir vergessen ein bestimmtes Koordinatensystem - denn wenn es ein besseres Koordinatensystem als das „Standard-Koordinatensystem“ gäbe, könnten wir daran interessiert sein, es für die Matrixmultiplikation zu verwenden. Wir bezeichnen mit E † auch den dualen Raum von E und mit X = P (E⊗E † ⊗E †) den projektiven Raum, der dem Tensorprodukt E⊗E † ⊗E † zugeordnet ist .
Ein Element von X = P (E⊗E † ⊗E †) der Sonderform [c⊗α⊗β] kann als Elementaroperation auf Matrizen interpretiert werden, die in einigen geeigneten Koordinatensystemen einen Koeffizienten einer Matrix liest A und ein Koeffizienten einer Matrix B und schreiben das Produkt dieser Koeffizienten in irgendeiner Matrix C . Ein allgemeines Element von X ist eine Kombination dieser Elementaroperationen, so dass das Produkt π zweier Matrizen, verstanden als Abbildung von P (E) × P (E) nach P (E), ein Punkt in X ist .
Die übliche Matrixproduktformel und die Strassensche Formel können als Kombinationen dieser linearen Operationen ausgedrückt werden, also bezeichne ich die Menge dieser elementaren Operationen [c theseα⊗β] mit W₁ und beschreibe ihre Kombinationen geometrisch.
Sei W & sub2; die Vielzahl von Sekanten von W & sub1; in X. Sie wird erhalten, indem die Vereinigung aller Linien genommen wird, die durch zwei (allgemeine) Punkte von W & sub1; gehen . Wir können es uns als die Menge aller Kombinationen von zwei Elementaroperationen vorstellen.
Sei W & sub3; die Vielzahl von Sekantenebenen von W & sub1; in X. Man erhält sie, indem man die Vereinigung aller Ebenen durch drei (allgemeine) Punkte von W & sub1; nimmt . Wir können es uns als die Menge aller Kombinationen von drei Elementaroperationen vorstellen.
Ebenso definieren wir Sekantensorten für größere Indizes. Es ist zu beachten, daß diese Sorten immer größer werden, dh W & sub1 ; & sub0 ; W & sub2 ; & sub0 ; W & sub3 ; & sub0 ;. Daher zeigt die klassische Matrixproduktformel, daß das Produkt der Matrizen ein Punkt von W & sub0; ist . Tatsächlich
VORSCHLAG (Strassen) - Das Produkt der Matrizen π liegt in W₇.
Soweit ich weiß, hat Strassen die Dinge nicht so ausgedrückt, dies ist jedoch ein geometrischer Gesichtspunkt in dieser Frage. Diese Sichtweise ist sehr nützlich, weil Sie damit auch beweisen können, dass die Strassen-Formel die beste ist, dh , dass π nicht in W₆ liegt . Hier entwickelte geometrische Methoden können auch für ein breiteres Spektrum von Problemen eingesetzt werden.
Ich hoffe, ich habe deine Neugier geweckt. Sie können weiter gehen, indem Sie diesen Artikel von Landsberg und Manivel lesen:
http://arxiv.org/abs/math/0601097
¹ Ich werde diesen Tippfehler nicht beheben, weil ich mich erkältet habe.
quelle
Ich wurde gerade beauftragt, dies für Hausaufgaben zu tun, und ich dachte, ich hätte eine nette Offenbarung: Der Algorithmus von Strassen opfert die "Breite" seiner Vorsummierungskomponenten, um weniger Operationen im Austausch gegen "tiefere" Vorsummierungskomponenten zu verwenden das kann noch verwendet werden, um die endgültige Antwort zu extrahieren. (Dies ist nicht die beste Art, es auszudrücken, aber es fällt mir schwer, es zu erklären.)
Ich werde das Beispiel der Multiplikation zweier komplexer Zahlen verwenden, um das Gleichgewicht zwischen " Operationen und Komponenten " zu veranschaulichen :
Beachten Sie, dass wir 4 Multiplikationen verwenden, die 4 Produktkomponenten ergeben :
Beachten Sie, dass die beiden Endkomponenten, die wir wollen: der Real- und der Imaginärteil der komplexen Zahl, eigentlich lineare Gleichungen sind: Sie sind Summen skalierter Produkte. Wir haben es hier also mit zwei Operationen zu tun: Addition und Multiplikation.
Tatsache ist, dass unsere 4 Produktkomponenten unsere 2 Endkomponenten darstellen können, wenn wir einfach unsere Komponenten addieren oder subtrahieren:
Unsere letzten 2 Komponenten können jedoch als Produktsummen dargestellt werden. Folgendes habe ich mir ausgedacht:
Wie Sie sehen können, benötigen wir nur drei verschiedene Produktkomponenten , um unsere letzten beiden zu erstellen:
Aber warte! Jeder der Großbuchstaben ist für sich ein Produkt! Aber der Haken ist, dass wir wissen, dass wir (A + B + C + D) aus (a + b) (c + d) erzeugen können, was nur 1 Multiplikation ist.
Letztendlich ist unser Algorithmus so optimiert, dass weniger, aber "dickere" Komponenten verwendet werden, bei denen die Menge der Multiplikationen gegen mehr Summierungsoperationen getauscht wird.
Ein Teil dessen, was dies ermöglicht, ist die Verteilungseigenschaft, die es ermöglicht, dass A (B + C) äquivalent zu (AB + AC) ist. Beachten Sie, wie die erste mit 1 Addition und 1 Multiplikation berechnet werden kann, während die zweite 2 Multiplikationen und 1 Summe erfordert.
Der Algorithmus von Strassen ist eine Erweiterung der Optimierung, die wir auf Produkte mit komplexen Zahlen angewendet haben, mit der Ausnahme, dass es mehr Zielproduktbegriffe und möglicherweise mehr Produktkomponenten gibt, mit denen wir diese Begriffe erhalten können. Für eine 2x2-Matrix wandelt der Algorithmus von Strassen einen Algorithmus, der 8 Multiplikationen benötigt, in einen Algorithmus um, der 7 Multiplikationen benötigt, und nutzt die Verteilungseigenschaft, um zwei Multiplikationen zu einer Operation "zusammenzuführen" und stattdessen vom neuen "dickeren" Knoten zu extrahieren produkt begriff oder die andere, etc.
Ein gutes Beispiel: Um (-1) und (2) und (5) zu erhalten, können Sie sich das als (-1), (2), (5) oder als (2-3) vorstellen ), (2), (2 + 3). Die zweiten Operationen verwenden jedoch weniger eindeutige Zahlen. Der Haken ist, dass die Anzahl der eindeutigen Zahlen der Anzahl der Produktkomponenten entspricht, die Sie für die Matrixmultiplikation berechnen müssen. Wir optimieren dies einfach, um eine bestimmte Ansicht der zugrunde liegenden Operationen zu finden, die isomorphe Ausgaben mithilfe einer anderen Variation über die Verteilungseigenschaft nutzen.
Vielleicht könnte dies in irgendeiner Weise mit der Topologie zusammenhängen? Dies ist nur die Art und Weise, wie mein Laie es versteht.
Bearbeiten: Hier ist ein Bild meiner Notizen, die ich während der Erklärung der komplexen Zahlen gezeichnet habe:
quelle