关于运行时间的一些想法
2013-01-09 10:44
260 查看
递归贪心算法的伪代码如下:
书上的结论是:假设活动已根据结束时间进行排序,那么该算法的运行时间为Θ(n),对该运行时间进行分析
联想到QUICKSORT在最坏的情况下运行时间可以如下表示:T(n) = T(n-1) + Θ(n),根据代换法,假设其运行时间为Θ(n^2),不难证明。
贪心算法我捉摸如何将运行时间利用这样的递归形势表达出来,可是这样的伪代码,列不出这样的求解形式,所以着手于其他方法,我们这样理解:运行时间无非是比较次数,由于集合中每个元素在贪心算法中只是比较了1次,那么运行时间即为Θ(集合元素个数)。
由此想总结下几个的伪代码的运行时间:
分支合并算法
T(n) = 2T(n/2) + Θ(n),运行时间为Θ(nlg(n))
遍历二叉查找树
T(n) = T(k) + T(n - k -1) + d
用替代法 T(n) = (c + d)n +c,从而证明 T(n) = Θ(n)
矩阵链乘法的递归式
T(n) ≧ 1 + ∑(T(k) + T(n-k) + 1)
T(n) ≧ n +2* ∑(T(i))
利用替代法T(n) = Ω(2²)可以证明得到
因此递归法调用RECURUSIVE-MATRIX-CHAIN(p,1,n)的工作总量至少为n的指数
本文的由递归贪心算法的运行时间的求解,告之不是所有的运行时间都是要列出递归表达式,推广到一些典型的运行时间递归式,总结其运行时间,方便以后能快速运用
RECURISIVE-ACTIVITY-SELECTOR(s,f,i,n) m <- i+1 while( m<= n and s[m] < f[i]) do m <- m+1 if m<= n then return {a[m]} + RECURISIVE-ACTIVITY-SELECTOR(s,f,m,n) else return empty
书上的结论是:假设活动已根据结束时间进行排序,那么该算法的运行时间为Θ(n),对该运行时间进行分析
联想到QUICKSORT在最坏的情况下运行时间可以如下表示:T(n) = T(n-1) + Θ(n),根据代换法,假设其运行时间为Θ(n^2),不难证明。
贪心算法我捉摸如何将运行时间利用这样的递归形势表达出来,可是这样的伪代码,列不出这样的求解形式,所以着手于其他方法,我们这样理解:运行时间无非是比较次数,由于集合中每个元素在贪心算法中只是比较了1次,那么运行时间即为Θ(集合元素个数)。
由此想总结下几个的伪代码的运行时间:
分支合并算法
MERGE-SORT(A,p,r) if p < r then q <- (p+r)/2 MERGE-SORT(A,p,q) MERGE-SORT(A,q+1,r) MERGE(A,p,q,r)
T(n) = 2T(n/2) + Θ(n),运行时间为Θ(nlg(n))
遍历二叉查找树
INORDER-TREE-WALK(x) if x != NIL then INORDER-TREE-WALK(left[x]) print key[x] INORDER-TREE-WALK(right[x])
T(n) = T(k) + T(n - k -1) + d
用替代法 T(n) = (c + d)n +c,从而证明 T(n) = Θ(n)
矩阵链乘法的递归式
RECURISIVE-MATRIX-CHAIN(p,i,j) if i = j then return 0 m[i,j] = ∞ for k <-- i to j-1 do q <--RECURISIVE-MATRIX-CHAIN(p,i,k)+RECURISIVE-MATRIX-CHAIN(p,k+1,j) + p[i-1]p[k]p[j] if q < m[i,j] then m[i,j] <--q return m[i,j]
T(n) ≧ 1 + ∑(T(k) + T(n-k) + 1)
T(n) ≧ n +2* ∑(T(i))
利用替代法T(n) = Ω(2²)可以证明得到
因此递归法调用RECURUSIVE-MATRIX-CHAIN(p,1,n)的工作总量至少为n的指数
本文的由递归贪心算法的运行时间的求解,告之不是所有的运行时间都是要列出递归表达式,推广到一些典型的运行时间递归式,总结其运行时间,方便以后能快速运用
相关文章推荐
- 关于做指定时间进行显示倒计时的一些想法
- 关于时间复杂度和空间复杂度的一些想法
- 关于JavaScript代码的运行时暂停(:中断:阻塞) 的一些想法
- 关于HTML5的一些想法
- [原]关于java的编码规范的一些想法
- 关于网络协议封装的一些新想法
- 关于PE文件的一些想法
- 关于算法的一些想法
- 关于如何实现C++跨平台的一些想法
- struts2 关于运行机制的一些笔记
- 关于 Apple Metal API 的一些想法
- 关于大型软件重构的一些想法
- 关于内网穿透,内网映射的一些想法
- js中关于时间的一些函数
- 【游戏方向】近期关于项目团队和小公司产品策略的一些想法
- 关于Python35爬虫的一些个人想法(我是菜鸟)
- 又是一点关于过年前做的项目的一些想法!
- 关于递推算法的一些想法
- 关于反模式、设计和复用的一些想法
- 关于UFT的一些小想法