我在基本的运行时理解方面遇到了一些麻烦,也许有人可以为我澄清一下。 我该如何确定此函数的运行时间?
我需要确定f = O(g)
或f = omega(g)
或f = theta(g)
f(n)= 100n + logn
g(n)= n +(logn) 2
所以100n
和n
的顺序相同;和线性time > log time;
此时我还需要查看日志部分吗?或者我可以确定f = theta(g)
吗?
答案 0 :(得分:1)
您可以安全地确定它们的数量级相同。无需查看“日志部分”。
以下是此特定案例的正式证明,一般证据可以通过极限算法显示。
当n接近无穷大时,让我们看看函数h(n) = f(n)/g(n)
,如果它保持在0以上且低于某个数字m
,我们知道f(x) = Theta(g(x))
(因为定义了Theta)。
所以我们有h(n) = (100n + logn)/(n + logn^2)
我们知道如果我们为任何真实的x显示,它也适用于自然数字。因此,足以表明:
h(x) = (100x + logx)/(x + logx^2)
我们通过l'Hospital的规则知道,如果提名者和分母的衍生物存在并收敛而不是原始函数的限制存在并且也等于相同的数字。让我们应用它并得到:
lim x-> infinity , h(x) = (100x + logx)/(x + logx^2) =
lim x-> infinity , (100+1/x) / (1 + (2log(x) / x) )
我们知道1 / x接近0,因为x接近无穷大,并且当2接近无穷大时(2logx)/ x接近0(用你的话说(时间>对数时间))。所以我们从极限算术
获得lim x->无穷大h(x)= 100/1 = 100
由于限制存在于R并且非零,我们得到f(x)= Theta(g(x)),这是我们想要显示的。