Wie faktorisiert man eine Matrix auf ein Produkt von Kernel-Matrizen?

8

Problemstellung:

  

Nehmen wir an, wir haben eine Menge von Kernquadratmatrizen = {K1, K2, .., Kn}. Gegeben   eine Matrix A finde das Produkt mit der geringsten Menge an Matrix   Multiplikationen, die ergeben: A = Ki * Kj * ... * Kz

Beispiel:

%Vor%

Gibt es eine vorhandene C- oder C ++ - Bibliothek, mit der ich die Lösung finden kann? Wenn nicht, gibt es bekannte Algorithmen / Heuristiken?

P.S. Dies ist keine Hausaufgabe oder eine theoretische Frage oder eine andere Trolly-Sache. Dies ist ein echtes Problem, das ich für ein Nebenprojekt lösen muss, an dem ich gerade arbeite.

    
zr. 29.05.2012, 07:33
quelle

4 Antworten

1

Sie können sich die Spur und Determinante der Matrix ansehen. Da Trace und Determinante eines Produkts effizienter berechnet werden können als eine vollständige Multiplikation, können sie Ihnen dabei helfen, Kombinationen effizient auszuschließen.

Ссылка http://en.wikipedia.org/wiki/Determinant#Multiplicativity_and_matrix_groups

    
Ben Voigt 31.05.2012 22:40
quelle
0

Ich denke, was Sie wollen, ist ein Werkzeug für Matrixoperationen. Eigen kann für Sie geeignet sein. Ссылка

    
learner 31.05.2012 21:47
quelle
0

Ich denke, dieser Artikel beschäftigt sich mit Ihrem Problem: Ссылка

    
Dženan 01.06.2012 10:09
quelle
0

Die Idee von trace zur Reduktion von Kombinationen ist gut, außer dass tr (A * B) nicht gleich tr (A) * tr (B) ist, also muss man Determinante anstelle von det (A * B) = det verwenden (A) * det (B).

Eine ganzzahlige Faktorisierung von det (M) kann Ihnen helfen, das Kombinatorische zu reduzieren, es sei denn, Ihr Kernel hat det (Ki) = + / - 1 ...

    
aka.nice 05.06.2012 22:59
quelle

Tags und Links