一个经典约瑟夫问题的分析与解答
一、约瑟夫问题的由来
约瑟夫问题(Josephus)是由古罗马的史学家约瑟夫(全名Titus Flavius Josephus)提出的。它是一个出现在计算机科学和数学中的经典问题。在计算机编程的算法中,类似问题又称为约瑟夫环。(更多内容,可参阅程序员在旅途)
Josephus是1世纪的一名犹太历史学家。他在自己的日记中写道,他和他的40个战友被罗马军队包围在洞中。他们讨论是自杀还是被俘,最终决定自杀,并以抽签的方式决定谁杀掉谁。41个人排成一个圆圈,由第1个人开始报数,每报数到第3人该人就必须自杀,然后再由下一个重新报数,直到所有人都自杀身亡为止。然而Josephus 和他的朋友并不想遵从。首先从一个人开始,越过k-2个人(因为第一个人已经被越过),并杀掉第k个人。接着,再越过k-1个人,并杀掉第k个人。这个过程沿着圆圈一直进行,直到最终只剩下一个人留下,这个人就可以继续活着。Josephus将朋友与自己安排在第16个与第31个位置,于是逃过了这场死亡游戏。
约瑟夫问题的一般描述形式</