Concrete Math 混凝土数学(具体数学)随笔

第一章:Recurrent Problems

三个例题:THE TOWER OF HANOI1.2 LINES IN THE PLANETHE JOSEPHUS PROBLEM

很有意思,讲的很好!

三个都是递推问题,我学了以后,感触很深,现在就讲讲本蒟蒻的心得吧~

汉诺塔问题:一个递推,原本的很简单,关键是例题的变种!

LINES IN THE PLANE

给你n条直线,问这n条直线最多可将平面划分为多少个区域?

书上告诉我们,我们应该先从小数据开始。

L0=1这是显然的,L1=2,L2=4,这些都能很快地得出。于是我们开始想,我们应该怎么样切第n刀,能将形成的用n-1刀切成的平面增加的更多?

经过简单的分析可得出,在第n刀时,最多也就只能新增加n个区域,于是,递推方程为:Ln=Ln-1+n; L0=1;此时,解递推方程(求助于数竞党)

Ln=n*(n+1)/2+1;

书上开始拓展,像V字这样切,最多可分得的平面有多少?额额,我不会,书上的方法太巧妙了。把V字看成两条相交的直线只是在相交的这个节点停住了,没有继续延伸下去,所以每有一个V字就代表有两个平面没有加入到新的区域,这样Zn=L2n-2N=2n^2-n+1;

THE JOSEPHUS PROBLEM

书上应该是最详细的版本,给出了当报数间隙是每隔一个人的通用O(1)解法,和其他间隙的递推公式,我读这一章时思考了很久才基本读懂,但还是有一些是不会的,望大神指点。

偶数时:我们发现,如图所示:

此时我们假设最后一幅图的幸存者是J(n),那么很容易推出,第一幅图J(2n)=2J(n)-1!;奇数时,得出J(2n+1)=2J(n)+1; J(1)=1;

关于

这个的证明,书上有两种:

第一种:

但我始终不知道那个式子怎么推出来的,TAT,这也是我最困惑的地方,望解答!

第二种看懂了:

简单点说首先明确一点当人数是2^n次方时,幸存者总是1!(可由前面式子推出)。那么我们把n分解为2^k+m2^k表示离n最近的那个数,则当过了2^k,幸存者是1,如果多了m个人,则又要进行新一轮的剔除,则刚好是2l+1,此处是关键。

原文地址:https://www.cnblogs.com/cssystem/p/2913045.html