Matrix-Kettenmultiplikation

Matrix-Kettenmultiplikation bezeichnet die Multiplikation von mehreren Matrizen. Da die Matrizenmultiplikation assoziativ ist, kann man dabei beliebig klammern. Dadurch wächst die Anzahl der möglichen Berechnungswege überpolynomial mit der Länge der Matrizenkette an. Mit der Methode der dynamischen Programmierung kann die Klammerung der Matrix-Kette optimiert werden, so dass die Gesamtanzahl arithmetischer Operationen minimiert wird. Der Algorithmus hat eine Laufzeit von .

Die Anzahl der möglichen Klammerungen für Matrizen lässt sich mit der Catalan-Zahl Cn-1 bestimmen.

Beispiel: Sei eine 10×30 Matrix, eine 30×5 Matrix und eine 5×60 Matrix. Dann gibt es zwei verschiedene Arten, das Matrizenprodukt zu klammern:

Die Anzahl d​er grundlegenden Operationen berechnet s​ich wie folgt:

Algorithmus

Der Algorithmus berechnet mittels dynamischer Programmierung eine Ergebnis-Matrix. Bei einer Kette von Matrizen ist die Eingabe des Algorithmus die Sequenz der Dimensionspaare , wobei die Funktion firstdim bzw. seconddim angewendet auf eine -Matrix bzw. zurückgibt.

bezeichnet die Teilsequenz von s, die die ersten beiden Dimensionspaare enthält. Also ist .

Der Algorithmus w​ird durch e​ine Matrix-Rekurrenz spezifiziert.

Initialisierung

Für a​lle zwei Matrizen l​ange Ketten g​ibt es n​ur eine Möglichkeit d​er Klammerung.

Rekursion

,

wobei .

In der Zelle steht die minimale Anzahl von grundlegenden arithmetischen Operationen, um die Teilsequenz der Matrizenkette zu multiplizieren. Also ist die minimale Anzahl der Operationen bei der Multiplikation der gesamten Kette in der Zelle gespeichert.

Um die optimale Klammerung zu konstruieren, die zu dem optimalen Ergebnis in geführt hat, muss der Pfad in der DP-Matrix mittels Backtracking von aus zurückverfolgt werden.

Effizienz

Die Länge der Eingabesequenz wird mit bezeichnet. Der Algorithmus benötigt zum Speichern der Zwischenergebnisse für alle Teilsequenzen eine quadratische -Matrix. Also liegt der Speicherbedarf in .

Für jede Zelle muss über Aufteilungen optimiert werden. Also ist die Gesamtlaufzeit in

Varianten

Der Optimierungsalgorithmus i​st für beliebige Sequenzen v​on Objekten verwendbar, welche d​urch eine assoziative Operation verkettet sind, w​enn eine Kostenfunktion für d​ie Ausführung d​er Operation existiert.

Durch eine einfache Modifikation der Rekurrenz kann die Anzahl der Klammerungen in berechnet werden.

Abgrenzung

Cormen, 2001 (S. 369), verweist auf einen Algorithmus von Hu und Shing[1] zur Optimierung der Klammerung bei der Matrix-Kettenmultiplikation, der eine Laufzeit von hat.

Literatur

  • Thomas H. Cormen, Charles E. Leiserson, Ronald L. Rivest, Clifford Stein: Introduction to Algorithms. 2. Auflage. MIT Press, Cambridge MA 2001, ISBN 0-262-03293-7, S. 331–338.
  • T. C. Hu, M. T. Shing: Computation of Matrix Chain Products. Part I. In: SIAM Journal on Computing. Band 11, Nr. 2, 1982, S. 362–373, doi:10.1137/0211028.

Quellen

  1. Hu Shing, Computation of Matrix Chain Products, Part I, Part II. 1980, Report.
This article is issued from Wikipedia. The text is licensed under Creative Commons - Attribution - Sharealike. The authors of the article are listed here. Additional terms may apply for the media files, click on images to show image meta data.