Computer science 如果f(n)=o(g(n)),那么2^(f(n))=o(2^(g(n))?

Computer science 如果f(n)=o(g(n)),那么2^(f(n))=o(2^(g(n))?,computer-science,asymptotic-complexity,little-o,Computer Science,Asymptotic Complexity,Little O,请注意,我在这里要求little-o(见类似问题)-对于big-Oh,这显然是错误的-对于little-o,它感觉是对的,但似乎无法证明它 编辑:很高兴我提出了一个辩论:)为了简单起见,假设f,g>0,至少如果g(n)收敛到正无穷大,对于n到正无穷大(如果g(n)不是,那么很容易找到反例) 证明的草图: 前提是:g(n)收敛到正无穷大,因为n收敛到正无穷大 o(g(n))中的f(n)是指: 从那以后是 (2^eps)^g(n) < eps*2^g(n) for all n > n2.

请注意,我在这里要求little-o(见类似问题)-对于big-Oh,这显然是错误的-对于little-o,它感觉是对的,但似乎无法证明它

编辑:很高兴我提出了一个辩论:)为了简单起见,假设f,g>0,至少如果g(n)收敛到正无穷大,对于n到正无穷大(如果g(n)不是,那么很容易找到反例)

证明的草图:

前提是:g(n)收敛到正无穷大,因为n收敛到正无穷大

o(g(n))中的f(n)是指:

从那以后是

(2^eps)^g(n) < eps*2^g(n) for all n > n2.
(2^eps)^g(n)n2。
因此,对于每0=max(n0,n2),因此

2^abs(f(n))<2^abs(g(n)*eps)=(2^eps)^g(n)n3。
对于每个eps3>1,也应:

2^abs(f(n)) < eps*2^g(n) < eps3*2^g(n)
2^abs(f(n))
因此,对于每一个大于0的eps,存在一个n3,因此

2^abs(f(n)) < eps*2^g(n) for all n > n3
2^abs(f(n))n3
因为对于所有n,2^f(n)<2^abs(f(n)),对于所有实x,2^x>0,它如下

abs(2^f(n)) < abs(eps*2^g(n)) for all n > n3
abs(2^f(n))n3
q、 急诊室

如果有不清楚或错误的地方,请评论

编辑:关于其他g(n)的一些想法:

g(n)的子序列受到限制,即它存在一些x,因此对于所有n>n0,不存在abs(g(n))>=x的n0:

o(g(n))只包含在某些n之后为常数0或收敛到0的函数。那么2^g(n)也有一个受限的子序列,但是2^f(n)在某个点之后是常数1

对于所有n>n0,没有n0 so g(n)>0:


2^g(n)<1如果g(n)<0,那么g(n)有一个受限的子序列,意思是o(2^g(n))只由在一些n之后为常数0或收敛到0的函数组成。

这里有一个答案。结果取决于g(n)的收敛性质

首先考虑相关的限制:

lim(x->inf) log_2 ((2^(f(n))) / (2^(g(n))))
=
lim(x->inf) ( log_2(2^(f(n))) - log_2(2^(g(n))) )
=
lim(x->inf) ( f(n) - g(n) ) = lim(x->inf) ( g(n) * f(n) / g(n) - g(n) )
=
lim(x->inf) ( -g(n) ) = - lim(x->inf) g(n)
。。。现在,把这个问题转化为你文章中原始问题的形式,如果转换极限和对数(我认为是这样)在数学上是正确的,那么我们应该:

lim(x->inf) log_2 ((2^(f(n))) / (2^(g(n))))
=
log_2 lim(x->inf) ((2^(f(n))) / (2^(g(n)))).
现在,继续回答这个问题。如果它是真的,那么

2^(f(n)) = o(2^(g(n))),
lim(x->inf) g(n) = inf
然后在极限中,右侧变为

log_2 (0) = - inf
。。。所以在这种情况下

