【发布时间】:2015-03-30 05:23:37
【问题描述】:
这是一个证明算法的运行时间不能被认为是Θ(f(n))而应该是O(f(n))的论据。
例如这个关于二分查找的问题:Is binary search theta log (n) or big O log(n)
MartinStettner 的 response 更令人困惑。
考虑*-case的表演:
最佳情况性能:Θ(1)
平均情况下的性能:Θ(log n)
最坏情况下的性能:Θ(log n)
然后他引用了Cormen、Leiserson、Rivest:“算法简介”:
当我们说“运行时间是 O(n^2)”时,我们的意思是最坏情况下的运行时间(它是 n 的函数)是 O(n^2) ...
这不是表明running time 和worst-case running time 是同义词吗?
此外,如果running time 指的是具有自然输入f(n) 的函数,则必须有包含它的Θ 类,例如Θ(f(n)),对吧?这表明您有义务使用O 表示法,只有当运行时间不是很精确时(即只知道一个上限)。
【问题讨论】:
-
这个问题可能更适合the Computer Science community
-
我应该删除它并在那里重新发布吗?
-
很难说,大问题确实在这里得到了解答,但由于这很深,你可能会在计算机科学方面取得更大的成功。
-
vuplea:是的。而这个“最佳案例”实际上并没有任何意义。
标签: performance big-o time-complexity complexity-theory big-theta