【问题标题】:If f(n) = o(g(n)) , then is 2^(f(n)) = o(2^(g(n)))?如果 f(n) = o(g(n)) ,那么是 2^(f(n)) = o(2^(g(n)))?
【发布时间】:2012-04-13 22:03:03
【问题描述】:

请注意,我在这里要求 little-o(请参阅类似问题 here)- 对于 big-o,这显然是错误的 - 对于 little-o 来说,感觉正确但似乎无法证明...

编辑:很高兴我提出了辩论 :) 为简单起见假设 f,g > 0

【问题讨论】:

  • 还有,为什么big-Oh明显不对?
  • 我怀疑这是否符合常见问题解答。
  • 我怀疑这是一个建设性的评论。如果这不符合常见问题解答,那么链接的类似问题也是如此,其他所有标记为 big-o 的问题或多或少也是如此

标签: computer-science asymptotic-complexity little-o


【解决方案1】:

至少如果 g(n) 收敛到正无穷大,则 n 收敛到正无穷大(如果 g(n) 不是很容易找到反例)。

证明草图:

先决条件:g(n) 收敛到正无穷大,n 收敛到正无穷大。

f(n) in o(g(n)) 表示:

for every eps > 0 exists a n0 so that for all n > n0 abs(f(n)) < abs(g(n)*eps).

形成如下:

2^abs(f(n)) < 2^abs(g(n)*eps) = (2^eps)^g(n) (for n > n0).

对于 eps

(2^eps)^n is in o(2^n) (as 2^eps < 2) 

因此,对于每个 eps2 > 0 存在一个 n1,因此对于所有 n > n1

(2^eps)^n < eps2*(2^n).

选择 eps2 = eps 场:

(2^eps)^n < eps*(2^n) for all n > n1 (n1 is dependent on eps)

因为 g(n) -> pos.信息。对于 n -> 位置。信息。存在一个 n2 使得

g(n) > n1 for all n > n2

接着是

(2^eps)^g(n) < eps*2^g(n) for all n > n2.

所以对于每一个 0 = max(n0,n2) 所以

2^abs(f(n)) < 2^abs(g(n)*eps) = (2^eps)^g(n) < eps*2^g(n) for all n > n3.

对于每个 eps3 > 1 也:

2^abs(f(n)) < eps*2^g(n) < eps3*2^g(n)

所以对于每个 eps > 0 存在一个 n3 使得

2^abs(f(n)) < eps*2^g(n) for all n > n3

因为 2^f(n) 0 对于所有实数 x,它遵循

abs(2^f(n)) < abs(eps*2^g(n)) for all n > n3

q.e.d.

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

编辑:关于其他 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一点。

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

2^g(n)

【讨论】:

  • 第一行 - 你的意思是 g(n) > 0 (对于某个点之后的所有 n)? - 如果g-&gt;inf 用于n-&gt;inf,则不需要(从它开始)。如果 g(n) 没有(趋于无穷大),你能证明它或举一个反例吗?假设所有 n 的 g > 0。你的定义也是错误的 - o 意味着对于每个 c > 0 都有一个 n0 : f n0 - 注意严格的不等式。假设 g,f >0。
  • 那么 eps > 1 呢?也符合(2^eps)^g(n) &lt;= eps*2^g(n) for all n &gt; n3. 你的意思是 eps2 吗?
  • @Mr_and_Mrs_D 我为我能想到的其他案例添加了一些证明草图(如果您能想到更多,请发表评论)。是的 g(n) > 0 并不是真正需要的。在 > vs >=: 更正它。 eps > 1 通常不是问题,如果 abs(f(n)) = 1。
  • 如果 abs(f(n)) = 1。 :确实但我需要找到for every eps &gt; 0 一个合适的n0 st f n0 !您的证明似乎表明,如果存在 eps
  • 另外 - 在 g -&gt; inf 上:不需要。您只是在使用 g > 0。 g 很可能是有界的——我猜只要 f 变为零。编辑: (2^eps2)^g(n) n3 应为 (2^eps)^g(n) n3。在这一点上 - 回顾你的问题 - 你真的证明单个 eps1
【解决方案2】:

这是一个答案。结果取决于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))),

那么在极限中,右手边就变成了

log_2 (0) = - inf

...所以在这种情况下,它一定是真的

lim(x->inf) g(n) = inf

这个结果似乎是有道理的。考虑f(x) = exp(-x) and g(x) = 1 - exp(-x)。显然,在这个例子中f(x) = o(g(x))。但是,2^(f(x)) is not o(2^(g(x))) 因为

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

但是给定f(x) = exp(x), g(x) = exp(2x),where也是f(x) = o(g(x))和wherelim(x-&gt;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))).

【讨论】:

  • 我不认为从lim (g*f/g - g )lim -g 的步骤对所有fg 都有效(至少不是没有一些理由/解释,因为g 可以去到无穷大比f/g 变为零快)。并且将限制与日志交换是正确的(对于正数,日志是连续的,这就是您所需要的)。我同意你的结论(这取决于g 的具体属性)。
  • 也许这证明了这一点:对于任何eps,无论多么小,我们都有lim f(n)/g(n) &lt; eps 用于n&gt;N 和一些N(假设限制的大小是有意的)。因此,lim (gf/g-g) &lt; lim (g*eps-g) = lim (g(eps-1) = lim (-g)。你认为? (对于后面的步骤,它假设g&gt;0,但如果g
  • ... 附录:似乎,实际上,对于后面的步骤,它不仅假设g&gt;0,而且还冲刷了lim f/g 的符号,所以也许这会影响事情,以及。
  • 错误 - 请再看一遍 - 不确定证明,但例如 f(x) = x, g(x) = 2x, f(x) != o(g(x)) - 与另一个相同。考虑 f,g 为正
  • 谢谢。这是一个简单的案例,所以我不小心。我打算exp([2]x),而不是[2]x。如前所述,对于另一种情况,它的目的是 f(x) != o(g(x))
【解决方案3】:

举个例子简单证明,

如果 f(n) = O(g(n)),
2^(f(n)) 不等于 O(2^g(n)))

让 f(n) = 2log n 并且 g(n) = log n
(假设日志以 2 为底)

我们知道,2log n

2^(f(n)) = 2^log n^2 = n^2
2^(g(n)) = 2^log n = n

我们知道
n^2 不是 O(n)

因此,2^(f(n)) 不等于 O(2^g(n)))

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2022-01-20
    • 1970-01-01
    • 2020-08-05
    • 1970-01-01
    • 2012-09-29
    • 2021-04-24
    • 1970-01-01
    相关资源
    最近更新 更多