具体数学 - 约瑟夫问题 The Josephus Problem

news/2025/2/24 14:58:03/文章来源:https://www.cnblogs.com/wenbinteng/p/18734078

问题定义:从围成标有记号 \(1\)\(n\) 的圆圈的 \(n\) 个人开始,每隔一个删去一个人,直到只有一个人幸存下来,记最后幸存者的编号为 \(J_n\)

我们假设一开始有 \(2n\) 个人,第一轮后剩下的人编号为 \(1,3,5,\dots,2n-1\),而这恰好是游戏从 \(n\) 个人开始的情形,只不过每个人的编号恰好是 \(n\) 人情形的两倍减一。所以我们可以推断

\[J_{2n} = 2J_n - 1, n \geq 1. \]

对于 \(J_{2n+1}\) 个人的情形,编号为 \(1\) 的人恰好是在编号为 \(2n\) 的人后面被删除,那么第一轮后剩下的人编号为 \(3,5,7,\dots,2n-1,2n+1\),这也恰好是游戏从 \(n\) 个人开始的情形,只不过每个人的编号恰好是 \(n\) 人情形的两倍加一。所以我们可以推断

\[J_{2n+1} = 2J_n + 1, n \geq 1. \]

综上我们得到约瑟夫问题的递归关系

\[\begin{align*} J_1 &= 1, \\ J_{2n} &= 2J_n - 1, n \geq 1, \\ J_{2n+1} &= 2J_n + 1, n \geq 1. \end{align*} \]

封闭形式求解

关于约瑟夫问题封闭形式求解方法,我们一般先列出递归关系的前几项, 观察数据的规律,猜测出封闭形式的解,然后使用数学归纳法进行证明。

数学归纳法证明

首先我们列出递归关系的前几项

\(n\) 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 ...
\(J_n\) 1 1 3 1 3 5 7 1 3 5 7 9 11 13 15 1 ...

我们可以观察到,根据 2 的幂次可以将数据进行分组。每组的初始 \(J_n\) 总是 1,每次递增 2,最后 \(J_n\) 总是等于 \(n\)。因此,如果我们将 \(n\) 写成 \(n = 2^m + l\) 的形式, 其中 \(2^m\) 是不超过 \(n\) 的 2 的最大幂,而 \(l\) 则是剩下的数,那么递归式的解看起来是

\[J_{2^m+l} = 2l + 1, m \geq 0, 0 \leq l < 2^m. \]

下面我们对 \(m\) 使用数学归纳法证明:

  1. \(m=0\) 时必定有 \(l=0\), 那么 \(J_1=1\),符合初值;

  2. 假设 \(m=k-1\) 时命题成立;

  3. \(m = k\) 时,

    • 如果 \(l\) 是偶数,则 \(J_{2^k+l} = 2J_{2^{k-1}+\frac{l}{2}} - 1 = 2(2\frac{l}{2}+1) - 1 = 2l+1,\)
    • 如果 \(l\) 是奇数,则 \(J_{2^k+l} = J_{2^k+l-1+1} = 2J_{2^{k-1}+\frac{l-1}{2}} + 1 = 2(2\frac{l-1}{2}+1)+1 = 2l+1.\)

则命题成立。

约瑟夫问题扩展

问题1:在约瑟夫游戏中,倒数第二个幸存者的编号 \(I_n\) 是多少?

我们可以先列出 \(n\) 较小时的几种情况

\(n\) 2 3 4 5 6 7 8 9 10 11 12 ...
\(I_n\) 2 1 3 5 1 3 5 7 9 11 1 ...

我们可以观察到,根据 2 的幂次可以依然将数据进行分组,而且其拥有与 \(J_n\) 一样的递归性质。那么我们猜测递归式的解为

\[\begin{align*} I_2 &= 2, \\ I_{3 \times 2^m + l} &= 2l + 1, m \geq 0, 0 \leq l < 2^m. \end{align*} \]

