通过诱导递归关系证明

时间:2016-04-30 01:42:39

标签: algorithm time-complexity recurrence induction

我正在分析找到算法的时间复杂性的不同方法,并且通过使用归纳证明试图解决这种特定的递归关系有很多困难。

我的RR是:    T(n)<= 2T(n / 2)+√n

我假设你会假设n并证明n-1?有人可以帮助我。

2 个答案:

答案 0 :(得分:1)

假设T(0)= 0,T(1)= 1(因为你没有给出任何微不足道的情况)。 因此,我们得到:T(2)= 3.41,T(4)= 8.82,T(6)= 14.57,T(8)= 20.48,T(10)= 26.51。这似乎是一个线性函数。

因此,我们可以假设T(n) <= C * n + o(n).

这可以通过归纳证明。假设T(k) <= C*(k) + o(k) = C*(k) + o(n).k<n

我们应该证明T(n) <= C*n + o(n). 使用重复,T(n) <= 2*T(n/2) + sqrt(n) <= 2*(C*(n/2) + o(n)) + sqrt(n) = C*n + (2*o(n) + sqrt(n)) = C*n + o(n)

因此,我们已经证明T(n) <= C*n + o(n),这可以保证T(n)至少O(n)

此外,可以证明T(x) = 2T(x/2) + sqrt(x), T(0)=0, T(1)=1的解决方案是T(x) = (2x-sqrt(2x))/(2-sqrt(2))

答案 1 :(得分:0)

如果使用归纳法证明,那么K的假设是正确的并证明2 * k或2 ^ k。

首先,检查T(1):

T(1)&lt; = 2T(1/2)+√n

(假设T(1/2)= 1)T(1)= 2 +√n<= O(√nlogn)

现在,假设T(k)为真。

=&GT; T(k)<= O(√nlogn) T(k)&lt; = 2T(k / 2)+√n&lt; = c(√nlogn)

证明,T(2k):

T(2k)&lt; = 2T(2k / 2)+√(2k)
=&GT; T(2k)<= 2(c(√klogk)+√(2k)
=&GT; T(2k)&lt; =√2* [2(c(k log k)+√(2k)] //(不等式) =&GT; T(2k)&lt; = [c&#39;(2k log 2k)] =&GT; T(2k)&lt; = O(√nlogn)

增长率:

(c