【问题标题】:Recursive tree with constant - T(n) = T(n/3) + T(2n/3) + cn具有常数的递归树 - T(n) = T(n/3) + T(2n/3) + cn
【发布时间】: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

  1. 递归树上的cn值:

每个完整级别的总和等于cn。

  1. 最短路径中的元素除以 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


    【解决方案1】:

    是的,您的解决方案是正确的。是的,你可以忽略这个常数。 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)。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2013-06-19
      • 2021-06-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-09-19
      • 2012-06-08
      相关资源
      最近更新 更多