如何将矩阵分解为内核矩阵的乘积?

zr.*_*zr. 8 c++ math matrix linear-algebra

问题陈述:

假设我们有一组内核平方矩阵= {K1,K2,..,Kn}.给定矩阵A找到涉及最少量矩阵乘法的乘积,其给出:A = Ki*Kj*...*Kz

例:

Say we have these two matrices in the set of Kernel matrices:
K1 = (1 2)    K2 = (5 6)
     (3 4)         (7 8)

Then we have a solution for A=K1*K2=(19 22) and also for B=K1*K1*K2=(105 122)
                                    (43 50)                         (229 266)
Run Code Online (Sandbox Code Playgroud)

是否有可用于查找解决方案的现有C或C++库?如果没有,是否有任何已知的算法/启发式?

PS这不是一个家庭作业问题或理论问题或其他一些小事.对于我在日常工作中正在进行的辅助项目,这是一个真正需要解决的问题.

小智 0

我认为你想要的是一个进行矩阵运算的工具。Eigen 可能适合您。http://eigen.tuxfamily.org/index.php?title=Main_Page