繁体   English   中英

这种推理确定上限有什么问题?

[英]What is wrong with this reasoning to determine the upper bound?

我在算法类中得到了一个问题

is 2^{2n} upper bounded by  O(3^n)?

现在明确2 ^ 2n是4 ^ n,并且4 ^ n不能被3 ^ n上限。

但是,如果我在两侧登录

On LHS I get 2n
On RHS I get kn (where k is some constant)

2n可以在kn的上限,因此它与上面更明显的主张相矛盾。 我在这个推理中做错了什么?

从本质上讲,你的推理归结为这句话:

如果对于某个常数c,log f(n)≤clogg(n),则f(n)= O(g(n))。

不过,这句话通常不是一个真实的陈述。 一种看待这种情况的方法是找到一些反例:

  • 如果f(n)= n 4且g(n)= n,则log f(n)= 4 log n且log g(n)= log n。 确实,log n的倍数大于4 log n,但n 4 ≠O(n)。

  • 如果f(n)= 4 n且g(n)= 2 n ,则log f(n)= 2n且log g(n)= n。 n的倍数使其大于2n,但是4 n ≠O(2 n )。

要真正理解为什么这不起作用,请注意c log g(n)= log g(n) c ,因此将log乘以常量相当于将原始函数提升到某个大功率。 你可以通过将函数乘以常数来推理函数的大O,但是你不能通过将函数提高到一定的幂来推理它,这就是为什么这个推理破坏了。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM