具体数学-第2课(成套方法求解递归式)

约瑟夫环推广

上一节课说到,约瑟夫环问题的解是

f(n)=2l+1

其中n=2m+l
n写成二进制可以发现,f(n)就是n的二进制循环左移1位。
现在做一下推广,求解如下递推式:

f(1)=αf(2n)=2f(n)+βf(2n+1)=2f(n)+γ

可以设

f(n)=A(n)α+B(n)β+C(n)γ

同样,令n=2m+l
可以解出

A(n)=2mB(n)=2m1lC(n)=l

再从二进制角度理解一下,将递推式继续推广:

f(j)=αj,1j<df(dn+j)=cf(n)+βj,0jd,n1

可以得到解为

f((bmbm1b1b0)d)=(αbmβbm1βbm2βb1βb0)c

递推式求和

求解如下递推式:

R0=αRn=Rn1+βn+γ

用成套方法求解,设

Rn=A(n)α+B(n)β+C(n)γ

首先令Rn=1,可以得到α=1,β=0,γ=0,所以A(n)=1
再令Rn=n,可以得到α=0,β=0,γ=1,所以C(n)=n
最后令Rn=n2,可以得到α=0,β=2,γ=1,所以2B(n)C(n)=n2,所以B(n)=(n2+n)/2

再来一个更复杂的递推式:

R0=αRn=2Rn1+βn+γ

同样的方法,设

Rn=A(n)α+B(n)β+C(n)γ

首先令 Rn=1,可以得到 α=1,β=0,γ=1,所以 A(n)C(n)=1
再令 Rn=n,可以得到 α=0,β=1,γ=2,所以 2C(n)B(n)=n
这时候能不能令 Rn=n2 呢?答案是不能,因为如果Rn=n2,那么

n2=2(n1)2+βn+γ

显然不可能成立。
观察系数,可以令Rn=2n,可以得到α=1,β=0,γ=0,所以A(n)=2n
所以

A(n)=2n,B(n)=2n+1n+2,C(n)=2n+1

posted @   方而静  阅读(418)  评论(0编辑  收藏  举报
编辑推荐:
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· 从HTTP原因短语缺失研究HTTP/2和HTTP/3的设计差异
· 三行代码完成国际化适配,妙~啊~
点击右上角即可分享
微信分享提示