什么是f(n)= n ^ 4 + 100n ^ 2 + 50的上限?

时间:2017-05-04 18:16:05

标签: algorithm big-o complexity-theory asymptotic-complexity

我正在解决一些与Big-O相关的练习,我坚持这个:

Exercise - Find upper bound for f(n) = n^4 + 100n^2 + 50

我试图一步一步地解决它,但是出了点问题......:

1.=> n^4 + 100n^2 + 50 <= O(g(n))
2.=> n^4 + 100n^2 + 50 <= Cn        ** Added -n^4 to both sides
3.=> n^4 + 100n^2 + 50 -n^4 <= Cn -n^4
4.=> 100n^2 + 50 <= Cn - n^4         ** Put n in common
5.=> 100n^2 + 50 <= n(C - n^3)       ** Divided n in the opposite site
6.=> (100n^2 + 50)/n <= C -n^3       ** Assumed 1 for n
7.=> 100 + 50 <= C - 1                      
8.=> 151 <= C

有问题,因为答案是c = 2和n = 11。我在stackoverflow上看到了同样的问题,但没有一步一步的解决方案

3 个答案:

答案 0 :(得分:3)

很容易猜到这个函数的上界是O(n ^ 4),因为k * n ^ 4可以压倒n ^ 3的任意倍数和n的其他倍数小于4 n的某个值(其中k是倍数)。

我们举几个示例:

  1. n ^ 4&lt; 2 * n ^ 4,对于所有n> 1。

  2. n ^ 4 + n ^ 3&lt; 2 * n ^ 4,所有n> 2。

  3. 在你的情况下,你需要找到满足你方程的系数K,这样n ^ 4 + 100n ^ 2 + 50 <= k *(n ^ 4)。

    我会留下你要解决的正确等式,因为你所展示的那个明显不正确:

    n^4 + 100n^2 + 50 <= O(g(n))
    n^4 + 100n^2 + 50 <= O(n^4)
    n^4 + 100n^2 + 50 <= k * n^4
    n^4 + 100n^2 + 50 <= n^4 + 100*n^4 + 50*n^4
    n^4 + 100n^2 + 50 <= 151 * (n^4)
    // O(n^4) achieved, for all n >= 1.
    

    您可以通过将n ^ 2替换为t将其转换为二次方程来求解此方程式,然后将方程式简化为:

    t^2 + 100t + 50 <= k * t^2
    // left for you to solve this.
    // check for what value of `k` and `t`, this equation gets satisfied.
    

答案 1 :(得分:2)

据我所知,我们可以通过简单的方式解决这个问题: -

  1. n ^ 4 + 100 * n ^ 2 + 50 - 假设n ^ 2 = t
  2. ,可以将此方程式减少为二次方程式
  3. t ^ 2 + 100 * t + 50 - 方程式改变
  4. 使用二次公式并求解该公式(t ^ 2 + 100 * t + 50),我们得到两个答案。
  5. t = -100 +/- sqrt(100 ^ 2 - 4 * 1 * 50)/2.1
  6. t = -71.8&amp; -128.2 - 现在将值替换回n ^ 2
  7. n ^ 2 = -71.8&amp; -128.2
  8. n = sqrt(-71.8)&amp; sqrt(-128.2)= 8.47&amp; 11.32 - 查看上限数字并尝试解决可能是替代n的第一大数字。
  9. n = 11 因此,我们将n = 11作为可用于寻找上限的第一大数字
  10. 希望它有所帮助!

答案 2 :(得分:0)

<块引用>

n^4 + 100n^2 + 50 <= 2n^4 ,对于所有 n>=11。

因为,直到 10,n 将具有负值。