Big o 我的理由正确吗?尤其是对n^n不确定
a)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表示法是关于增
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)
。