以下是解决方案,但我无法通过感应部分理解1部分证明。为什么你只能在一侧增加+ 2而在另一侧添加+4?
我们正在处理函数T(n) = 2n + 2
我们希望找到一个c,T(n) <= c * f(n)
代表大 n
我们有T(n) = 2n + 2
和f(n) = n
,因此我们需要2n + 2 <= c * n
我们解决 c 并获取2 + 2/n
2/n
,因此我们选择t >= 1
。我们会选择t=1
,所以c=4
归纳证明:
T(n) <= c * f(n)
(2n + 2) <= (4)(n)
+2 +4 <---- Don't understand
2n + 4 <= 4n + 4
2(n + 1) + 2 <= 4(n + 1)
T(n + 1) <= c * f(n + 1)
结论: 2n +2∈O(n)
答案 0 :(得分:1)
如果2n+2 <= 4n
,通过在左侧添加2,向右手添加4,则向左侧添加较少,因此如果2n+2 <= 4n
,则必须2n + 2 <= 4n + 4
所以,你基本上从2n+2 <= 4n
(从归纳假设认为是真的)跳到2n+4 <= 4n+4
,因为2<4
和2n+2<=4n
。您后来发现,在下一行中,n+1
对于诱导假设的主张也是正确的。