考虑以下功能
以下内容哪些是对的?
(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,则写f(n)= O(g(n)),使得对于所有足够大的n值,f(n)的绝对值最多为M乘以g的绝对值(n)。也就是说,当且仅当存在一个正实数M和一个实数n0使得f(n)≤M(g(n))时,对于所有n≥,f(n)= O(g(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提供
这个问题的测验