这种关系的时间复杂度 - 矩阵链乘法

时间:2012-08-28 12:08:38

标签: algorithm recursion big-o time-complexity matrix-multiplication

我认为矩阵链乘法问题的(低效)递归过程可以是这样的(基于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)的价值是什么以及如何?

2 个答案:

答案 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)!)