Math 求解递推T(n)=2T(n/2)和#x2BΘ;(1) 替换
所以我很确定它是O(n)(但它可能不是?),但是你如何用替换来解决它呢Math 求解递推T(n)=2T(n/2)和#x2BΘ;(1) 替换,math,big-o,recurrence,Math,Big O,Recurrence,所以我很确定它是O(n)(但它可能不是?),但是你如何用替换来解决它呢 为了简单起见,假设T(n),让我们假设O(1)项隐藏了一些常数c,因此递归是真的 T(n)=2T(n/2)+c 为了简单起见,我们还假设T(1)=c 你在冒险(正确地)猜测那件事 首先,我想清楚地假设Θ(1)=k,某个常数 接下来,使用替换法进行,我们得到 T(n)=2T(n/2)+Θ(1) =2T(n/2)+k =2{2T(n/4)+k)+k =4T(n/4)+3k =...
为了简单起见,假设T(n),让我们假设O(1)项隐藏了一些常数c,因此递归是真的 T(n)=2T(n/2)+c 为了简单起见,我们还假设T(1)=c 你在冒险(正确地)猜测那件事
首先,我想清楚地假设Θ(1)=k,某个常数 接下来,使用替换法进行,我们得到
T(n)=2T(n/2)+Θ(1)
=2T(n/2)+k
=2{2T(n/4)+k)+k
=4T(n/4)+3k
=...
=n.T(1)+(n-1)k
=n.k+(n-1)k
=2nk-k
=O(n).
如果您假定它为T(n)非常适合此问题:
比较给定方程
T(n)=2T(n/2)+c
用公式
T(n)=aT(n/b)+(nk logp n)
其中a>=1,b>1,k>=0,p为实
我们可以说它满足条件a>bk,因为a=2,b=2,k=0
那么,T(n)=θ(nlog b a)=θ(n)告诉我们为什么你认为它是O(n),实际上,也许它必须更大?因为如果你用O(n)来代替,你会得到T(n),这个问题似乎是离题的,因为它与编程无关。请参见帮助中心中的。试着解决两个稍微简单的问题:T(n)=2*T(n/2)和T(n)=T(n/2)+O(1)。这些问题中哪一个最像你的?你能把结果应用到你的问题上吗?在第五行之后,泛化应该是2^mt(n/2^m)+(2^m-1)k
。现在让我们做T(1)
,让2^m=n
得到第6行。