如果有两个算法A1和A2,他们的运行时间分别是O(n^2)和O(n^3),那么A1和A2哪个更好呢?答案是不确定。其中的原因主要有两点:
- 根据定义,Big Oh notation仅仅给了function f(n)一个upper bound,却并没有说明这个upper bound与f(n)真实的asymptotic behaviour 的接近程度。例如,对于function f(n) = 2n,f(n)=O(n)或者O(n^2)都是正确的,他们都满足定义。但是很明显,O(n)是一个更为接近的upper bound。
- 有时一个算法可能过于复杂,难以分析,例如我们只能证明出A2的upper bound是O(n^3),但实际却也可以是O(n^2)。根据定义,f(n)=O(n^3)是没有问题的,但是它的实际作用却削弱了很多。
Recent Comments