刘谦春晚纸牌魔术背后的数学—海明码原理简介

在昨天2024年的春晚舞台上,魔术大师刘谦以一场令人拍案叫绝的纸牌魔术再度震撼全场。他巧妙地利用了数学原理,精准无误地让观众“随机”选择的纸牌完成了配对,尤其是令人忍俊不禁的是主持人尼格买提的纸牌却没有如愿配对,小尼碎了的话题也冲上了今天大年初一的热搜。然而,在这看似神秘莫测的魔术背后,却隐藏着一种在信息科学领域中广泛使用的纠错编码技术,小尼的操作有误,也就让他最后的结果与其他亲身参与的观众不一样了,从某种程度上讲参与者手上的最后半张牌就是一位校验码,查看校验码也就能知道你之前的操作是不是正确。那么现在,我们就从这场精彩的纸牌魔术出发,一同探索海明码等纠错码背后的原理。

  • 刘谦魔术背后的约瑟夫问题

刘谦魔术的前几步其实都是个看似建立纸牌随机顺序的过程(但其实还是有序的哈,只是男性与女性的卡牌顺序可能不同),而最后一步“好运留下来烦恼丢出去”恰恰是一个约瑟夫问题,这个弃牌过程保证了无论男女都是留下编号为1的牌,也就正好是能和之前保留半张牌的配对牌。因此探索这个问题,我们先简要介绍一下约瑟夫问题。

约瑟夫问题(Josephus Problem)是一个著名的理论和计算机科学中的数学难题,源于一个关于罗马历史学家弗拉维奥·约瑟夫斯的传说。故事中,约瑟夫和其他一些人被围困,他们决定通过一种自裁的方式减少人数以求得部分人的生存:他们站成一个圈,并从某个人开始报数,数到特定数值(比如每数到第M个人)时,这个人会被杀掉,然后从下一个人继续报数,直到最后只剩下一个人为止。在现代数学和算法领域中,约瑟夫问题通常形式化为以下描述:

设有N个人排成一个圆圈,从某个位置(例如编号为1的人)开始按顺时针方向报数,每当数到第M个人时,该人会被移出圆圈。接着从下一个未移除的人继续从1开始报数,直至圆圈中只剩余最后一个人。这个问题要求确定的是在给定N和M的情况下,最后幸存下来的人的初始编号是多少。解决约瑟夫问题一般采用递归或迭代的方法。

在刘谦的魔术中,每一张纸牌就如同一个比特位,通过巧妙的设计和预设规则(即海明码的构造原则),使得无论观众如何随机选择,魔术师都能准确判断出原始的信息内容(即选中的纸牌),而主持人出现的操作失误,也让他没有得到预期中的结果,所以从这个角度上看,这个魔术本质上讲其实还是可以等价为一个纠错问题,也就如何在校验位上把数据流中的错误体现出来。

  • 海明码简介

在计算机课程,尤其是纠错原理中,我们第一个接触的机制大概就是奇偶校验位,也就是在一段数据流的最后设计一个校验位,如果整个信息流中有奇数个1,那么校验位就是1,如果有偶数个1那么校验位就是0。

海明码是一种基于奇偶校验机制的,用于检测和纠正单个比特错误的线性纠错码,由美国数学家理查德·卫斯里·海明于1950年提出。如同刘谦在表演前对纸牌进行精心设计与安排,海明码通过对数据位增加冗余信息的方式,使得每个数据位都与其他几个数据位之间存在特定的关系,从而能在传输过程中发现并修正单一比特的错误。

我们知道之前很多如串口数据、网络传输包一旦校验失败,则整包重传,而海明码则不需要重传,他可以在添加校验位的情况下,自动找到错误码位置并更正,避免了整包重传的资源浪费情况发生。

而接下来我们就可以回答校验位个数的问题了,由于以16位数据为例,在已知只有一位数据错的情况下,校验位需要表示的情况共有2^4=16种,也就是需要4位表示,而如果是1024位数据,那么需要表示2^10=1024种情况,也就是10位校验位。那么拓展一下如果有两位错呢?那么这种情况下由于两位数据是任意的,从概率上讲是独立事件,校验位翻倍即可。

  • 海明码工作原理

1.基于偶校验设计

海明码一般使用偶校验,也就是当参与校验的校验位1的个数为奇数,则校验位为1;反之1的个数为偶数时,则校验位为0。

例子:数据位1111的 偶校验就是 11110

一般来说单纯的我校验只能检测一位数据是否有错,但无法纠错。

如我们刚刚所说,我们的校验位所能表示的情况数量必须大于数据流总长度,也就是2^校验位数 >= 校验位数 + 数据位数 +1

以数据位取4为例,代入可得校验位等于3

2.校验位与数据位的设置

在海明码的数据流中凡是2^n(其中n为正整数)的位置都是校验位,其余都是数据位,以7个bit的数据流为例,如下图:

位置

1

2

3

4

5

6

7

用途

校验位

校验位

数据位

校验位

数据位

数据位

数据位

3.确定校验位的校验范围

接下来需要确认校验位要用来校验哪些数据位。

首先把所有位置的二进制码表示写出来,左补齐至校验位个数,如本例中校验位为3,那么左补0使二进制码长度满3位。

位置

1

2

3

4

5

6

7

用途

校验位

校验位

数据位

校验位

数据位

数据位

数据位

所在位置二进制码

001

010

011

100

101

110

111

其中校验位左边的0是*表示,也就是可以指代任意多个0,右边的0用?表示,即只能代表一个0。如下:

位置

1

2

3

4

5

6

7

用途

校验位

校验位

数据位

校验位

数据位

数据位

数据位

所在位置二进制码

001

010

011

100

101

110

111

校验位通配符表示

*1

*1?

1??

4.确定校验矩阵

接下来将所有数据位按照上述匹配规则进行分组,(其中?代表一位,*代表任意位)。

位置

1

2

3

4

5

6

7

用途

校验位

校验位

数据位

校验位

数据位

数据位

数据位

所在位置二进制码

001

010

011

100

101

110

111

校验位通配符表示

*1

*1?

匹配*1与*1?;即1、2两组

1??

匹配*1与1??;即1、4两组

匹配*1?与1??;即1、4两组

匹配*1、*1?与1??即匹配所有组

纵向的匹配分组如下:

校验位位置

1

2

4

校验位通配符表示

*1

*1?

1??

匹配结果

001(1)

010(2)

100(4)

011(3)

011(3)

101(5)

101(5)

110(6)

110(6)

111(7)

111(7)

111(7)

因此我们可以确定

校验位1 负责校验1、3、5、7四位

校验位2 负责校验2、3、6、7四位

校验位4 负责校验4、5、6、7四位

假如要传递的数据为1110,那么如果进行偶校验,那么这段汉明码应该为1111110

5.纠错过程

我们刚刚也提到了1、2、4三个校验位将全部数据分为三组,那么不论哪一位出错,都可以得校验失败的结论,这个并不难理解。而海明码的纠错原理如下:

位置

1

2

3

4

5

6

7

用途

校验位

校验位

数据位

校验位

数据位

数据位

数据位

所在位置二进制码

001

010

011

100

101

110

111

校验位通配符表示

*1

*1?

匹配*1与*1?;即1、2两组

1??

匹配*1与1??;即1、4两组

匹配*1?与1??;即1、4两组

匹配*1、*1?与1??即匹配所有组

所属分组

1

2

1、2

4

1、4

2、4

1、2、4

然后你会发现有以下几种情况:

  • 三组校验全错:首先第7位属于三个组,那么如果三个组都校验失败则可知是第7位错。
  • 如果单独一组错这时可知是校验位出错,因为只有校验位自己单独一组。
  • 如果两组同时出错,则是两组交叉地带的位置出错,如1、2组都校验错,则是代表第3位即属于1、2组共同校验的位置出错。

而且海明码还有一个快速确定错误位置的算法,

1.分别对每个组校验,通过的记为0,出错的记为1.

2、将校验结果按照组别从大到小排列起来,得到一串1和0的组合。

假如我们刚刚接收的海明码序列为1111111,那么得到的校验结果从大到小排除就是111,这也就对应了出错位置为111二进制码所对应的位置即第7位,

