魔术里的集合、映射和关系(五)——优雅之作《4 Kings 折纸》的集合描述

2020-03-16 10:35:58 浏览数 (1)

今天,我们来进入《4 Kings 折纸》这个魔术的数学部分。

先回顾一下表演视频:

视频1 4K折纸

魔术剖析见系列作品上一篇,下面是完整的数学模型。

《4 Kings Folding》的集合描述

对于这个问题,我们对这个扑克牌矩阵以左下角为原点进行编号,用二维坐标来代表每一张牌,这是我们第一个关心的量;还有一个是牌面状态cond,取值face或back,表示牌面或牌背向上;每一张牌的点数并不重要,但是是个识别符号以及承担了效果的展现。令牌集

K = {(i, j, cond) | i, j in N, 0 <= i, j <=3, (i j is even} xor (cond = face)}

这是一个描述法定义的集合,xor是亦或符号,英文是exclusive or,即一般的or逻辑去掉了两个逻辑值都为真的情况:

A xor B = (A = 1 and B = 0) or (A = 0 and B = 1)

大家可以自行想象这个运算的真值表,这里不画了。

值得注意的是,这么定义下来的按位进行的xor操作,恰好和不记进位的二进制加法的结果一致。换句话讲,原本的逻辑操作,可以在二进制数上模拟出有数值意义的运算来了。

同时,这个集合也是个动态集合,即,它只根据扑克牌的位置和正反状态来确定是否在其内,而和其具体是印着哪个点数的哪一张并没有关系,哪张牌都可以处在这个集合中,也可以因为这个位置或正反的变化而变得不在这个集合中。比如一张初始时在集合内的红桃K,往左边移动一个位置,就不在了,而另一张其他牌,同朝向地放进了红桃K的位置,它就成了这个集合的了。

xor相关运算性质

接下来我们讲讲这里的xor运算的一些性质。

第一个性质,其有取非操作对称性,即把1,0全部交换,性质保持不变,即:

A xor B = (not A) xor (not B).

相当于g(f(x)) = g(x),即对任意(B1, B2)的二元bool元组,都是函数f((B1, B2)) = (not B1, not B2)在g((B1, B2)) = B1 xor B2性质下的不动点,而全集的不动点,我们一般就称变换函数本身的对称性了,而xor起的作用是限定了一个观察角度,使得结果真的不变(其实所有的不变性都是限定了观察角度的,比如对称的正方形是假定你区分不了那4个顶点谁是谁的,哲学也告诉过我们,人不可能两次踏进同一条河流。)。当然,f函数本身也是一个二阶对称函数。

这个性质在后面折叠过程中保证了其不变性,我们慢慢道来。

于是,把于整个牌桌上的牌的状态描述作为全集A,那么其补集为:

C(A, K) = {(i, j, cond) | i, j in N, 0 <= i, j<= 3, (i j is even} nxor (cond = face)}

nxor 叫同或,结果取xor结果的非,即A xor B = not (A nxor B),这也才符合补集的定义。把结果展开,我们有,A nxor B= (A = 1 and B = 1) or (A = 0 and B = 0)。其对称性质和nor也一样,一个二元bool变量都取非这个操作在xnor下是对称不变的:A nxor B = (not A) nxor (not B)

另外,A nxor B= A xor (not B),对称一下也成立:A xor B= A nxor (not B)。这从真值表上看是很显然的,而从人主观理解的两个bool值是否相等这个角度也很好理解,该运算取非,等价于两个操作数任何一个取非,因为其是否相等这个性质,恰好在其中一个改变的时候跟着改变。

以上是,描述扑克牌状态的集合中用到的数理逻辑运算xor相关的一些性质介绍。

模型推导

这里,如果照视频里那样摆扑克牌的牌面状态,以及把K放在特定位置(具体在哪几张我相信大家可以自己推出来哈),那么K集合在初始时候的,就是那4张K了。

