初中时期的一篇数学小文章,从春晚魔术讲到约瑟夫环,再讲到系统调度和电路设计。原稿照录,仅作脱敏处理。

辞旧迎新,龙年在悄无声息中缓缓而来。不知你是否记得,今年春节联欢晚会上,春晚“老顾客”刘谦带领14亿中国人一起玩了一场魔术。虽说其中有许多装神弄鬼的东西,但这场魔术其实是将约瑟夫环的原理重新演绎了一遍,他将魔术玩成了数学问题。

先来回顾一下魔术:一副扑克牌洗牌,背面朝上,分成两组,每组4张。

将两组牌分别对折,然后撕开,此时8张牌的位置为:四张一组,然后相同的四张第二组。

将最顶上和名字字数相同的牌数放到最下面,普通人放2~4张,具体放几张其实不重要,因为不会改变牌的相对顺序,不妨假定此时8张牌按照顺序分别是:A234 A234。

拿出一共3张牌插进去,此时顺序变成:4XXXXXX4。

藏牌,藏了4。

南北方人根据不同属性,从牌顶向中间插入1~3张牌,这个步骤不重要,只要保证最末的一张没动就行,此时牌面变成:XXX4。

男生丢1张,女生丢2张;此时假设男生手里是:BCDEF4 女生:CDEF4。

执行“见证奇迹的时刻”循环,每说一个字 就取出牌堆顶一张牌放置在牌堆底。

执行如下操作,从牌堆顶开始,每次先将牌堆顶的一张牌放在牌堆底 再扔掉牌堆顶的一张牌 重复以上操作直到只剩一张牌。

检查此牌和放置在一旁的牌是否吻合,若吻合,则魔术成功。

乍一看,这实在是太神奇了。其实子魔术的原理就是约瑟夫环。那么什么是约瑟夫环呢?已知 n 个人(以编号1,2,3…n分别表示)围坐在一张圆桌周围。从编号为 k 的人开始报数,数到 m 的那个人出圈;他的下一个人又从 1 开始报数,数到 m 的那个人又出圈;依此规律重复下去,直到剩余最后一个胜利者。实验中最重要的其实是倒数第2步,此步骤将要与另外一张牌重逢的牌洗到了“生位”,前面的所有步骤都是为了这一步骤做的铺垫。

生活中也有运用到约瑟夫环的地方:

在系统调度中。如果系统中有N个进程需要运行,但系统只能同时运行M个进程,可以使用约瑟夫环问题来决定进程的运行顺序,以确保系统的稳定性和效率。

在电路设计中。约瑟夫环问题还可以用于确定信号的路由顺序,通过使用约瑟夫环算法,可以最小化路由冲突和延迟。

昨天晚上半张牌的重逢其实是约瑟夫还与魔术的重逢,是数学运用广泛性的体现。从中我们能够体会到数学的乐趣和魅力。