好吧,我想我已经能够证明这一点f(x) = Theta(2^x)
(注意时间复杂度是一样的)。这也证明了g(x) = Theta(2^x)
as f(x) > g(x) > f(x-1)
.
首先,正如大家所指出的,很容易证明f(x) = Omega(2^x)
.
现在我们有这样的关系f(x) <= 2 f(x-1) + f(x/2)
(since f(x) > g(x)
)
我们将证明,对于足够大的x
,有一些常数K > 0
这样
f(x) <= K*H(x), where H(x) = (2 + 1/x)^x
这意味着f(x) = Theta(2^x)
, as H(x) = Theta(2^x)
,这本身就源于以下事实:H(x)/2^x -> sqrt(e) as x-> infinity
(阿尔法钨 http://www.wolframalpha.com/input/?i=Limit%20x-%3E%20infinity%20%282%2b1/x%29%5Ex/2%5Ex限制的链接)。
Now (warning:较重的数学,也许 cs.stackexchange 或 math.stackexchange 更适合)
根据阿尔法钨 http://www.wolframalpha.com/input/?i=%282%20%2b%201/x%29%5Ex(单击链接并查看 x = 无穷大附近的级数展开),
H(x) = exp(x ln(2) + 1/2 + O(1/x))
再次,根据阿尔法钨 http://www.wolframalpha.com/input/?i=%282%20%2b%201/x%29%5Ex%20-%202%2a%282%20%2b%201/%28x-1%29%29%5E%28x-1%29(单击链接(与上面不同)并查看 x = 无穷大的级数展开),我们有
H(x) - 2H(x-1) = [1/2x + O(1/x^2)]exp(x ln(2) + 1/2 + O(1/x))
and so
[H(x) - 2H(x-1)]/H(x/2) -> infinity as x -> infinity
因此,对于足够大的x
(say x > L
)我们有不等式
H(x) >= 2H(x-1) + H(x/2)
现在有一些K
(仅取决于L
(例如 K = f(2L)))使得
f(x) <= K*H(x) for all x <= 2L
现在我们继续进行(强)归纳(如果您愿意,您可以恢复为自然数)
f(x+1) <= 2f(x) + f((x+1)/2)
通过归纳法,右边是
<= 2*K*H(x) + K*H((x+1)/2)
我们之前证明了
2*H(x) + H((x+1)/2) <= H(x+1)
Thus f(x+1) <= K * H(x+1)