【问题标题】:Simple Big O with lg(n) proof带有 lg(n) 证明的简单大 O
【发布时间】:2010-03-19 17:07:18
【问题描述】:

我正在尝试猜测并证明 Big O:

f(n) = n^3 - 7n^2 + nlg(n) + 10

我猜大O是n^3,因为它是增长阶数最大的词

但是,我无法证明这一点。我的失败尝试如下:

f(n) <= cg(n)
f(n) <= n^3 - 7n^2 + nlg(n) + 10 <= cn^3 
f(n) <= n^3 + (n^3)*lg(n) + 10n^3 <= cn^3
f(n) <= N^3(11 + lg(n)) <= cn^3

so 11 + lg(n) = c

但这不可能是正确的,因为 c 必须是常数。我做错了什么?

【问题讨论】:

  • 这可能是 Math Overflow 的一个好问题 - mathoverflow.net
  • @Ryan,我最近获悉,mathoverflow 只对 研究级别 数学问题感兴趣。继续向他们发送简单的问题可能对我们不利。
  • 这对于数学溢出来说可能是一个糟糕的问题:(来自常见问题解答)“MathOverflow 的主要目标是让用户提出和回答研究级别的数学问题,即你遇到的各种问题撰写或阅读文章或研究生水平的书籍。”
  • MathOverflow 不适用于本科级别的问题。

标签: algorithm big-o


【解决方案1】:

对于任何基础b,我们知道总是存在一个n0 &gt; 0,这样

log(n)/log(b) &lt; n 每当n &gt;= n0

因此,

n^3 - 7n^2 + nlg(n) + 10 n^3 - 7n^2 + n^2 + 10 当n &gt;= n0.

你可以从那里解决。

【讨论】:

  • 谢谢,这是我理解中缺少的链接。
【解决方案2】:

对于你的问题,O(n^3) 的证明应该是这样的:

f(n) <= n^3 + 7n^2 + nlg(n) + 10 for (n > 0)
f(n) <= n^3 + 7n^3 + nlg(n) + 10 for (n > 1)
f(n) <= n^3 + 7n^3 + n*n^2 + 10  for (n > 2)
f(n) <= n^3 + 7n^3 + n^3 + 10  for (n > 2)
f(n) <= n^3 + 7n^3 + n^3 + n^3 for (n > 3)
f(n) <= 10n^3 for (n > 3)

因此,对于 n > 3 且 k = 10,f(n) 为 O(n^3)。

【讨论】:

  • 通常不鼓励解决可能是家庭作业的问题。
  • @danben:我不这么认为。尽管许多人认为应该如此,但也有许多人认为应该只回答问题,而不是如果和但是。
  • 可以回答一个问题,而不是暗示解决方案,但答案应该会进一步加深 OP 对问题域的理解。这个答案根本对 OP 没有帮助,只是将其剪切并粘贴到他或她的家庭作业中。
  • @Svante - 这是指南的链接(由常见问题解答依次链接):meta.stackexchange.com/questions/10811/…
  • @danben:这个答案既不正式也不具有约束力。我只是没有看到“一般”。当然,我通常也不会完全解决别人的作业,但我绝对不会拒绝正确的答案。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-07-06
  • 1970-01-01
  • 1970-01-01
  • 2012-09-29
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多