[英]Showing that a recurrence relation is O(n log n)
好吧,如果你使用Master's定理将其分解为一棵树,那么每次都会有一个恒定的“数量”来计算。 你知道这是因为x + 1 - x = 1。
因此,时间取决于树的水平,这是对数的,因为碎片每次都减少一些恒定的量。 由于每个级别都进行O(n)计算,因此总体复杂度为O(n log n)。
我希望“证明”会有点复杂。 请记住,日志的基础并不重要,它们只是一些不变因素。 请参阅对数关系。
PS:看起来像家庭作业。 自己想一想!
在我看来,这恰好是Quicksort中平均情况的递推方程。
您应该查看CLRS 对“平衡分区”的解释 。
但我觉得奇怪的是,在这个例子中,日志从默认基数变为基数2
这确实很奇怪。 简单的事实是,使用基数2
证明比基础未知x
更容易。 例如, log(2n) = 1+log(n)
,这更容易一些。 您不必使用base 2
,您可以选择任何您想要的基础,或使用base x
。 为了绝对正确,归纳假设必须具有基础: T(K) <= c K log_2(K)
。 你以后不能改变IH,所以现在发生的事情在严格意义上是不正确的。 您可以自由选择任何您喜欢的IH,因此,只需选择一个使证明更容易的东西:在这种情况下,使用基数2的日志。
左侧只有“stuff-cnlog2n <= 0”,然后对任何c和n进行评估
“对任何c和n进行评估”是什么意思? stuff-cnlog2n<=0
是正确的,但是你怎么证明有一个c
使它适用于所有n
? 好的, c=2
是一个很好的猜测。 为了在WolframAlpha中证明它,你需要做stuff <= 0 where c=2, n=1
OK !, stuff <=0 where c=2, n=2
OK !, stuff <= 0 where c=2, n=3
OK!...等采取n
一路到无穷远。 嗯,它将花费你无限的时间来检查所有这些......解决这个问题的唯一实用方法(我现在可以想到)是简化stuff-cnlog2n<=0
。 或许你更喜欢这个论点:你的考试中没有WolframAlpha,所以你必须简化。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.