停下来思考:嘻哈到广场?来自The Algorithm Design Manual,2nd Edition

时间:2015-08-19 22:43:17

标签: algorithm math discrete-mathematics

目前我正在阅读Steven Skiena的算法设计手册第2版,我偶然发现了一个问题。

在第2章中,他解释了算法分析,其中包括Big Oh表示法,我不理解他的解决方案停止和思考:嘻哈到广场?

问题:是(x + y) 2 = O(x 2 + y 2 )。

他的解是(x + y) 2 < = 3(x 2 + y 2 ),这意味着c> ; = 3(从大哦的定义不变)。

这是我的解决方案:

  1. (x + y) 2 < = c(x 2 + y 2
  2. x 2 + 2xy + y 2 &lt; = c(x 2 + y 2 )< / LI>
  3. x = max(x,y)
  4. x 2 + 2x 2 + x 2 &lt; = c(x 2 + x 2
  5. 4x 2 &lt; = 2cx 2
  6. 2x 2 &lt; = cx 2
  7. c&gt; = 2
  8. 我在这里缺少什么?

2 个答案:

答案 0 :(得分:2)

我不知道他在哪里获得了3,但是在这里可以证明(x + y) 2 &lt; = 2(x 2 + y 2 ):

2(x 2 + y 2 ) - (x + y) 2 = 2x 2 + 2y 2 - x 2 -2xy - y 2  = x 2 - 2xy + y 2 =(x - y) 2 &gt; = 0

至于为什么你的解决方案是错误的,你从你想要证明的东西开始,这很棘手。我想在不平等旁边加一个问号作为提醒,它还不知道:

  1. (x + y) 2 &lt; =? c(x 2 + y 2
  2. 然后每个后续步骤应该是暗示上一步骤的步骤,这样如果您达到一个绝对真实的陈述,您可以撤消步骤并获得证据。下一步很好:

    1. x 2 + 2xy + y 2 &lt; =? c(x 2 + y 2
    2. 现在你的第3步既不是你要证明的东西也不是你知道的真实。你能说的是一切都是x和y对称的,所以我们可以假设x = max(x,y)(因为如果y是更大的那个,你可以做任何你要做的事情但是用x和y做换)。

      但道格拉斯·扎尔指出,第4步并不等同于第2步,因为你增加了不平等的双方。

答案 1 :(得分:1)

首先,确切的常数通常并不重要。使用这种类型的渐近分析的一点是,它比Knuth,Flajolet和Sedgewick以及其他人使用的精确分析更简单。所以,即使你发现3不是最好的常数,那么呢?

其次,你犯了一个更容易捕获的错误,如果不是简单地写一堆方程式,希望它们是不言而喻的,你就写出了逻辑连接。这就像评论您的代码一样。

您想选择c以使不等式成立。这意味着你的含义应该是向上的:7意味着6意味着5意味着4意味着2意味着1.然而,你用2表示更大的表达来替换2的左手边,用更大的表达式替换2的右手边不平等4.第二部分对于向下的含义是有效的,但不是向上的含义。通过更多的工作,你仍然可以建立一个更好的常数,但你没有证明这一点,所以你的推导是不完整的。

我认为本书的解决方案是,如果c> = 1,则c(x ^ 2 + y ^ 2)> = cx ^ 2 + y ^ 2。如果c> = 3且x> = y,则cx ^ 2> = x ^ 2 + 2xy,因此cx ^ 2 + y ^ 2> = x ^ 2 + 2xy + y ^ 2。