Wenn ich zwei Matrizen und B mit den Dimensionen 1000 × 2 bzw. 2 × 1000 habe und ( A B ) 5000 berechnen möchte , ist es effizienter, den Ausdruck zuerst als A ( B A ) 4999 B und nur dann umzuschreiben numerisch auswerten, da A B die Dimension 1000 × 1000 hat , B A jedoch die Dimension 2 × 2 hat .
Ich möchte eine verallgemeinerte Version dieses Problems lösen. Gibt es einen einigermaßen effizienten Algorithmus (keine Brute Force), um einen Ausdruck zu optimieren, der Folgendes enthält:
- Freie Matrixvariablen bekannter Dimensionen
- Produkte beliebiger Unterausdrücke
- Willkürliche Unterausdrücke, die zur natürlichen Macht erhoben werden
... damit die numerische Auswertung nach dem Ersetzen der freien Matrixvariablen durch konkrete Matrixwerte den geringsten Arbeitsaufwand erfordert?
Das Matrix - Kette Multiplikation Problem ist ein Spezialfall meines Problems.
Bearbeiten:
Dies ist eine vorläufige Antwort. Es scheint mir intuitiv richtig zu sein, aber ich habe keinen Beweis dafür, dass es richtig ist. Wenn es sich als richtig herausstellt, interessiert mich der Beweis immer noch. (Wenn es natürlich nicht korrekt ist, korrigieren Sie mich bitte.)
Berücksichtigen Sie für jedes Produkt, das zu einer Potenz erhoben wird, beispielsweise , jede zyklische Permutation der Faktoren:
- ...
... rekursiv. Jede Potenz ist unter Verwendung der Exponentiation durch Quadrieren (offensichtlich) zu berechnen, und alle anderen Produkte sind unter Verwendung der vom Matrixkettenmultiplikationsalgorithmus zurückgegebenen optimalen Reihenfolge zu berechnen.
Bearbeiten:
Die in meiner vorherigen Bearbeitung skizzierte Idee ist immer noch etwas nicht optimal. Die Potenzierung durch Quadrierungsalgorithmus wertet tatsächlich Ausdrücke der Form oder A n K aus , wobei K nicht unbedingt die Identitätsmatrix ist. Mein Algorithmus berücksichtigt jedoch nicht die Möglichkeit, die Exponentiation durch Quadrieren des Algorithmus mit K ungleich der Identitätsmatrix zu verwenden.
Antworten:
Haftungsausschluss: Die folgende Methode hat sich nicht konsequent als optimal erwiesen. Ein informeller Nachweis wird erbracht.
Das Problem besteht darin, die effizienteste Bestellung zu finden, wenn das Quadrat des Produkts berücksichtigt wird.
Wenn wir zum Beispiel , müssen wir nur ( A B C ) 2 optimal lösen, da sich dies zu A B C A B C ausdehnt . Durch erneutes Verketten von A B C werden keine nützlichen Bestellinformationen hinzugefügt . Die Intuition hier ist, dass höhere Ordnungen, die aus mehr Elementen bestehen, die dieselben Matrizen verwenden, irrelevant sind, da das Problem der optimalen Ordnung von unten nach oben gelöst werden kann.(ABC)50 (ABC)2 ABCABC ABC
Das Finden der besten Reihenfolge von reduziert sich auf das Problem der Matrixkettenmultiplikation. Wenden Sie nach dem Finden einer optimalen Reihenfolge eine Exponentiation auf das Triplett (im Allgemeinen n-Tupel) in der Reihenfolge an.ABCABC
Wenn die optimale Reihenfolge für das Quadrat wird als Beispiel , die Lösung für das ursprüngliche Problem ist A ( B ( C A ) ) 49 B C .A(B(CA))BC A(B(CA))49BC
Zusammenfassend:(A1A2⋯An)m (A1A2⋯An)2
(A1A2⋯An)2
G (beachten Sie, dass auch alle anderen Gruppierungen aus Lösung (2) angewendet werden sollten).A1⋅A2⋅Gm−1⋅An
1) Der erste Schritt beim Lösen von besteht darin, ( A 1 A 2 ⋯ A n ) 2 zu lösen . 2) Das Lösen von ( A 1 A 2 ⋯ A n ) 2 wird am besten als Beispiel für das Problem der Matrixkettenmultiplikation betrachtet. 3) Wenn wir die n-Tupel-Ordnung G aus der Lösung in (2) verwenden, erhalten wir die Lösung zu (1) als etwas Aroma von A 1 ⋅ A.
Informeller Beweis In(AB)n A B X×Y Y×X A B
Anbetracht des einfachsten Falls unter Verwendung von zwei Matrizen wir fest, dass A und B die Dimension X × Y bzw. Y × X haben. Jedes Produkt, das A und B verwendet, hat eine der folgenden Abmessungen:
Y × X Y × Y X × X.X×Y
Y×X
Y×Y
X×X
Wir haben entweder oder Y ≤ X .X<Y Y≤X
Annahme 1a): A B hat die Dimension X × X , und diese Reihenfolge ist bei einem Bottom-up-Ansatz garantiert optimal. Jede andere Konfiguration von A und B ist entweder gleich gut oder schlechter. Somit ist das Problem als ( A B ) n optimal gelöst .X<Y
AB X×X A B (AB)n
Annahme , 1b): B A hat die Dimension Y × Y . Dies ist die optimale Anordnung für alle Produkte die A und B . Somit wird die Lösung optimal als A ( B A ) n - 1 B gefunden .Y≤X
BA Y×Y A B A(BA)n−1B
Damit ist der Beweis abgeschlossen, und wir haben uns nur die beiden Ordnungen angesehen, die in , dem quadratischen Problem, zu finden sind.ABAB
Bei Verwendung von mehr Matrizen ist das Argument ähnlich. Vielleicht ist ein induktiver Beweis möglich? Die allgemeine Idee ist, dass das Lösen des MCM für das Quadrat die optimale Größe für die Operationen unter Berücksichtigung aller beteiligten Matrizen findet.
Fallstudie:
quelle
quelle