首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >矩阵链乘法的时间复杂度

矩阵链乘法的时间复杂度
EN

Stack Overflow用户
提问于 2012-01-23 18:56:47
回答 2查看 26K关注 0票数 11

这是科门等人在“算法导论”中解决的问题。阿尔。Ch.15,第15.2节:矩阵链乘法。Pg。373.

其目的是将矩阵链乘积A1.A2.A3.....An括起来,使标量乘法的数目最小。

对于Ai.Ai+1....Ak.Ak+1.....Aj

矩阵Ai的维数为pi-1xpi,给出了递归算法。

代码语言:javascript
复制
m[i,j] = 0 if i=j
       = min {m[i,k] + m[k+1] + pi-1.pk.pj}   where i goes from k to (j-1)   if i<j

(mi,j是乘积Ai....Aj所需的最小标量乘法数)

到目前为止,我明白了,但他说的时间复杂性是O(n^3)。

当我看伪代码时,有3个for循环,所以它是正确的。但我不能直观地理解递归。

有人能帮忙吗?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-01-23 19:55:41

最后的解决方案是计算m[0,N]。但是,在计算m[i,j]之前,需要计算所有m[0,N]值。这使得它成为O(N^2)

从递归公式中可以看到,每个m[i,j]计算都需要O(N)复杂性。

因此,O(N^3)用于完整的解决方案。

票数 11
EN

Stack Overflow用户

发布于 2017-01-05 16:18:35

对于任何给定的MCM问题,都可能存在O(n^2)唯一的子问题,对于每一个这样的子问题,都可能存在O(n)分裂。

所以它是O(n^3)。

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8977047

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档