【问题标题】:Matrix-chain Multiplication and a bit different problems?矩阵链乘法和一些不同的问题?
【发布时间】:2015-06-01 00:47:33
【问题描述】:

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

我们想找到一个矩阵乘法的顺序,使得 中间矩阵中的元素(在生产的所有步骤中计算)是 最小化(我们称之为生产成本)。我们有 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}

我无法理解,这种关系背后的想法是什么?怎么能帮助我?

【问题讨论】:

  • 这真的是一个编程问题吗?也许Mathematics 网站更有资格提供帮助。
  • 更像计算机科学。运行时复杂度、离散优化,可能是启发式算法。
  • 我投票结束这个问题,因为这不是一个编程问题。

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


【解决方案1】:

假设我们想要最小化C(i, j)。我们可以选择什么?我们可以选择我们将执行的 last 乘法的位置。当它固定时,我们有两个独立的子问题(最后一个乘法之前的所有内容和之后的所有内容)。所以等式C_{ij}=min i&lt;=k &lt; 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中的最小值。

就是这样。

【讨论】:

  • 那么为什么 C_{ij}=min i
  • @Prof.KosiNoura 没有选择什么?我们确实选择了产生最小值的 k(取最小值)。
  • 对不起,我的意思是为什么我们不能使用这个公式 C_{ij}=min i
  • @Prof.KosiNoura 我们希望最小化最大矩阵的大小,而不是总和(根据问题陈述)。
  • 另一个问题出现了,为什么“对于一个固定的k,答案是这两个子问题的结果的最大值和最终矩阵的大小?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多