【发布时间】:2015-08-21 13:54:12
【问题描述】:
我有一个任务,只是有点小问题,但我找不到答案。
通过使用递归树来解释该解决方案: T(n)=T(n/3)+T(2n/3)+cn 其中 c 是一个常数,是 Omega(n lg n)
我的解决方案: 1. T(n)=T(n/3)+T(2n/3)+cn的递归树
最短路径是最左边的,因为它在最低值上运行,而最右边的将是最长的,这意味着树是不平衡的。
最短路径可以定义为: n -> 1/3 n -> (1/3)^2 n ->...->1
- 递归树上的cn值:
每个完整级别的总和等于cn。
- 最短路径中的元素除以 3,因此该路径的长度将等于 log_3 n。因此,如果最短路径的递归树的完整级别数等于 log_3 n,则意味着该路径的算法成本将是: T(n)=cn log_3 n=Omega(cn lg n)
这个解决方案正确吗?最后如何摆脱“c”,因为任务是解释 Omega(n\lg n) 而不是 Omega(cn lg n)?我认为大 Omega 符号会有所帮助,我可以忽略“c”,但我的老师说“根据定义的常数 [我不知道哪个定义] 很重要”
【问题讨论】:
标签: algorithm recursion tree big-o