考虑以下函数
以下内容哪些是对的?
(A) h(n) 是 O(f(n))
(B) h(n) 是 O(g(n))
(C) g(n) 不是 O(f(n))
(D) f(n) 是 O(g(n))答案: (D)
解释:大哦符号:
设 f 和 g 是定义在实数上的两个函数。如果有一个正常数 M 使得对于所有足够大的 n 值,f(n) 的绝对值至多是 M 乘以 g 的绝对值,那么写 f(n) = O(g(n)) (n)。也就是说,f(n) = O(g(n)) 当且仅当存在正实数 M 和实数 n0 使得 f(n)≤M(g(n)),对于所有 n≥ n0.
在 Big-oh 表示法中,我们只通过考虑较大的 n 值来比较两个函数。为了解决这样的问题,我们可以取较大的 n 值,然后比较不同函数的值。
f(n) = 3(n^32)=3*(2^10)^32=3*2^320
g(n) = 2^320
h(n)=1024!
所以函数之间的关系可以是:
1.f(n) 和 g(n) 的顺序相同,所以 f(n) 是 O(g(n)) 并且 g(n)=O(f(n))。因此选项C是错误的。
2.h(n) 是 n!其阶数高于 f(n) 和 g(n)。所以选项A和B是错误的。
见 http://geeksquiz.com/algorithms-analysis-of-algorithms-question-22/
此解决方案由Nirmal Bharadwaj 提供
这个问题的测验