Math 求解递推T(n)=2T(n/2)和#x2BΘ;(1) 替换

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 =...

所以我很确定它是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
     =...
     =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行。