下面我们使用数学归纳法证明

  1. \(m=0\) 时必定有 \(l=0\) ,那么 \(I_3 = 1\),符合初值;
  2. 假设 \(m=k-1\) 时命题成立;
  3. \(m=k\) 时,
    • 如果 \(l\) 是偶数,则 \(I_{3\times2^k+l} = 2I_{3\times2^{k-1}+\frac{l}{2}}-1 = 2(2\frac{l}{2}+1)-1 = 2l+1,\)
    • 如果 \(l\) 是奇数,则 \(I_{3\times2^k+l} = I_{3\times2^k+l-1+1} = 2I_{3\times2^{k-1}+\frac{l-1}{2}}+1 = 2(2\frac{l-1}{2}+1)+1 = 2l+1.\)

则命题成立。

问题2:约瑟夫问题的二进制性质。

假设 \(n\) 的二进制表示为 \(n=(b_mb_{m-1}\dotsb_1b_0)_b,m = \lfloor \log n \rfloor\),其中 \(b_m=1\)。注意到 \(n=2^m+l\),有

\[\begin{align*} n &= (1b_{m-1} \dots b_1b_0)_b, \\ l &= (0b_{m-1} \dots b_1b_0)_b, \\ 2l &= (b_{m-1} \dots b_1b_00)_b, \\ 2l+1 &= (b_{m-1} \dots b_1b_01)_b, \\ J_n &= (b_{m-1} \dots b_1b_0b_m)_b. \end{align*} \]

这里我们得到了

\[J_{(b_mb_{m-1} \dots b_1b_0)_b} = (b_{m-1} \dots b_1b_0b_m)_b. \]

即我们将 \(n\) 向左循环移动一位就可以得到 \(J_n\)

问题3:约瑟夫问题的一般形式。

我们对约瑟夫问题进行进一步推广,假设其递归关系为

\[\begin{align*} f(1) &= \alpha, \\ f(2n) &= 2f(n) + \beta, \\ f(2n+1) &= 2f(n) + \gamma. \end{align*} \]

我们先列出递推关系前几项

\(n\) 1 2 3 4 5 6 7 8 9 ...
\(f(n)\) \(\alpha\) \(2\alpha+\beta\) \(2\alpha+\gamma\) \(4\alpha+3\beta\) \(4\alpha+2\beta+\gamma\) \(4\alpha+\beta+\gamma\) \(4\alpha+3\gamma\) \(8\alpha+7\beta\) \(8\alpha+6\beta+\gamma\) ...

我们可以观察到以下规律:\(\alpha\) 的系数是 2 的幂且不超过 \(n\)\(\beta\) 的系数从 2 的幂次减一开始逐渐递减到 0,\(\gamma\) 的系数从 0 逐渐递增到 2 的幂次减一。基于上述规律,我们假设约瑟夫一般问题递归关系的封闭形式解可以表示为

\[f(n) = A(n)\alpha + B(n)\beta + C(n)\gamma. \]

其中各项系数为

\[\begin{align*} A(n) &= 2^m, \\ B(n) &= 2^m - 1 - l, \\ C(n) &= l. \end{align*} \]

满足 \(n=2^m+l, 0 \leq l < 2^m, n \geq 1\)。上式可以使用数学归纳法进行证明。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/889031.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Sa2VA环境搭建推理测试

引子 Sa2VA模型通过结合SAM-2和LLaVA,将文本、图像和视频统一到共享的LLM标记空间中,能够在少量指令微调下执行多种任务,如图像/视频对话、指称分割和字幕生成。该模型在视频编辑和内容创作中展现出强大的性能,在相关基准任务中达到了SOTA水平。OK,那就让我们开始吧。一、…

20-bluecms代码审计、thinkphp相关知识cve和cnvd编号申请

1、对bluecms进行代码审计,分析复现文件上传、ssti模板注入、文件删除等漏洞 文件上传审计admin/tpl_manage.php 文件发现,在do_edit模块有三个参数(act = do_edit、tpl_name = 写入文件名称、tpl_content = 写入内容,且代码中未对文件名过滤,导致可以上传任意文件。查看对…

ios SDK AB 开关切换

在数据库的这个服务器 然后再ctest1数据库新建编辑器然后查询select* fromapp_config ac whereaccess_no = 12100186 //这个是应用IDand module = abSwitchand param_name = export_otel_ab查到后,把param_value改为B,或者A,然后回车,然后点击图中的保存 保存后等两分钟,…

CS Course Learning

【李宏毅】2024大语言模型课程 课程学习课程链接:https://speech.ee.ntu.edu.tw/~hylee/genai/2024-spring.php Bilibili相关视频链接:https://www.bilibili.com/video/BV1XS411w7qrGPT: Autoregressive model In-context LearningChain of Thoughts (CoT) Tree of Thoughts …

跟着狂神学markdown作业01天

markdown学习 标题 一共可以做六级标题 格式为#+空格+标题 几级标题就打几个空格 字体 粗体:hello,world 两边各加两个*号 斜体:hello,world 两边各加一个*号 粗体+斜体:hello,world 两边各加三个***号 删除效果:hello,world 引用选择狂神说java,走向人生巅峰(用>…

java知识面试day4

1.常见的关键字有哪些static:静态变量,静态变量被所有对象共享,在内存中只有一个副本。具有静态变量,静态方法块,静态代码块(在类加载时候被指执行一次),静态内部类:非静态内部类需要依赖外部实列,但静态内部类不需要。final 基本数据类型用final修饰不能修改,引用对象被…

[QOJ 8366] 火车旅行

毒瘤边化点,有人说非排列只需要加一些细节,但是这个题毒瘤在于非排列。 statement 给定一个长度为 \(n\) 的序列 \(a_i\)。 对于位置 \(x\) 和 \(y\):若 \(y < x\) 且 \(max_{y < i < x} a_i < min(a_x, a_y)\) 则位于 \(x\) 的棋子可以花费 \(L_x\) 的代价跳到…

uipath更新到最新版本2025.0.161出现严重问题

uipath更新到最新版本2025.0.161出现严重问题:1. 打开既有项目,会报CS0246错误2. 无法创建新项目,一直报无权限访问尝试办法:1. 重新安装uipath,未解决2. 删除项目重新添加,未解决3. 给账户添加最高权限,未解决 workaround:把项目从默认文件夹复制到其他盘(除了C盘外…

Python正则表达式之re.compile函数

​在Python编程语言中,re.compile函数是正则表达式模块(re)中的一个核心组件,它负责将文本形式的正则表达式编译成一个正则表达式对象。这个对象随后可以被用来执行高效的模式匹配操作,如查找、替换或者分割字符串等。理解并有效利用 re.compile对于编写高效且可维护的正则表…

Unity Addresable打包总结第二弹

前言 前文介绍了Addressables在本地打包是怎么使用,这里介绍下怎么打远程包,并且怎么做到打增量包,Lets Go! 远程包新建一个Group,将它的 BUild & Load Paths 改为Remote,并将RemoteRes资源文件夹塞入Remote Group,其中包含一个Capsule.prefab资源:在Addressabvles …

BUUCTF-RE-[2019红帽杯]easyRE

这道题很难,但是并不难在他的解题要用到的方法和技巧上,而是难在它的题目设计。做的过程中真的有一种闯关的感觉,非常有趣 首先我们通过对字符的定位我们可以来到sub_4009C6函数 __int64 sub_4009C6() {__int64 result; // raxint i; // [rsp+Ch] [rbp-114h]__int64 v2; // …

2025年免费项目管理软件哪家强?5款零成本工具实测报告

在项目管理领域,众多团队尤其是初创企业和小型项目组,都渴望找到功能实用且零成本的软件来助力项目推进。2025 年,有 5 款免费项目管理软件表现突出,它们分别是禅道、Trello、Asana、Redmine 以及国内新兴的钉钉项目管理相关功能,下面将为大家带来详细的实测报告。一、禅道…