无法理解教科书

时间:2017-03-27 21:16:55

标签: big-o logarithm

到目前为止,理解Big-O符号及其计算结果是正确的......大多数情况都很容易理解。但是,我刚刚遇到了这个问题,在我的生活中我无法解决这个问题。

方向:为表达式选择最佳的大O符号。

(n^2 + lg(n))(n-1) / (n + n^2)

答案是O(n)。这一切都很好,但是如果给出分子中的n^3因子,那怎么合理化呢? n^3不是最好的,但我认为f(n) <= O(g(n))之间有一个“最小”的基础?

这本书没有解释任何数学内部运作,一切都被注入到一个可能的解决方案中(采用f(n)并生成一个略大于g(n)的{​​{1}}。

有点难过。如果必须的话,在数学或数学参考上疯狂。

另外,给定一段代码,如何确定每行的时间单位?如何根据一行代码(或多行代码)确定对数时间?我知道声明和设置变量被认为是1个单位的时间,但是当事情变得讨厌时,我将如何处理解决方案?

2 个答案:

答案 0 :(得分:2)

如果您将此算法投入Wolfram Alpha,you get this generic result

enter image description here

如果展开(FOIL)它,你会得到(大致)一个三次函数除以二次函数。使用Big-O时,常数不重要且功率越大,所以something like this会产生结果:

enter image description here

这里的其余部分是数学归纳法。对于更大和更大的n值,整体算法以类似线性的方式增长。它不是相当线性,因此我们不能说它具有(n)的Big-Omega,但由于摊销,它确实非常接近于O(n)不断增长。

或者,你可以在任何地方惹恼数学家并说,&#34;由于这是基于Big-O规则,我们可以从分母中删除n因子,从而通过简单除法得到O(n)。 #34;但是,考虑到这仍然不是完全线性,这在我看来很重要。

请注意,对于您的班级来说,这是一个不太严格的解释,但这会为您提供一些基于数学的运行时间视角。

答案 1 :(得分:1)

非严格答案:

  1. 分发分子产品,我们发现分子是n^3 + n log(n) - n^2 - log n
  2. 我们注意到,对于大型n^3,分子增长为n,对于大型n^2,分母增长为n
  3. 对于大型n^{3 - 2}n,我们将其解释为增长为O(n)