数列求和公式
等差、等比数列与调和级数
k=1∑nak=2n(a1+an)k=0∑naqk=1−qa(1−qn+1),k=0∑∞aqk=1−qa(q<1)k=1∑nk1=lnn+O(1)
递推方程
设序列a0,a1,…,an,…简记为{an},一个把an与某些个ai(i<n)联系起来叫做关于序列{an}的递推方程。
迭代法求解递推方程
迭代法:
-
不断用递推方程的右部替换左部
-
每次替换,随着n的降低在和式中多出一项
-
直到出现初值停止迭代
-
将初值并入对和式求和
-
可用数学归纳法验证解的正确性
换元迭代:
-
将对n的递推式换成对其他变元k的递推式
-
对k直接迭代
-
将解(关于k的函数)转换成为关于n的函数
差消法化简高阶递推方程
递归树
递归树:
-
递归树是迭代计算的模型;
-
递归树的生成过程与迭代过程一致;
-
递归树上所有恰好是迭代之后产生和式中的项;
-
对递归树上的项求和就是迭代后方程的解。
迭代在递归树中的表示
如果递归树某结点标记为W(m),
W(m)=W(m1)+⋯+W(mt)+f(m)+⋯+g(m),m1,…,mt<m
其中,W(m1),…,W(mt)称为函数项。
递归树的生成规则
主定理及其证明
主定理的应用背景
求解地推方程
T(n)=aT(n/b)+f(n)
二分检索:T(n)=T(n/2)+1
二分归并排序:T(n)=2T(n/2)+n−1
主定理:设a≥1,b>1为常数,f(n)为函数,T(n)为非负整数,且T(n=aT(n/b)+f(n),则
-
若f(n)=O(nlogba−ϵ),ϵ>0,那么T(n)=Θ(nlogba)
-
若f(n)=Θ(nlogba),那么T(n)=Θ(nlogbalogn)
-
若f(n)=Ω(nlogba+ϵ,ϵ>0),且对于某个常数c<1和充分大的n有af(n/b)≤cf(n),那么T(n)=Θ(f(n))
主定理的应用
求解递推方程
-
求解递推方程T(n)=9T(n/3)+n
解 递推方程中的 a=9,b=3,f(n=n)
nlog39=n2,f(n)=O(nlog39−1)
相当于主定理case1,其中ϵ=1
根据定理得到 T(n)=Θ(n2)
-
求解递推方程 T(n)=T(2n/3)+1
解 上述递推方程中 a=1,b=3/2,f(n)=1,nlog3/21=n0=1
相当于主定理的Case2,
根据定理得到T(n)=Θ(logn)
-
求解递推方程 T(n)=3T(n/4)+nlogn
解 上述递推方程中的 a=3,b=4,f(n)=nlogn
nlogn=Ω(nlog43+ϵ)=Ω(n0.793+ϵ)
取ϵ=0.2即可。
条件验证:
要使af(n/b)≤cf(n)成立,代入f(n)=nlogn,得到
3(n/4)log(n/4)≤cnlogn
只要c≥3/4,上述不等式可以对所有充分大的n成立。相当于Case3。
因此有 T(n)=Θ(f(n))=Θ(nlogn)
递归算法分析:
-
二分搜索
W(n)=W(n/2)+1,W(1)=1a=1,b=2,nlog21=1,f(n)=1,
属于Case2,W(n)=Θ(logn)
-
二分归并排序
W(n)=2W(n/2)+n−1,W(1)=0,a=2,b=2,nlog22=n,f(n)=n−1
属于Case2,W(n)=Θ(nlogn)
不能使用主定理的例子:
求解 T(n)=2T(n/2)+nlogn
解:a=b=2,nlogba=n,f(n)=nlogn
不存在ϵ>0 使右式成立 nlogn=Ω(n1+ϵ),
不存在c<1使af(n/b)≤cf(n)对所有充分大的n成立
2(n/2)log(n/2)=n(logn−1)≤cnlogn
递归树求解:
T(n)=nlogn+n(logn−1)+n(logn−2)+⋯+n(logn−k+1)=(nlogn)logn−n(1+2+⋯+k−1)=nlog2n−nk(k−1)/2=O(nlog2n)
// todo: 继续阅读《具体数学》第一章递推式与第二章和式。