繁体   English   中英

显示递归关系为O(n log n)

[英]Showing that a recurrence relation is O(n log n)

T (n) = T (xn) + T ((1 − x)n) + n = O(n log n)

其中x是0 < x < 1范围内的常数。 x = 0.5, 0.1 and 0.001时,渐近复杂度是否相同? 隐藏在O()表示法中的常量会发生什么。 使用替代方法。

我正在尝试使用〜第15页上的示例,但我觉得奇怪的是,在该示例中,日志从默认基础更改为基础2.我也不太明白为什么需要将其简化为如此以便删除从左侧cnlog2n,可能在第一步没有完成,左侧只有"stuff-cnlog2n<=0"然后对任何c和n 这样评价

从我的尝试来看,它无法证明T(n)=O(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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM