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

2024-02-11 10:12

本文主要是介绍刘谦春晚纸牌魔术背后的数学—海明码原理简介,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

在昨天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://www.chinasem.cn/article/699534

相关文章

轻量级在线服装3D定制引擎Myway简介

我写的面向web元宇宙轻量级系列引擎中的另外一个,在线3D定制引擎Myway 3D。 用于在线商品定制,比如个性化服装的定制、日常用品(如杯子)、家装(被套)等物品的在线定制。 特性列表: 可更换衣服款式,按需定制更换模型可实时更改材质颜色可实时添加文本,并可实时修改大小、颜色和角度,支持自定义字体可实时添加艺术图标,并可实时修改大小、颜色和角度,支持翻转、各种对齐可更改衣服图案,按需求定制

Linux系统稳定性的奥秘:探究其背后的机制与哲学

在计算机操作系统的世界里,Linux以其卓越的稳定性和可靠性著称,成为服务器、嵌入式系统乃至个人电脑用户的首选。那么,是什么造就了Linux如此之高的稳定性呢?本文将深入解析Linux系统稳定性的几个关键因素,揭示其背后的技术哲学与实践。 1. 开源协作的力量Linux是一个开源项目,意味着任何人都可以查看、修改和贡献其源代码。这种开放性吸引了全球成千上万的开发者参与到内核的维护与优化中,形成了

数据库原理与安全复习笔记(未完待续)

1 概念 产生与发展:人工管理阶段 → \to → 文件系统阶段 → \to → 数据库系统阶段。 数据库系统特点:数据的管理者(DBMS);数据结构化;数据共享性高,冗余度低,易于扩充;数据独立性高。DBMS 对数据的控制功能:数据的安全性保护;数据的完整性检查;并发控制;数据库恢复。 数据库技术研究领域:数据库管理系统软件的研发;数据库设计;数据库理论。数据模型要素 数据结构:描述数据库

计算机组成原理——RECORD

第一章 概论 1.固件  将部分操作系统固化——即把软件永恒存于只读存储器中。 2.多级层次结构的计算机系统 3.冯*诺依曼计算机的特点 4.现代计算机的组成:CPU、I/O设备、主存储器(MM) 5.细化的计算机组成框图 6.指令操作的三个阶段:取指、分析、执行 第二章 计算机的发展 1.第一台由电子管组成的电子数字积分和计算机(ENIAC) 第三章 系统总线

GaussDB关键技术原理:高性能(二)

GaussDB关键技术原理:高性能(一)从数据库性能优化系统概述对GaussDB的高性能技术进行了解读,本篇将从查询处理综述方面继续分享GaussDB的高性能技术的精彩内容。 2 查询处理综述 内容概要:本章节介绍查询端到端处理的执行流程,首先让读者对查询在数据库内部如何执行有一个初步的认识,充分理解查询处理各阶段主要瓶颈点以及对应的解决方案,本章以GaussDB为例讲解查询执行的几个主要阶段

【计算机组成原理】部分题目汇总

计算机组成原理 部分题目汇总 一. 简答题 RISC和CICS 简要说明,比较异同 RISC(精简指令集)注重简单快速的指令执行,使用少量通用寄存器,固定长度指令,优化硬件性能,依赖软件(如编译器)来提升效率。 CISC(复杂指令集)包含多样复杂的指令,能一条指令完成多步操作,采用变长指令,减少指令数但可能增加执行时间,倾向于硬件直接支持复杂功能减轻软件负担。 两者均追求高性能,但RISC

MySQL数据库锁的实现原理

MySQL数据库的锁实现原理主要涉及到如何确保在多用户并发访问数据库时,保证数据的完整性和一致性。以下是MySQL数据库锁实现原理的详细解释: 锁的基本概念和目的 锁的概念:在数据库中,锁是用于管理对公共资源的并发控制的机制。当多个用户或事务试图同时访问或修改同一数据时,数据库系统通过加锁来确保数据的一致性和完整性。 锁的目的:解决多用户环境下保证数据库完整性和一致性的问题。在并发的情况下,会

shader language学习(1)——shader language简介背景

shader language,称为着色语言,shade在英语是阴影、颜色深浅的意思。shader language基于物体本身属性和光照条件,计算美格橡塑的颜色值。 实际上这种解释具有明显的时代局限性,在GPU编程发展的早期,shader language的提出目标是加强对图形处理算法的控制,所以对该语言的定义也针对于此。但随着技术的进步,目前的shader language早已经用于通用计算

OSG数学基础:坐标系变换

三维实体对象需要经过一系列的坐标变换才能正确、真实地显示在屏幕上。在一个场景中,当读者对场景中的物体进行各种变换及相关操作时,坐标系变换是非常频繁的。坐标系变换通常包括:世界坐标系-物体坐标系变换、物体坐标系-世界坐标系变换和世界坐标系-屏幕坐标系变换(一个二维平面坐标系,即显示器平面,是非常标准的笛卡尔坐标系的第一象限区域)。 世界坐标系-物体坐标系变换 它描述的问题主要是关于物体本身的

OSG数学基础:坐标系统

坐标系是一个精确定位对象位置的框架,所有的图形变换都是基于一定的坐标系进行的。三维坐标系总体上可以分为两大类:左手坐标系和右手坐标系。常用的坐标系:世界坐标系、物体坐标系和摄像机坐标系。 世界坐标系 世界坐标系是一个特殊的坐标系,它建立了描述其他坐标系所需要的参考框架。从另一方面说,能够用世界坐标系来描述其他坐标系的位置,而不能用更大的、外部的坐标系来描述世界坐标系。世界坐标系也被广泛地