1 题目
某个算法A的运行时间由递归式T(n)=7T(n/2)+n2表示;另一个算法A'的运行时间为T'(n)=aT'(n/4)+n2。若要A'比A更快,那么a的最大整数值是多少?
2 分析与解答
T(n)的a=7,b=2,n2=O(nlg 7 - ε),所以T(n)=Θ(nlg 7);
T(n)和T'(n)的f(n)部分相同,T'(n)的nlogb a=nlog4 a=n1/2* lg a,根据主定理的三种情况分析:
- 1/2* lg a > 2,那么只有当1/2* lg a < lg 7时,T'比T快,得16<a<49;
- 1/2* lg a = 2的情况下,T'比T快,得a=16;
- 先看递归式是否满足规则性条件,af(n/4) = a(n/4)2 = a/16*n2,需要a/16 < 1,得 a<16;
由此可见,第一种情况下可以得到a的最大值,为48。