矩阵链乘法和一些不同的问题?

时间:2015-03-27 15:57:54

标签: algorithm math data-structures dynamic-programming matrix-multiplication

我们知道矩阵链乘法问题。我的教授解决了一个接近的问题:

  

我们想要找到矩阵乘法的顺序,使得数量为   中间矩阵中的元素(在所有生产步骤中计算)是   最小化(我们称之为生产成本)。我们有   A_1 * A_2 * A_3 * ... * A_n且尺寸A_i在d_ {i-1}和d_i上。 C_ {ij} =   最小生产成本A_i * ... * A_j子问题和C_ {ii} = 0。他说   解决这个问题的关系是:

C_{ij}=min i<=k < j  max{C_{ik}, C_{k+1,j}, d_{i-1}*d_j}

我可以得到它,这种关系背后的想法是什么?怎么能帮到我?

1 个答案:

答案 0 :(得分:2)

我们假设我们想要最小化C(i, j)。我们可以选择什么?我们可以选择我们将要执行的最后乘法的位置。当它被修复时,我们有两个独立的子问题(在最后一次乘法之前的所有内容以及它之后的所有内容)。所以简单英语中的等式C_{ij}=min i<=k < j max{C_{ik}, C_{k+1,j}, d_{i-1}*d_j}表示:

  1. 让我们选择最后一个乘法的位置,并表示它是k

  2. 让我们解决两个子问题:一个用于(i, k),另一个用于(k + 1, j)

  3. 对于固定的k,答案是这两个子问题的最大结果以及我们在(i, j)范围内乘以所有矩阵后得到的最终矩阵的大小(即d_{i-1}*d_j,它不依赖于乘法的顺序。

  4. 我们希望最小化结果,因此我们选择所有有效k中的最小值。

  5. 就是这样。