2^(f(n)) = o(2^(g(n))),
lim(x->inf) g(n) = inf
这个结果似乎是有道理的。考虑<代码> f(x)=EXP(-x)和g(x)=1 -EXP(-x)< /代码>。显然,在这个例子中
f(x)=o(g(x))
。然而,
2^(f(x))不是o(2^(g(x))

lim(x->inf) (2^exp(-x)) / (2^(1-exp(-x))) = 1/2.
但是给定
f(x)=exp(x),g(x)=exp(2x)
,其中也
f(x)=o(g(x))
lim(x->inf)g(x)=inf
,满足上述条件,我们得到

lim(x->inf) (2^exp(x)) / (2^exp(2x))
=
lim(x->inf) 1 / 2^(exp(x)*(exp(x) - 1)) = 0

因此,
2^(f(x))=o(2^(g(x))
用一个例子简单证明,

如果f(n)=O(g(n)),
2^(f(n))不等于O(2^g(n))) 设f(n)=2logn和 g(n)=对数n
(假设日志是以2为底的)


我们知道,2log n还有,为什么big Oh显然是错误的?我怀疑这是否符合常见问题。我怀疑这是一个建设性的评论。如果这不符合FAQ,那么链接的类似问题也不符合FAQ,其他标记为大oI的问题或多或少也不符合FAQ。我不认为从
lim(g*f/g-g)
lim-g
的步骤对所有
f
g
都有效(至少没有一些理由/解释,因为
g
可以比
f/g
变为零更快地变为无穷大)。用对数交换极限是正确的(对数对于正数是连续的,这是您所需要的)。我同意您的结论(这取决于
g
的特定属性)也许这证明了这一点:对于任何
eps
,无论多么小,我们都有
limf(n)/g(n)
,对于
n
,以及一些
n
(假设限制的大小是预期的)。因此,
lim(gf/g-g)
。你认为呢?(对于后面的步骤,它假设
g>0
,但是如果g,它应该是相同的形式。附录:事实上,对于后面的步骤,它似乎不仅假设
g>0
,而且它还覆盖了
lim f/g
,所以可能这也会影响到事情。错误-请再检查一遍-不确定例如,代码> f(x)=x,g(x)=2x,<代码> f(x)<代码> o(g(x))< /代码> -与另一个相同。考虑这是容易的情况,所以我不小心。我打算<代码> EXP([ 2 ] x)< /代码>,而不是<代码> [2 ] x < /代码>。对于另一种情况,打算<代码> f(x)< /C> >代码>代码> o(g(x))。
,如前所述。第一行-你的意思是g(n)>0(对于某一点之后的所有n)?-如果
g->inf
对于
n->inf
(如下所示),这是不必要的。如果g(n)不是(到无穷大)你能证明这一点或给出一个反例吗?假设g>0表示所有n。同样,你的定义是错误的-
o
意味着对于每个c>0,每个n=>n0都有一个n0:f0。那么eps>1呢?同样在第
(2^eps)^g(n)行中n3.
你是说eps2吗?@Mr_和Mrs_D我为我能想到的其他案例添加了一些证据的草图(如果你能想到更多,请发表评论)。是的,g(n)>0不是真的需要。在>vs>=:更正了它。eps>1通常不是问题,如果abs(f(n))=1。如果abs(f(n))=1。确实,但我需要为每个eps>0找到一个合适的n0 s.t.fn0!你的证明似乎表明,如果有eps,那么-on
g->inf
:不需要。你只是在使用g>0。只要f为零,我猜g可能是有界的。编辑:(2^eps2)^所有n>n3的g(n)n3的(2^eps)^g(n)2^(f(n)) = o(2^(g(n))),
log_2 (0) = - inf
lim(x->inf) g(n) = inf
lim(x->inf) (2^exp(-x)) / (2^(1-exp(-x))) = 1/2.
lim(x->inf) (2^exp(x)) / (2^exp(2x))
=
lim(x->inf) 1 / 2^(exp(x)*(exp(x) - 1)) = 0