n*log n复杂度的差分方程推导
先从简单的形式,比如a(n)=a(n/2)+A的形式开始:
有以前的只是积累,通过一次推迟可以获得a(n)的通解形式:
x*x*x-x*x-(x*x-x)=0
Go
(x-1)*(x-1)*x=0
Go
a(n)=M*k+N ( 其中k为In n 和In 2)
Go
a(n)=M*(In n/In 2 )+ N
将它扩展为a(n)=s*a(n/2)+A
GO
(x-s)*(x-1)*x=0
GO
a(n)=M*s^k+N ( 其中k为In n 和In 2)
当s=2时有:a(n)=M*n+N
另外将上面的方程继续扩展为a(n)=s*a(n/2)+n:
Go
变化为b(k)=s*b(k-1)+2^k ( 其中k为In n 和In 2)
Go
b(k-1)=s*b(k-2)+2^(k-1)
Go
2*b(k-1)=2*s*b(k-2)+2^k
Go
b(k)-s*b(k-1)- 2* { b(k-1)- s *b(k-2) } =0
Go
x*x*x - s*x*x - 2 * { x*x - s *x } =0
Go
x*x*(x-s) - 2* x (x-s) =0
Go
x*(x-2)*(x-s) =0
当s不等于2时:
Go
a(n)=M*2^k + N *s^k +T ( 其中k为In n 和In 2)
Go
a(n)=M*n+ N * s^k +T
当s<2时, a(n)由2^k部分决定,为线形的。
当s>2时, a(n)由s^k部分决定,度量变为n^(In s /In 2)
当s等于2时:a(n)通项公式为2^k*(A*k+B)
Go
a(n)为n*(In n / In 2) 度量的。