我正在研究动态编程,在Cormen的算法简介的第15.2章中,读为:
对于矩阵链乘法,如果我们要绘制子问题图,它将有
O(n^2)
个顶点,每个顶点最多具有 degreen - 1
,给出一个共有O(n^3)
个顶点和边。
当我绘制n = 4
的图形时,我得到:
但是,顶点M[1, 4]
的阶数为6> 4-1。我误解了什么?
答案 0 :(得分:1)
解决子问题应该可以为您解决主要问题,尽管可能不是最好的解决方案。因此,这里的一个子问题是两个乘积而不是一个乘积的计算。对于具有A1 A2 A3 A4
的产品n=4
,我们有三个子问题,即n-1
,子问题:({A1
,A2 A3 A4
),(A1 A2
,{{ 1}})和(A3 A4
,A1 A2 A3
)。
编辑。该书还显示:
因此,我们可以通过将矩阵问题分解为两个子问题(对
A4
和Ai ... Ak
进行最佳括号化)来为矩阵链乘法问题的实例建立最佳解决方案,...
因此,子问题是单个乘积而不是两个乘积的计算。似乎这本书的子问题定义不一致,或者Ak+1 ... Aj
装订不正确,应该是n-1
。