我必须比较函数f和g,以确定:
f∈Θ(g),f∈O(g),
f∈o(g),f∈Ω(g),
f∈ω(g),g∈_(f),
G∈O(F),G∈O(F),
g∈Ω(f),g∈Ω(f)。
f(n)=n^2/对数n和g(n)=n对数n。
根据我对渐近分析的理解,我得到了:
f(n) = O(g(n)) is like a =< b
f(n) = Ω(g(n)) is like a => b
f(n) = Θ(g(n)) is like a == b
f(n) = o(g(n)) is like a < b
f(n) = ω(g(n)) is like a > b
现在我画了f(n)和g(n),我看到对于n的小值,f(n)更大,但是对于n的大值,g(n)更大,所以在这个意义上,当n更大时更重要,因为算法必须是通用的,所以这意味着f(n)和g(n)是:
f ∈ Ω(g) and f ∈ ω(g) and g ∈ O(f) and g ∈ o(f)
现在我的问题是,这是找到它们的正确方法,从而绘制函数,看看哪个更大,这是否意味着当它们相交时,它们是相等的?
最佳答案
在这两种情况下,你的理解似乎是错误的:
f(n) = o(g(n)) is like a < b
f(n) = ω(g(n)) is like a > b
最好将这些案例形象化,比如:
f(n) = o(g(n)) is like a << b
f(n) = ω(g(n)) is like a >> b
很抱歉,这两个符号
<<
(“小得多”)和>>
(“大得多”)的确切数学含义尚未定义。所以,一般来说,不用绘制两个函数,你可以根据这两个函数的比率
f(n)/g(n)
的极限来思考(当n
变为正无穷大时):如果此限值为零,则
f = o(g)
如果该极限为正常数,则
f = Θ(g)
如果这个极限是正无穷大,那么
f = ω(g)
当然,这只是一个提示——如果你对这两个函数之间的渐近关系使用精确的数学定义,你对这两个函数之间的渐近关系的任何问题的回答都会好得多。