algorithm - 大O算法分析

标签 algorithm

问题: alt text http://img12.imageshack.us/img12/2706/image2ot.jpg

我做了什么: alt text http://img29.imageshack.us/img29/9192/image3sc.jpg

但我完全不知道 3.5 和 3.6 之间的区别。

最佳答案

如果您对 3.5 的解决方案更加谨慎,差异就会更加明显。你的第一行

T(n) <= n/4 (lg n)/4 + 3n/4 (3 lg n)/4 + n

不太对。首先,归纳假设是存在一个常数C这样

T(n) <= C n log n

所以你可能应该保留那个 C大约。其次,您将跳过删除 floor 函数的步骤。您真正知道的是(为简单起见忽略常量 C)

T(n) <= floor(n/4) lg (floor(n/4)) + floor(3n/4) lg (floor(3n/4)) + n

那么你是如何保养地板的呢?嗯,floor(x) <= x ;但是lg(floor(x))呢? (出现两次)?这里的关键是 lg是增函数,所以 lg(floor(x)) <= lg(x)还。所以

T(n) <= n/4 lg(n/4) + 3n/4 lg(3n/4) + n

现在用对数的一些性质清理它(你需要使用关于 lg 3 的提示)并完成你的归纳步骤。

好的,知道了,与 3.6 有什么区别?好吧,现在你有了上限函数而不是下限函数,所以你不能忽略它。但是

ceiling(x) <= x + 1

所以你可以用类似的方式工作,还有一些额外的 + 1周围的因素。尝试使用他们的提示,应该没问题。

关于algorithm - 大O算法分析,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1586189/

相关文章:

c# - 有没有一种简单的方法可以将序数数字字符串转换为其匹配的数值?

algorithm - 局部最大值问题是否会导致简单爬山算法陷入无限循环?

java - 如何制作一个可以根据时间戳保存 100 个最近的 record_values 的数据结构?

python - 滚动或滑动窗口迭代器?

javascript - 找出区间内未知函数的最大值

javascript - 使用两个循环进行更改的时间复杂度 - javascript

algorithm - 嵌套循环的时间复杂度?

java - 按时间和权重对记录进行排序

c++ - 最快的素数测试算法

algorithm - 在 heapify 上绑定(bind)更紧