归纳总和的大O证明

时间:2014-01-28 14:07:50

标签: algorithm big-o computer-science

我一直试图解决这个问题:

Σ(k=0,n)3k = O(3n)

我一直在网上浏览各种各样的东西,但我似乎无法解决它。我知道它涉及Big O的正式定义,其中

|f(x)| <= C*|g(x)|, x>=k

由于它们是相同的,我假设C是我必须通过归纳找到的一些值来证明原始陈述,并且k = 0.

感谢您的帮助。

3 个答案:

答案 0 :(得分:6)

Σ(k=0,n)3k 
= 30 + 31 + ... + 3n
= (1 - 3n+1) / (1 - 3) ; sum of geometric series
= (3/2)*3n - k
<= c*3n ; for c >= 3/2 
= O(3n)

答案 1 :(得分:1)

这里不需要感应;该总和是一个几何系列,并具有封闭形式的解决方案

= 1(1-3^(n + 1))/(1-3) = (3^(n + 1) - 1)/2


= (3*3^n - 1)/2

选择C = 3/2且F = 3/2 * 3 ^ n - 1/2,G = 3 ^ n,这满足O(3 ^ n)的要求,但实际上在实践中,尽管它可能被认为是非正式和草率的,你不会真正担心一个确切的常数,因为任何常数都可以满足Big-O。

答案 2 :(得分:0)

您可以将其重写为3 n *(1 + 1/3 + 1/9 + .... 1/3 n )。

该总和有一个上限。计算该无限级数的极限。

从那里,很容易得到一个好的C,例如:2。