我认为矩阵链乘法问题的(低效)递归过程可以是这样的(基于Cormen给出的递归关系):
MATRIX-CHAIN(i,j)
if i == j
return 0
if i < j
q = INF
for k = i to j-1
q = min (q, MATRIX-CHAIN(i,k) + MATRIX-CHAIN(k+1, j) + c)
//c = cost of multiplying two sub-matrices.
return q
时间复杂度为:
T(n) = summation over k varying from i to j [T(k) + T(n-k)]
这里,n =要乘的矩阵数。
T(n)的价值是什么以及如何?
答案 0 :(得分:1)
这是http://en.wikipedia.org/wiki/Catalan_number
您可以将重复关系视为括号。维基页面深入介绍了如何达到公式。
答案 1 :(得分:0)
这可能会有所帮助:
你只需要计算一次矩阵链(并存储它的值)。
start = i和j之间的任何地方
end = start和j之间的任何地方
k =开始和结束之间的任何地方
如果我们想到一个数字,除了三个1(代表开始,k,结束)之外全部为0
这个特殊号码有j-i + 1位数。
e.g。如果i = 3且j = 6,我们需要4位数字给出以下选项:
1101 (i=3, k=4, j=6)
1011 (i=3, k=5, j=6)
0111 (i=4, k=5, j=6)
1110 (i=3, k=4, j=5)
i,j,k的选择数量=组合(3,j-i + 1)
这是n!/(k! * (n-k)!) = (j-i+1)! / (3! * (j-i+1-3)!)