【问题标题】:Dynamic Programming - "maximize" matrix chain multiplication动态规划——“最大化”矩阵链乘法
【发布时间】:2016-11-07 08:51:54
【问题描述】:

我现在正在自己练习动态编程。对于经典问题“矩阵链乘法”是找到最小数量的标量乘法。也就是说,

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)

但是我很好奇,如果我想找到标量乘法的“最大化”(而不是最小值),它是否存在最优结构,是否有可能在多项式时间内解决它?

【问题讨论】:

    标签: algorithm dynamic-programming


    【解决方案1】:

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

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

    • 因此,如果 a1 ... ai ... a 的最优 - 即最昂贵 - 分区n 是将 1ii + 1 的矩阵相乘>n,则由a1 ... aiai + 1 ... an

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

    【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-01-16
    • 1970-01-01
    • 1970-01-01
    • 2012-11-12
    • 1970-01-01
    相关资源
    最近更新 更多