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: