T(n) ={ 2T(n/2) + n^2 when n is even and T(n) = 2T(n/2) + n^3 when n is odd
我分别解决了这个问题,根据大师定理的情况3,如果n为偶数,则得到的解为theta(n^2)
,如果n为奇数,则得到的是theta(n^3)
。但是我不应该单独解决这个问题。
如何一起解决这样的递归关系?
T(n) ={ 2T(n/2) + n^2 when n is even and T(n) = 2T(n/2) + n^3 when n is odd
是可以用硕士定理解决的还是硕士定理不适用的?
请帮助我。
答案 0 :(得分:1)
假设n = 2^k
为某个整数k
,因此n
等于100...00
。然后,您可以将主方法应用于重复的偶数部分。并获得theta(n^2)
。
现在假设最高有效位中还没有1
,例如100100..00
。因此,您的递归树中将至少有一个级别,其所有节点的总和为n^3 * constant
,因此您将获得theta(n^3)
。
因此,如果theta(n^2)
为2的幂,则答案为n
,否则为theta(n^3)
。但是,如果我们首先遇到奇数n
并且它等于基本情况,那么它可能不是三次。
与kelalaka聊天之后,我发现如果第一个1
是k
中第n
个,则如果k > (2/3)(1/lg 2)lg n
在右边,那么我们不在乎关于(n/2^k)^3
的更多信息。仍然是O(n^2)
。