排序算法中决策树的分析

时间:2015-08-02 07:57:39

标签: algorithm sorting decision-tree

在具有n个元素的排序算法中的高度为h的决策树中:

我们有这样的事情:

n! <= 2^h

因此h&gt; = log(n!)

我知道n ^ n大于n!,但在这里我们讨论的是最坏情况的下界,log(n!)的图形低于(log n ^ n)的图形。所以答案应该是Ω(log n!),因为它不能低于它。

那么我们怎么能在这之后说h =Ω(nlogn)..?

2 个答案:

答案 0 :(得分:2)

这里基本上是你的日志的近似值(n!):

enter image description here

你可以从Stirling's approximation证明,这是n!的近似值:

enter image description here

在那里,他们也会给你一个稍微不那么近似的近似值:enter image description here

如果您对如何证明它感兴趣,请仔细使用斯特林公式中的日志。

答案 1 :(得分:2)

你说对了!并且n n 具有不同的生长速率,但它们的对数(log n!和log n n )实际上具有相同的生长速率。 @Salvador Dali指出,斯特林的近似是一种很好的方式来看待这一点,但这是另一种看待它的方式。

首先,请注意log n n = n log n通过对数属性。这很简单。

怎么样(log n!)?首先,请注意

  

log n!

     

= log(n·(n-1)·(n-2)·..·2·1)

     

= log n + log(n-1)+ log(n-2)+ ... + log 2 + log 1

这再次使用对数属性。从这里,我们可以看到log n! = O(n log n),因为

  

log n + log(n-1)+ log(n-2)+ ... + log 2 + log 1

     

≤logn + log n + log n + ... + log n + log n(n次)

     

= n log n

我也要声称登录n! =Ω(n log n)。这是一种看待这个的方法。查看上述求和的前n / 2项,即

  

log n + log(n-1)+ log(n-2)+ ... + log(n / 2)

请注意,此数量不小于

  

log(n / 2)+ log(n / 2)+ log(n / 2)+ ... + log(n / 2)(n / 2次)

     

=(n / 2)log(n / 2)

最后一个数量是Ω(n log n),所以总体来说我们看到log n! = O(n log n)和log n! =Ω(n log n),所以n! =Θ(n log n)。换句话说,记录n!渐渐地以与log n n 相同的速率渐近地增长,即使原始函数是n!和 n 有不同的增长率。

希望这有帮助!