【发布时间】:2016-09-30 03:43:49
【问题描述】:
我这几天一直在尝试解决一个问题。我在网上四处寻找帮助,我发现的唯一答案与我的结论相反。
问题来了:
**3^n = 2^(O(n)) True or False?**
结论是“真”,正确答案是:
3^n = 2^(O(n)) since 3^n = 2^(n*log_2(3)) = 2^(O(n))
问题是我不知道答案是如何确定的。一步一步的过程对我来说是最好的解释。换句话说,3^n = 2^n 是如何转换为对数的,我们如何确定常数和 n >= k 的起点?
编辑: 在这个有根据的猜测中,也许更容易解释 2 和 3 的来源。解决方案有一个 3 和两个 2。
If f(n) = 3^n and g(n) = 2^n
The 3 in 2^(n*log_2(3)) must be coming from f(n)?
The 2 in 2^(n*log_2(3)) must be coming from g(n)'s base?
----> Is the log_2 a constant??
换句话说,如果问题是
7^n = 4^(O(n)) ?
正确答案是
4^(n*log_2(7))
How is k determined, where all n >= k?
提前致谢!!!
【问题讨论】:
-
你的教授是正确的(有点不足为奇!)。他的推理你有什么不明白的?
-
这不是我的教授 xD。我的教授根本没有谈过这个。我想我根本不明白他们的答案,或者为什么我的答案是错误的。根据书,我的答案应该是正确的吧?我错过了什么?
-
您的推理是错误的,因为您选择了“错误的方式”中的“c”常量。当 n > N 表达式成立时,您会找到“c”
-
你确定吗?因为,如果是这样的话,那么为什么这个问题会问“对还是错”?如果你只能得到一个真实的答案?否则,你能解释一下他们的答案吗?我不知道他们是如何得出这个答案的。提前致谢!
-
en.wikipedia.org/wiki/Time_complexity#Exponential_time 可能在这里作为另一个参考有用。