Big-O代数简化问题

时间:2015-01-27 19:56:36

标签: big-o

我现在已经解决了几个小时的问题了,我需要澄清一下:

我需要简化(尽可能多)以下的big-O表达式。对于每一个,我放下了我认为正确的答案。我想要解决方案,但如果我不正确,我也会感谢您的解释。我试图尽可能地学习Big O符号,我认为做这些问题有很大帮助。我只是想确保我走在正确的道路上。

a)O(sqrt(n) + log(n)*log(n))

我认为这是O(n)

b)O(3log2 n + 2log3 n)

我认为这是O(log3 (n))

c)O(n^3 + 2n^2 +3n + 4)

我认为这是O(n^3)

感谢您的帮助!

3 个答案:

答案 0 :(得分:1)

让我们一次完成这个。

  

O(sqrt(n)+ log(n)* log(n))。我以为这是 O(n)

你是对的,这是O(n),但这不是一个特别严格的约束。让我们从一个简化的问题开始:增长得更快,O(sqrt(n))或O(log(n)* log(n))?使用该信息,您可以从总和中删除两个术语中的一个吗?

  

O(3log2 n + 2log3 n)。我以为这是 O(log3(n))

请记住" big-O忽略了对数的基数" (对于任何大于1的b和c,log b n = O(log c n))。从技术上讲,它是O(log3 n),但这不是最干净的解决方案。你最好在这里说O(log n)。

  

O(n ^ 3 + 2n ^ 2 + 3n + 4)。我以为这是 O(n ^ 3)

完全正确!这是有效的,因为2n 2 + 3n + 4是O(n 3 ),因此您可以从求和中删除这些项。现在,您是否可以使用类似的技巧来简化您对(a)部分的回答?

希望这有帮助!

答案 1 :(得分:0)

(a)是我认为最艰难的一个; (b)和(c)使用相当普遍的Big-Oh简化规则。

对于(a),我建议做一个替换:让m = [n的某个函数使两个术语中的一个更简单]并重新排列得到n = [something]。然后,您可以使用它将m替换为表达式,从而消除n的所有外观,并根据Big-Oh规则简化它。然后,如果您选择的函数是n的递增函数,则可以将n替换为n并在需要时进一步简化。

答案 2 :(得分:0)

好的答案很长,但我一直很好。

<强>说明: 你需要做的第一件事就是正确定义大O的意思。Relevant read。传统上它只被定义为上限。但它在计算机科学中并不是很有用,至少不适用于像你这样的任务。你可以从技术上回答任何增长速度超过例子的事情,即说O(n!)所有问题在技术上都可以。

更有用的是大theta,通常在CS中我看到大O从上面的阅读重新定义为大Theta的含义。区别在于你的约束,必须更严格,也可以从下面申请。

定义/规则:我最喜欢的计算Big O(和Theta)的方法是使用限制。它允许以简单直接的方式求和渐近行为关系。

基本上如果(此处及其后隐含x->inf):

  1. lim f(x) / g(x) = infinity - 渐进式增长大于g
  2. lim f(x) / g(x) is a constant > 0 - f渐近增长与g
  3. 相同
  4. lim f(x) / g(x) = 0 - 渐进式增长慢于g
  5. 2号是大Theta。第2和第3组合是传统的大O,如“f属于O(g)”(或“ O(g)”,这有点令人困惑的措辞) 。这意味着f不会超过g,因此g是其上限。

    现在用一点点数学很容易证明Big O(或Theta)只关心增长最快的术语。这直接来自极限属性。

    从现在开始,我将使用O作为大Theta,因为一切都适用于Big O,因为它更宽松。

    示例说明: 你的第三个例子是最简单的。您可以安全地删除2n^2 +3n + 4,因为n^3增长得更快。您可以通过计算n^3 + 2n^2 +3n + 4来证明O(n^3)lim n^3 / (n^3 + 2n^2 +3n + 4)

    同样适合你的第二次尝试,但你需要通过对数属性。基本上是:

    log b1 (x) = c log b2 (x) - 这意味着你可以以常数为代价切换对数的基数......并且从上面的规则定义中,常数因子不会改变任何东西,它仍然是2.只是常数变化。 / p>

    你的第一个例子是最难/最棘手的,因为限制是最复杂的。但是,O(f+g) O(f)O(g),因为其中一个增长得更快,因此另一个可以被删除或渐渐增长相同所以任何一个都可以被选中(他们增长最快的任期将是相同的)。这意味着你需要检查哪一个增长得更快,你可以通过...计算lim sqrt(n)/(log(n)*log(n))并根据上面的规则进行选择。我认为这需要医院治疗。