离散数学及其应用学习笔记——主定理(Master Theorem)的证明

先贴出两个初中数学公式
使用换根公式和对数倒数性质可以得出这样的结论:

alogbn=nlogba

等比数列求和公式:

Sn=anqa1q1

这个关于f(n)的公式可以估计满足分治关系的函数的阶:如果 f(n)=af(nb)+g(n) 那么有:

f(n)=akf(1)+j=0k1ajg(nbj)

主定理(MasterTheorem):

f 是满足递推关系:

f(n)=af(nb)+cnd

的增函数,其中 n=bk , k 是一个正整数, a1 , b 是大于1的正整数, c d 是实数,满足 c 是正的且 b 是非负的。那么 f(n)

  1. O(nd) a<bd

  2. O(ndlogn) a=bd

  3. O(nlogba) a>bd

怎么证明呢?可以分为三种情况来证明:

  1. a<bd
  2. a=bd
  3. a>bd

首先可以将 f(n)=akf(1)+k1j=0ajg(nbj) ,代入主定理递推关系,因为 g(n)=cnd ,可以得到

f(n)=akf(1)+cj=0k1aj(nbj)d=akf(1)+cj=0k1aj(nbj)d

由于 n=bk ,所以 k=logbn

优先考虑 a=bd 的情况:

f(n)=akf(1)+cj=0k1aj(nbj)d=akf(1)+cj=0k1aj(nbj)d=(bd)logbnf(1)+cndj=0k1(bd)jbjd=ndf(1)+cndk=ndf(1)+cndlogbn

所以 a=bd 时, f(n) O(ndlogn)

然后是 abd 的情况,使用等比数列求和公式可以做出如下推导:

f(n)=akf(1)+cj=0k1aj(nbj)d=akf(1)+cj=0k1aj(nbj)d=akf(1)+cndj=0k1(abd)j=akf(1)+((abd)k1)cndbdabd=akf(1)+(abd)logbncbdndabd+ndbdcbda=nlogbaf(1)+(abd)logbncbdndabd+ndbdcbda=nlogbaf(1)+nlogbabdcbdndabd+ndbdcbda=nlogbaf(1)+nlogbandcbdndabd+ndbdcbda=nlogbaf(1)+nlogbacbdabd+ndbdcbda=nlogbaf(1)+nlogbandcbdndabd+ndbdcbda=C1nd+C2nlogba

这里 C1=bdcbda C2=f(1)+bdcabd

我们还可以推导出结论:

a<bd

logba<logbbd=d

a>bd

logba>logbbd=d

同时使用已经得出的结论 f(n)=C1nd+C2nlogba ,可以完成证明

  1. O(nd) a<bd

  2. O(nlogba) a>bd

至此,主定理的证明全部完成。

你可能感兴趣的:(数学,数学与算法)