具体数学-第1课(递归求解实际问题)

第一节课讲的都是一些很简单的东西,这里就一带而过了。

汉诺塔问题

这是个老生常谈的问题了,n个盘子,3个柱子的汉诺塔问题,最少移动次数记为T(n)
那么T(n)=2T(n1)+1
边界条件为T(0)=0
解出T(n)=2n1
验证可以采用数学归纳法,这里就不多说了。

直线分割平面问题

这也是个高中问题了,n条直线最多分割平面为几部分,记为L(n)
那么L(n)=L(n1)+n
边界条件为L(0)=1
解出L(n)=n(n+1)/2+1

这题有个扩展,n个V型最多分割平面为几部分?
解决思路如下:

QybZnO.jpg

如上图所示,将V型补全(红色虚线部分),那么就转化为了2n条直线划分平面数,那么n个V型划分数只要减去2n就行了,所以答案为:

Z(n)=L(2n)2n=2n2n+1

约瑟夫环问题

这个问题暴力求解的话模拟就行了,复杂度是O(n2)的,这里探索一种直接求解的方法。
分两种情况讨论:
当有2n个人时,踢掉n个人之后,情况如下图所示

QybeBD.jpg

观察对应关系可以得出

J(2n)=2J(n)1

同理,当有2n+1个人时,踢掉n+1个人之后,情况如下图所示

QybmHe.jpg

观察对应关系可以得出

J(2n+1)=2J(n)+1

边界条件为

J(1)=1

这个递推式很难求解,但是枚举出前面几项可以发现,如果令n=2m+l,其中2m是小于等于n的最大2的幂,那么

J(n)=2l+1

正确性可以通过数学归纳法求证。

第一节课就讲了这么多,约瑟夫环还有很多问题值得探讨,下节课继续。。。

posted @   方而静  阅读(120)  评论(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的设计差异
· 三行代码完成国际化适配,妙~啊~
点击右上角即可分享
微信分享提示