具有常数的递归树--T(n)= T(n / 3)+ T(2n / 3)+ cn

时间:2015-01-22 13:48:25

标签: algorithm recursion tree big-o

我有一个任务,但它有一点问题,但我找不到答案。

通过使用递归树解释为: T(N)= T(N / 3)+ T(2π/ 3)+ CN 其中c是常数,是Omega(n lg n)

我的解决方案: 1.T(n)= T(n / 3)+ T(2n / 3)+ cn的递归树 enter image description here

最短路径将是最左边的路径,因为它以最低值运行,而最右边路径将是最长路径,这意味着树不平衡。

最短路径可以定义为: n - > 1/3 n - > (1/3)^ 2 n - > ...-> 1

    递归树上的
  1. cn值: http://i.stack.imgur.com/9seaP.png
  2. 每个完整等级的总和等于cn。

    1. 来自最短路径的元素被除以3,因此该路径的长度将等于log_3 n。因此,如果最短路径的递归树的完整级别数等于log_3 n,则意味着此路径的算法成本将为: T(n)= cn log_3 n = Omega(cn lg n)
    2. 此解决方案是否正确?如何摆脱" c"最后任务是解释Omega(n \ lg n)而不是Omega(cn lg n)?我认为大的欧米茄符号会有所帮助,我可以忽略" c",但我的老师说根据定义[我不知道哪个定义]很重要"" ;

1 个答案:

答案 0 :(得分:0)

是的,您的解决方案是正确的。是的,你可以忽略常数。如果Omega(c * n * log n)是常量,Omega(n * log n)c相同(根据定义f(n) = Omega(g(n)),如果存在C0 > 0N0对于任何n >= N0 f(n) >= C0 * g(n)。如果我们有g'(n) = c * g(n),我们可以选择C0' = C0 * c