我需要找到n的递归解决方案,如果n为{1},则为{2}的幂,否则为T(n)= 1。
使用T(n)=3T(n/2)+n
的替换我可以归结为:
n=2^m,S(m)=T(2^(m-1))
但我不知道怎么做到这一点。
答案 0 :(得分:4)
这些类型的重复最容易通过主定理来解决算法分析,解释如下:
让 a 是一个大于或等于1的整数, b 是一个大于1的实数, c 是一个正数实数。鉴于表格再次出现 -
T(n)= a * T(n / b)+ n c 其中n> 1。 1,然后 n b 的幂,如果
您的复发的英文翻译
在Master Theorem中要理解的最重要的事情是重复中提到的常数 a,b和c 。让我们自己重复 - 例如T(n)= 3T(n / 2)+ n。
这种复发实际上是说它所代表的算法是这样的,
(解决大小 n 问题的时间)=(解决 3 大小 n / 2 问题所花费的时间)+ < EM>名词的
最后的 n 是合并那些 3 n / 2 大小问题的结果的成本。
现在,直观地你可以理解:
从以上三个直观的理解中,只出现了三个主定理的例子。
在你的例子中,a = 3,b = 2和c = 1.所以它落在case-3中,因为Log b a = Log 2 3,这是大于1(c的值)。
因此复杂性很简单 - Θ(n log b a )= Θ(n log 2 3功能)强>
答案 1 :(得分:2)
答案 2 :(得分:2)
您可以使用Masters定理解决此问题,也可以通过以下方式打开递归树:
答案 3 :(得分:1)
可以使用Masters theorem解决此类问题。
根据您的情况a = 3
,b = 2
和f(n) = n
。
所以c = logb(a) = log2(3)
,大于1,因此你属于第一种情况。所以你的复杂性是: