Big o 我的理由正确吗?尤其是对n^n不确定

Big o 我的理由正确吗?尤其是对n^n不确定,big-o,Big O,a) f(n)=n^n+6n^5-11=O(n^n)。 对正:任意整数≥ 7将使n^n成为主导 b) f(n)=3logu 2n+12n=O(logn)。 对正:3log_2n+12n≤ 15log_2n,表示n≥ 二, c) f(n)=30+2n^4–20n^2+n=O(n^4)。 对正:30+2n^4–20n^2≤ 12n^4,表示n≥ 一, d) f(n)=7n^(5/7)+2n=O(n^(5/7)) 理由:7n^(5/7)+2n≤ 9n^(5/7),用于n≥ 1.Big-O表示法是关于增

a)
f(n)=n^n+6n^5-11
=O(n^n)。 对正:任意整数≥ 7将使n^n成为主导

b)
f(n)=3logu 2n+12n
=O(logn)。 对正:3log_2n+12n≤ 15log_2n,表示n≥ 二,

c)
f(n)=30+2n^4–20n^2+n
=O(n^4)。 对正:30+2n^4–20n^2≤ 12n^4,表示n≥ 一,

d)
f(n)=7n^(5/7)+2n
=O(n^(5/7))
理由:7n^(5/7)+2n≤ 9n^(5/7),用于n≥ 1.

Big-O表示法是关于增长的,因此您的
n^n
关于
a)
的理由是正确的。请记住始终关注最高学位的术语,因为随着
n
的增加,它的增长速度总是比其他术语快


因此,虽然
a)
c
是正确的,但对于
b)
我会说它是O(n),因为线性复杂度增长比对数复杂度快。对于
d)
它又是O(n),因为
7n^(5/7)
实际上在收缩,所以
12n
增长得更快。

我将b)计算为
(3*log_2(n))+(12*n)
,所以它是
O(n)
d)
n=1000
7n^(5/7)+2n=2972.6>1250.5/9n->您的分类错误。正确的方法是
O(n)
。通常,我们推导
O()
表达式的方法是删除所有与存在的其他子表达式相比变得非常小的加法子表达式。然后去掉任何常数因子。也就是说,a)
n^n+6n^5-11
,11的增长速度比
n^5
慢,所以放下它,
n^5
的增长速度比
n^n
慢,放下它->顺序是
O(n^n)
。同样,b)
log(n)
的增长速度比
n
慢,所以放下
3log\u2n
项,去掉常数,得到
O(n)