春晚舞台上,刘谦的纸牌魔术吸引了无数观众的目光。他以其出神入化的手法,将普通的纸牌演绎得栩栩如生,仿佛拥有了生命的魔力。这一切的背后,不仅体现了魔术师本人精湛的技艺,更是科技与艺术完美结合的生动展现。海明码的精妙原理,为这场魔术增添了更多的科技色彩,让人们在欣赏艺术的同时,也领略到了科技的神奇魅力。

在这个充满未知的世界里,无论是魔术舞台还是科研前线,人类智慧的火花都将永不熄灭。科技的发展离不开人们的探索与创新,正是这些火花,照亮了我们前行的道路。而对于编码技术来说,未来的创新将不仅仅局限于技术的层面,更将体现在如何更好地服务于人类社会,为信息传输带来更多可能性。

总之,随着科技的发展,未来的编码技术将会更加先进,为我们的生活带来更多便利。而在这一过程中,人类智慧的火花将继续照亮前行的道路,推动科技与艺术的交融,为我们的世界增添更多美好。无论是魔术舞台还是科研前线,我们都将携手共进,不断创新,以迎接更美好的未来。

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

如若内容造成侵权/违法违规/事实不符,请联系瞎胡闹网进行投诉反馈,一经查实,立即删除!

相关文章

机器学习复习(8)——逻辑回归

目录 逻辑函数(Logistic Function) 逻辑回归模型的假设函数 从逻辑回归模型转换到最大似然函数过程 最大似然函数方法 梯度下降 逻辑函数(Logistic Function) 首先,逻辑函数,也称为Sigmoid函数&#…

安全之护网(HVV)、红蓝对抗

文章目录 红蓝对抗什么是护网行动?护网分类护网的时间 什么是红蓝对抗红蓝对抗演练的目的什么是企业红蓝对抗红蓝对抗价值参考 红蓝对抗 什么是护网行动? 护网的定义是以国家组织组织事业单位、国企单位、名企单位等开展攻防两方的网络安全演习。进攻方…

C++ 贪心 区间问题 区间选点

给定 N 个闭区间 [ai,bi] ,请你在数轴上选择尽量少的点,使得每个区间内至少包含一个选出的点。 输出选择的点的最小数量。 位于区间端点上的点也算作区间内。 输入格式 第一行包含整数 N ,表示区间数。 接下来 N 行,每行包含两…

洛谷p4391 无限传输

考察字符串周期的题 题目链接 结论 要求字串 s s s的最短循环字串长就是: a n s n − p m t [ n ] ansn-pmt[n] ansn−pmt[n] 证明如下: 这是最大的前缀和后缀 现在我们做如下操作: 补全字段 a a a和字段 b b b,按子段 a a a的…

Linux操作系统基础(五):Linux的目录结构

文章目录 Linux的目录结构 一、Linux目录与Windows目录区别 二、常见目录介绍(记住重点) Linux的目录结构 一、Linux目录与Windows目录区别 Linux的目录结构是一个树型结构 Windows 系统 可以拥有多个盘符, 如 C盘、D盘、E盘 Linux 没有盘符 这个概…

AJAX——AJAX入门

1 什么是AJAX? Ajax(Asynchronous JavaScript and XML)是一种用于在Web应用程序中实现异步通信的技术。 简单点说,就是使用XMLHttpRequest对象与服务器通信。它可以使用JSON、XML、HTML和test文本等格式发送和接收数据。 AJAX最吸…

机器学习系列——(十一)回归

引言 在机器学习领域,回归是一种常见的监督学习任务,它主要用于预测数值型目标变量。回归分析能够通过对输入特征与目标变量之间的关系建模,从而对未知数据做出预测。 概念 回归是机器学习中的一种监督学习方法,用于预测数值型目…

一个坐标系查询网站python获取所有坐标系

技术路线选择 我是使用的vue 3开发的网页界面,element-plus构建网页组件,openlayer展示地图,express提供后端API,vercel进行在线部署。 python获取所有坐标系 想要展示所有坐标系,那需要先获取坐标系,怎么…

Openwifi 开源项目解读(一)

Openwifi 是一个关于wifi 系统的开源项目,是一个少有的优秀的关于wifi的开源项目,项目中包括了wifi的基带、lowmac、linux驱动 等三部分,其中基带、lowmac部分是在FPGA中实现,wifi驱动部分是运行在Linux下,因此openwif…

【资料分享】基于单片机大气压监测报警系统电路方案设计、基于飞思卡尔的无人坚守点滴监控自动控制系统设计(程序,原理图,pcb,文档)

基于单片机大气压监测报警系统电路方案设计 功能:实现的是大气压检测报警系统,可以通过传感器实时检测当前大气压值,可以设定大气压正常范围,当超过设定范围进行报警提示。 资料:protues仿真,程序&#x…

【教学类-47-01】UIBOT+IDM下载儿童古诗+修改文件名

背景需求: 去年12月,我去了其他幼儿园参观,这是一个传统文化德育教育特色的学校,在“古典集市”展示活动中,小班中班大班孩子共同现场念诵《元日》《静夜思》包含了演唱版本和儿歌念诵版本。 我马上也要当班主任了&a…

C++ 贪心 区间问题 最大不相交区间数

给定 N 个闭区间 [ai,bi] ,请你在数轴上选择若干区间,使得选中的区间之间互不相交(包括端点)。 输出可选取区间的最大数量。 输入格式 第一行包含整数 N ,表示区间数。 接下来 N 行,每行包含两个整数 ai…

基于鲲鹏服务NodeJs安装

准备工作 查看当前环境 uname -a查看鲲鹏云CPU架构 cat /proc/cpuinfo# 查看CPU architecture项,8表示v8,7表示v7下载Node.js NodeJs 选择 Linux Binaries (ARM) ARMv8 wget -c https://nodejs.org/dist/v12.18.3/node-v12.18.3-linux-arm64.tar.xz…

WWW 万维网

万维网概述 万维网 WWW (World Wide Web) 并非某种特殊的计算机网络。 万维网是一个大规模的、联机式的信息储藏所。 万维网用链接的方法能非常方便地从互联网上的一个站点访问另一个站点,从而主动地按需获取丰富的信息。 这种访问方式称为“链接”。 万维网是分…

【Kubernetes】在k8s1.24及以上版本基于containerd容器运行时测试pod从harbor拉取镜像

基于containerd容器运行时测试pod从harbor拉取镜像 1、安装高版本containerd2、安装docker3、登录harbor上传镜像4、从harbor拉取镜像 1、安装高版本containerd 集群中各个节点都要操作 yum remove containerd.io -y yum install containerd.io-1.6.22* -y cd /etc/containe…

Docker 有哪些常见的用途?

Docker 是一种容器化技术,它允许应用程序在不同的环境之间具有一致的运行环境。这使得 Docker 在开发和运维领域中非常受欢迎,因为它简化了应用程序的部署和管理。以下是 Docker 的一些常见用途: 快速部署应用程序 Docker 允许开发人员和运…

[NSSCTF]-Web:[SWPUCTF 2021 新生赛]easy_sql解析

查看网页 有提示,参数是wllm,并且要我们输入点东西 所以,我们尝试以get方式传入 有回显,但似乎没啥用 从上图看应该是字符型漏洞,单引号字符注入 先查看字段数 /?wllm2order by 3-- 没回显 报错了,说明…

Java编程构建高效二手交易平台

✍✍计算机编程指导师 ⭐⭐个人介绍:自己非常喜欢研究技术问题!专业做Java、Python、微信小程序、安卓、大数据、爬虫、Golang、大屏等实战项目。 ⛽⛽实战项目:有源码或者技术上的问题欢迎在评论区一起讨论交流! ⚡⚡ Java实战 |…

Habitat环境学习四:Habitat-sim基础用于导航——使用导航网格NavMesh

如何使用导航网格NavMesh 官方教程1、NavMesh基础定义1.1 使用NavMesh的原因1.2 什么是NavMesh 2、NavMesh的使用方法2.1 获取自上而下Top down view视角地图2.2 在NavMesh中进行查询以及随机产生可导航点2.3 查找最短路径2.4 场景加载NavMesh2.5 重新计算并生成NavMesh2.6 什么…

无题2024

念旧 阿悠悠 专辑:念旧 发行时间 2019-08-25 念旧 播报编辑讨论1上传视频 阿悠悠演唱歌曲 《念旧》是由一博作词,一博和张池作曲,阿悠悠演唱的歌曲,发行于2019年8月25日。 [1]收录于同名专辑《念旧》中。 相关星图 查…