算法复杂度的差分方程推导(n*log n的扩展)
目前考虑到一种更复杂的情况,a(n)=s*a(n/2) + n^t
GO
变化为b(k)=s*b(k-1)+(2^k)^t ( 其中k为In n 和In 2)
GO
变化为b(k)=s*b(k-1)+2^(kt)
Go
这样就变化为了上篇中的形式,这里kt替换了以前的k,下面直接得出结果:
Go
x*(x-2^t)*(x-s)=0
当s不等于2^t时:
GO
a(n)=M*(2^t)^k+N * s^k + T ( 其中k为In n 和In 2)
当s<2^t时,a(n)由前面部分决定:
GO
a(n)=M*(2^t)^(In n/In 2)+N * s^k + T
Go
a(n)=M*(2^(In n/In 2))^t+N * s^k + T
Go
a(n)=M*n^t+N*s^k+T ,所以复杂度是n^t形式的。
当s>2^t时,由后面部分决定,所以复杂度是s^k形式,可以转化为n^(In s/In 2)形式。
当s等于2^t时:a(n)的通项公式是s^k*(A*k+B)
GO
因为s^k=n^(In s/In 2)=n^t
a(n)=n^t*(In n/ In 2) 度量的.