使用替换方法解决重现问题

时间:2016-02-16 17:36:53

标签: algorithm recurrence

所以我现在正在学习算法课程,我遇到了解决重现和获取运行时间的问题。我想知道是否有人可以通过外行术语向我解释如何使用替代方法解决。

书中的问题: 算法B通过递归求解大小为n-1的两个子问题来解决大小为n的问题 然后在恒定时间内组合解决方案。

这让我想出了下面的重复:T(n)=2T(n-1)+O(1)。然后我想出了O(1)=1。这给了我以下内容:T(n)=2T(n-1)+1

这是我尝试解决它

T(n)=2T(n-1)+1
=2(2T(n-2)+1)+1=4T(n-2)+3
=4(2T(n-3)+1)+3=8T(n-3)+7
=8(2T(n-4)+1)+7=16T(n-4)+15
=16(2T(n-5)+1)+15=32T(n-5)+31
=32T(2T(n-6)+1)+31=64T(n-6)+63

如果我做对了,我该如何继续获得运行时间?有人可以用外行的方式解释如何使用替代方法吗?

1 个答案:

答案 0 :(得分:1)

你已经关闭,但你可以格式化你的后方替换,这样会更有意义:

T(n)
=2^1T(n-1)+(2^1-1)
=2^2T(n-2)+(2^2-1)
=2^3T(n-3)+(2^3-1)
=2^4T(n-4)+(2^4-1)
=2^5T(n-5)+(2^5-1)
=2^6T(n-6)+(2^6-1)
...

您可以在此处看到n接近0的模式。它变成类似2^n + 2^n - 1的内容,并以Big-O表示法O(2^n)

我所掌握的一些见解可能会帮助您解决其他重复关系:重复发生n次,每次迭代乘以2.听起来像2^n