我正在解决一些与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上看到了同样的问题,但是没有一个逐步解决的方法

最佳答案

很容易猜测这个函数的上界是o(n^4),因为k*n^4可以在n的某个值(k是一个倍数)之后,压倒n^3的任何倍数和n小于4的其他倍数。
我们举几个例子:
n^4<2*n^4,所有n>1。
n^4+n^3<2*n^4,所有n>2。
在你的例子中,你需要找到满足方程的系数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.

你可以用t代替n^2,把这个方程转换成二次方程,然后方程化为:
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.

关于algorithm - f(n)= n ^ 4 + 100n ^ 2 + 50的上限是多少?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/43790077/

10-11 00:51