动态编程 - "最大化"矩阵链乘法

时间:2016-11-07 08:51:55

标签: algorithm dynamic-programming

我现在正在自己动手编程。对于经典问题"矩阵链乘法"是找到最小数量的标量乘法。是的,

M[i,j] = 0 if i=j
       = Min(i<=k<j){M[i,k-1]+M[k,j]+Pi-1*Pj*Pk}
and its time complexity is O(n^3)

但我只是好奇如果我想找到标量乘法的&#34;最大化&#34;(而不是min),它是否存在最优结构并且可以在多项式中求解它时间?

1 个答案:

答案 0 :(得分:2)

与最小化完全相同的推理适用:

  • 如果将 a 1 ... a i 相乘,则生成的矩阵维度不依赖于内部括号。

  • 如果最优 - 即最昂贵 - a 1 的分区...... a i ... a n 将矩阵从 1 乘以 i 并从 i + 1 n ,然后它由 a 1 ... a i a <的最佳解决方案组成sub> i + 1 ... a n

由于最佳子结构仍然存在,您可以使用相同的算法作为最小化(当然,将最优性标准从最小值更改为最大值)。