有了这套描述模型,我们再看一下,扑克结尾的状态。反正我们要求了结尾必须折成一叠牌,也就是一个特定的位置,每张牌也还在,有着其特定的牌面状态。于是(i j)的奇偶性成了一个对所有扑克牌相同的未知常量,所以,其(i j is even} xor (cond = face)结果仅由牌面结果而定。那么自然,最开始就在K集合里的牌,如果他们在折叠过程中从未改变过确定集合K归属与否的性质,那么最后的朝向就一定是一样的,才使得让他们能够处于同一个集合的性质不变,这在K补集里的也一样。表演时候,我从来没有记忆过到底哪个位置对应K正面向上,哪个对应反面向上,因为最后折的那一次看看就可以发现了,再不济,把它们都打开再说话也可以,效果产生的点是,他们都一样,一样成什么样,并不关心。

接下来只有一个问题了,发明一些合理的操作,不改变扑克牌的归属K集合与否状态,即要让这些操作不改变那个K集合性质的xor操作的结果,即,要用到不变性,要用到对称性。

我们来回顾一下我们可以进行的折叠操作的空间。无论行还是列的折叠,无论折多少行或列,扑克牌都会沿着横坐标或者纵坐标改变奇数个位置而改变奇偶性,而其牌面状态也改变。后者很好理解,而前者的具体原因是,翻折这种操作对应的其实是轴对称变换,而且允许你用的对称轴坐标必然是0.5,1.5, 2.5这样的数,也就是两行或列牌的中间那条缝,坐标也会变为1 / 3 / 5 – i / j这么多,而由奇偶的运算性质或者更深的C2群性质,这显然会改变原来i / j值的奇偶性。而要求从1之类的坐标位置,也就是从牌的长方形对称轴上折过去显然是不合理的,而且这样也打破了我们许下要的限定,此时位置奇偶性不会发生变化。故这里的折叠限定无比自然和可以被不知不觉地接受,妙哉。

好了,xor恰好具有这样的对称性,即A xor B = (not A) xor (not B),每次按照要求的折叠,都恰好对A,B两个性质进行了取非,最后结果不变。正是因为具有这样的恒等性质,你的每一次横竖折叠都不曾改变上面划分K集合的那个关键性质条件的结果,也就不会改变每张牌的集合归属。因此,最终,所有K朝向同一面,就是一个美丽而奇迹般的必然结果了。

这里,数学变成魔术最巧妙的地方是,看起来混乱的操作中存在这对称性,不变性,恒等式,而只有最后的结果,让你能够瞬间看清这个集合原本的全貌,而其他时候,都混杂在更加复杂的运算里。

还有一点,这里的折叠操作,也不允许对角线或者任意斜率为1或-1的线的折叠,不然也要把牌折弯了。而数学上不允许的原因是,哪怕对角线的牌不动,可以证明,其余折叠牌只要沿着斜率为1或-1的线折叠,那么其前后(i j )(mod 2)的结果一定不变,典型的,沿着y = x折叠,直接将坐标换了位置,加法交换率保证了最后结果不会变,在其他情况下,根据折叠前后点连线斜率乘以对称轴斜率为-1可得,其模2结果也相同。

有同学说,y = x折叠能够理解,那当沿着y = (-) x k来折叠的时候,又不想进行上面的推导,怎么才能轻而易举说明,i j的结果奇偶性不变呢?

哈哈,对于这个问题,观众用哪根对称轴你就以其上一点作为原点,左右转45度作为xy轴方向可好?这样是不是就把新问题化为沿着y = x对称的老问题了?

为什么想到这个方法来证明,而省去那些复杂的平移和变换操作来说明呢?

因为高中物理学过,运动是绝对的,对运动的描述是相对的;高中数学学过,化归的数学思想方法。

怎么样,读书还是有点用吧?

本系列的数学魔术精彩还刚刚开始,后面文思泉涌,精彩继续!

有视频先睹为快,看看你能不能找到里面的数学性质!

0 人点赞