魔术《4 Kings 折纸》的三重境界(二)——集合语言和数理逻辑

2023-10-21 12:15

本文主要是介绍魔术《4 Kings 折纸》的三重境界(二)——集合语言和数理逻辑,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

早点关注我,精彩不错过!

上回我们回顾了《4 Kings 折纸》这个魔术的内容和用小学的奇偶性原理解析了操作的过程,详情请戳:

魔术《4 Kings 折纸》的三重境界(一)——奇偶性原理

今天我们进入后第二境界,一探究竟。

先把魔术视频放这里。

视频1 4 Kings 折纸

魔术背景补充

在《魔术里的集合、映射和关系(五)——优雅之作《4 Kings 折纸》的集合描述》中,我们曾介绍过这个魔术的出处。我自己脑子里是怎么撞击出来的已不可追溯,但可查的一个来源是罗宾老师的那本《扑克牌魔术》里一个叫《神奇的毯子》的作品。后来又经过我的台词和流程的打磨形成了这个作品。

另外,这个原理在魔术上有个名字,叫作mat principle。这个魔术的存在则是浑然天成的,因为原理只不过给出了一系列合理的折叠操作,而它们恰巧在给定起点终点和起点正反状态时,有最终相同的终点正反状态罢了。

在学会这个原理后,我仔细联想过,怎么才能想到King这个图案的,有没有通用方法。而真的要做到恰好是4张一样的Kings或者Aces,甚至更多张其他的占卜图案朝向一面的话,其起始图案要满足这样的特性:以所有奇偶数位置的牌正反也相反的矩阵排列开始,改变成需要的图案。要求改变的张数恰好是4才可以,因为只有这4张是真的需要改变;否则,要么有更多要改的,要么不够改的。我试过了A~9的图案,甚至J也要改5张,没有一个达到了浑然天成的效果;如果是三角形等背景图案倒是有办法,因为它可以给更多张,不过整体都没有K来得那么巧妙。

当然如果放开一个限制,即并不是每个位置都需要有牌,可以合理地把要改的部分去掉不改就好了,只要满足对称性和美感需求,那就可以从目标出发,去改掉目标线上的错误后,再去填充部分即可了。比如A就可以做到了,原本要改8张,限定在A的范围内恰好就4张了。不过分布有点对称,还是容易引起怀疑。当然因为我们没有对叠内位置建模,所以可以选多张再重叠,应该也能解决一部分问题,但都不如Kings这个原版来得给力了。

马丁加德纳老师对这个原理也有过阐述,叫作Paradox Paper。也有人把它直接和扑克牌强选原理结合以后做成的折纸道具来卖,是挺好的创意。因为拿扑克牌叠去折叠,怎么着还是模拟出来的,但是真的去折纸,不管是作预言还是巧合效果,都是更加贴合自然操作和能抹去数学痕迹的,殊不知这背后的逻辑早就被数学家们一网打尽了。有兴趣可以看以下的介绍:

https://www.angelfire.com/super/magicrobin/paradox.htm

而在这些表述中,最常用的解释方法,既不是上一篇简单过头但是繁琐的奇偶性原理,也不是下一境界要讲的抽象得过分的群论,而是恰到好处的基于集合论的数理逻辑。接下来,我们在《魔术里的集合、映射和关系(五)——优雅之作《4 Kings 折纸》的集合描述》的基础上,回顾并更深入地讲透这个不分。

集合语言和数理逻辑

此乃第二境界:衣带渐宽终不悔,为伊消得人憔悴——中学水平:集合语言和数理逻辑。

我有长达10来年的时间,对这个魔术的理解水平一直停留在第一层境界。不是没想过,而是确实觉得比较交单明了,真的值得那么深究?不过,期间几次思考,还是觉得过这样的解释方式似乎缺了点什么,比如这个思路虽然是化归,但为啥这么麻烦?有没有更高档的数学工具能够更简单地描述清楚?

直到我在组织MatheMagician上《魔术里的集合、映射和关系(五)——优雅之作《4 Kings 折纸》的集合描述》这个系列,需要用数学语言严谨地描述一番地时候才发现,原来用上集合地数学工具,加上一点数理逻辑语言,这层性质就会非常清楚。

我把公式列在这里,详情可以参考我之前的介绍文章:

K = {(i, j, c) | i, j in N, 0 <= i, j <= 3, c in {f, b}, (i + j) % 2 = 0 xor (c = f)}

我当时借着这篇文章讲到了集合语言,以及其中很重要的一个数理逻辑运算xor以及其性质,并总结为,翻转这一操作下,其xor性质具有不变性,还附带聊了聊xor本身的一些性质,如对称性等等。

这个说法看起来是比较清楚了,它比较完美地把我们的物理操作映射到了一个特定地数理逻辑运算中,并且用集合语言描述了出来。我一度以为,这个说法应该是这个魔术数学原理地最终解了。并且在多次公开分享中,我也是以这个解法作为蓝本来说的。

在今日我深入学习了真正的数理逻辑以后,发现这个概念其实还可以更精细。即数理逻辑是一套命题演算系统,一般包括命题符号A,算子符号omiga,转换规则Z和起始点I(也就是公理)。而一般比较著名和公认的数理逻辑命题演算系统有命题逻辑和谓词逻辑,这是0和1阶逻辑,几乎作为一切数学的基础,往上还有高阶逻辑等。而我们这里用到的,其实就是以自然数系统为基础的逻辑系统,建立在0和1阶逻辑基础上的ZFC集合论上,才有了以上这些逻辑算子和对应的集合表达。

所以啊,每个概念都是有出处和明确含义的,透彻理解的唯一方法就是把自己扔进去感受,随时害怕忘记,把自己的大脑作为要学习内容融为一体的载体,方能体会读书那又痛苦又快乐的享受。

可是接下来的发现告诉我,你只有足够地熟悉,熟练,肯重复,你猜有机会创新和创造。

我一度以为xor这以运算地存在,天衣无缝地适配到了我们的场景,已经是幸运中的幸运了。但是你要知道,每个数学概念地由来,只要肯思考,背后一定还有更加深刻的本质。这一本质,是我在雅礼中学给孩子们分享这个魔术,去想讲清楚,为啥要引入xor这个运算时候想到的。

别着急,下期就告诉你这个惊天大秘密。

b0bc5618dab19b674718d312b1850cfe.gif

我们是谁:

MatheMagician,中文“数学魔术师”,原指用数学设计魔术的魔术师和数学家。既取其用数学来变魔术的本义,也取像魔术一样玩数学的意思。文章内容涵盖互联网,计算机,统计,算法,NLP等前沿的数学及应用领域;也包括魔术思想,流程鉴赏等魔术内容;以及结合二者的数学魔术分享,还有一些思辨性的谈天说地的随笔。希望你能和我一起,既能感性思考又保持理性思维,享受人生乐趣。欢迎扫码关注和在文末或公众号留言与我交流!

d46b8ed06ddd88152dd9787124a296fe.gif

c987a1325c9022c5551ef2e6b400ac75.png

3bf399990557c12395d91b49bba59b04.jpeg

扫描二维码

关注更多精彩

魔术《4 Kings 折纸》的三重境界(一)——奇偶性原理

视错觉与魔术(二)——橡皮筋的奇迹

你真的懂分数吗?(五)——概率与期望

De Bruijin序列与魔术(四)——De Bruijin序列的拓展结果

这到底是怎么想到的!!!

9d96242626e9de66244991a9294cd85d.gif

点击阅读原文,往期精彩不错过!

这篇关于魔术《4 Kings 折纸》的三重境界(二)——集合语言和数理逻辑的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/254324

相关文章

科研绘图系列:R语言扩展物种堆积图(Extended Stacked Barplot)

