【问题标题】:Time complexity for this relation - matrix chain multiplication这种关系的时间复杂度 - 矩阵链乘法
【发布时间】:2012-08-28 12:08:37
【问题描述】:

我认为矩阵链乘法问题的(低效)递归过程可能是这样的(基于 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) 的值是多少?

【问题讨论】:

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


【解决方案1】:

这是http://en.wikipedia.org/wiki/Catalan_number

您可以将递归关系视为括号。 wiki 页面详细描述了如何得出公式。

【讨论】:

  • 我不知道如何解决我提到的递归关系(即 T(n) = k 上的求和从 i 到 j [T(k) + T(n-k)])。那么,我怎么知道它转换为加泰罗尼亚语数字?
  • @jatin 你最好在数学论坛上问这个关于解决递归的问题。这里的解决方案是加泰罗尼亚数字。它是 $\omega{2^n}$
【解决方案2】:

这可能会有所帮助:

您只需计算每个矩阵链一次(并存储其值)。

开始 = i 和 j 之间的任意位置

end = start 和 j 之间的任意位置

k = 开始和结束之间的任意位置

如果我们想到一个除了三个 1(代表开始、k、结束)之外全为 0 的数字

这个特殊数字有 j-i+1 个数字。

例如如果 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 的选择数 = Combinations(3, j-i+1)

这是n!/(k! * (n-k)!) = (j-i+1)! / (3! * (j-i+1-3)!)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-03-30
    • 2012-01-22
    • 2015-04-03
    • 1970-01-01
    • 2021-02-16
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多