【发布时间】:2012-05-29 07:33:22
【问题描述】:
问题陈述:
假设我们有一组核方阵 = {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)
是否有任何现有的 C 或 C++ 库可供我用来寻找解决方案?如果没有,是否有任何已知的算法/启发式方法?
附:这不是家庭作业问题或理论问题或其他一些小题大做。对于我在日常工作中从事的一个副项目,这是我需要解决的一个真正问题。
【问题讨论】:
-
内核矩阵的典型数量和维数是多少?某个内核在产品中出现的次数有上限吗?蛮力态度可行吗?
-
您是否试图计算出制作给定 A 矩阵所需的 K 矩阵集?
-
@ItamarKatz 上限为 16x16。出现次数没有限制,但假设Basis通常提供良好的覆盖率,所以我预计不会出现很多次。蛮力?仅当没有更快的算法时
-
@Skizz 对不起,我不明白
-
@Skizz - 他试图用最少的矩阵乘法找到分解。所有内核都是已知的。
标签: c++ math matrix linear-algebra