介绍 R语言的扩展物种堆积图是一种数据可视化工具,它不仅展示了物种的堆积结果,还整合了不同样本分组之间的差异性分析结果。这种图形表示方法能够直观地比较不同物种在各个分组中的显著性差异,为研究者提供了一种有效的数据解读方式。 加载R包 knitr::opts_chunk$set(warning = F, message = F)library(tidyverse)library(phyl

透彻!驯服大型语言模型(LLMs)的五种方法,及具体方法选择思路

引言 随着时间的发展,大型语言模型不再停留在演示阶段而是逐步面向生产系统的应用,随着人们期望的不断增加,目标也发生了巨大的变化。在短短的几个月的时间里,人们对大模型的认识已经从对其zero-shot能力感到惊讶,转变为考虑改进模型质量、提高模型可用性。 「大语言模型(LLMs)其实就是利用高容量的模型架构(例如Transformer)对海量的、多种多样的数据分布进行建模得到,它包含了大量的先验

uva 11178 计算集合模板题

题意: 求三角形行三个角三等分点射线交出的内三角形坐标。 代码: #include <iostream>#include <cstdio>#include <cstdlib>#include <algorithm>#include <cstring>#include <cmath>#include <stack>#include <vector>#include <

C语言 | Leetcode C语言题解之第393题UTF-8编码验证

题目: 题解: static const int MASK1 = 1 << 7;static const int MASK2 = (1 << 7) + (1 << 6);bool isValid(int num) {return (num & MASK2) == MASK1;}int getBytes(int num) {if ((num & MASK1) == 0) {return

MiniGPT-3D, 首个高效的3D点云大语言模型,仅需一张RTX3090显卡,训练一天时间,已开源

项目主页:https://tangyuan96.github.io/minigpt_3d_project_page/ 代码:https://github.com/TangYuan96/MiniGPT-3D 论文:https://arxiv.org/pdf/2405.01413 MiniGPT-3D在多个任务上取得了SoTA,被ACM MM2024接收,只拥有47.8M的可训练参数,在一张RTX

如何确定 Go 语言中 HTTP 连接池的最佳参数?

确定 Go 语言中 HTTP 连接池的最佳参数可以通过以下几种方式: 一、分析应用场景和需求 并发请求量: 确定应用程序在特定时间段内可能同时发起的 HTTP 请求数量。如果并发请求量很高,需要设置较大的连接池参数以满足需求。例如,对于一个高并发的 Web 服务,可能同时有数百个请求在处理,此时需要较大的连接池大小。可以通过压力测试工具模拟高并发场景,观察系统在不同并发请求下的性能表现,从而

C语言:柔性数组

数组定义 柔性数组 err int arr[0] = {0}; // ERROR 柔性数组 // 常见struct Test{int len;char arr[1024];} // 柔性数组struct Test{int len;char arr[0];}struct Test *t;t = malloc(sizeof(Test) + 11);strcpy(t->arr,

C语言指针入门 《C语言非常道》

C语言指针入门 《C语言非常道》 作为一个程序员,我接触 C 语言有十年了。有的朋友让我推荐 C 语言的参考书,我不敢乱推荐,尤其是国内作者写的书,往往七拼八凑,漏洞百出。 但是,李忠老师的《C语言非常道》值得一读。对了,李老师有个官网,网址是: 李忠老师官网 最棒的是,有配套的教学视频,可以试看。 试看点这里 接下来言归正传,讲解指针。以下内容很多都参考了李忠老师的《C语言非

C 语言基础之数组

文章目录 什么是数组数组变量的声明多维数组 什么是数组 数组,顾名思义,就是一组数。 假如班上有 30 个同学,让你编程统计每个人的分数,求最高分、最低分、平均分等。如果不知道数组,你只能这样写代码: int ZhangSan_score = 95;int LiSi_score = 90;......int LiuDong_score = 100;int Zhou

C 语言的基本数据类型

C 语言的基本数据类型 注:本文面向 C 语言初学者,如果你是熟手,那就不用看了。 有人问我,char、short、int、long、float、double 等这些关键字到底是什么意思,如果说他们是数据类型的话,那么为啥有这么多数据类型呢? 如果写了一句: int a; 那么执行的时候在内存中会有什么变化呢? 橡皮泥大家都玩过吧,一般你买橡皮泥的时候,店家会赠送一些模板。 上