题目
2^n+1 = O(2^n) 正确吗?A. 对B. 错
$2^{n+1} = O(2^n)$ 正确吗?
A. 对
B. 错
题目解答
答案
A. 对
解析
本题考查算法复杂度中大O符号的定义及应用。解题思路是根据大O符号的定义,判断是否存在正常数 $c$ 和 $n_0$,使得对于所有 $n \geq n_0$,都有 $2^{n + 1} \leq c \cdot 2^n$ 成立。
根据大O符号的定义,如果存在正常数 $c$ 和 $n_0$,使得当 $n \geq n_0$ 时,函数 $f(n)$ 满足 $f(n) \leq c \cdot g(n)$,则称 $f(n) = O(g(n))$。
在本题中,$f(n)=2^{n + 1}$,$g(n)=2^n$。我们对不等式 $2^{n + 1} \leq c \cdot 2^n$ 进行化简:
根据指数运算法则 $a^{m+n}=a^m\cdot a^n$,可得 $2^{n + 1}=2^n\cdot2$,则原不等式变为 $2^n\cdot2 \leq c \cdot 2^n$。
因为对于 $n \geq 0$,$2^n>0$,两边同时除以 $2^n$,得到 $2 \leq c$。
我们可以取 $c = 2$,$n_0 = 0$,当 $n \geq n_0$ 时,$2^{n + 1}=2^n\cdot2\leq 2\cdot 2^n$ 恒成立。
所以根据大O符号的定义,$2^{n + 1} = O(2^n)$ 是正确的。