Reverse原理背後的數學和魔幻藝術

演算法與數學之美發表於2018-12-04

第一次變用這個原理的魔術已經有十幾年了,看起來就是拿起一疊牌發來發去,最後總能發出一些規律來,比如每一疊頂部都是Ace,在說上一些應景的話語,形成一個寓意美好的ending。Reverse這個名字是我自己取的,取自python中的list翻轉函式(當然不同語言中都有類似的操作啦),這可以看作是一個純self-working的魔術原理了,聯想了一些大師作品和自己的創作,發現這個品類實乃奇妙的數學和美麗的魔術結合的又一瑰寶。


數學原理



這再簡單不過了,我們知道如果f(x) = f ^ - 1(x),或者ff(x) = x,即一個函式存在反函式且和原函式相等時,那麼在座標軸上看起來應該是沿著y = x方向對稱的,函式的方程表示式上看則應該是x,y在表示式上的地位應該相當,比如xy = 1的反函式和 x ^ 2 + y ^ 2 = 1的圓。(所謂相當就是互相替換以後式子含義等價,這個等價一般來源於乘法加法的交換律哦~再想想,乘法和加法的交換律,分配率的原理又是什麼?文末留言答對有獎哈~)


640?wx_fmt=png

圖1 反函式等於原函式的例子:反比例函式和1 / 4圓


這些是初中數學的知識點了,我們再抽象一點,把f看作是物件(不一定是數)上的一個操作(operation),這個操作同樣有定義域和值域,以及對應關係,這個對應(x, y)的全體構成的集合也就定義了這個操作了。那麼同實數上的函式,這個操作的性質則為:該操作和反操作的效果完全相同,或者,兩個同樣的操作以後會恢復原狀!注意哦,這是可以早就兩種完全不同魔術效果的原理哦,一個是“相同”,構造coincidence,還有一個是,還原(哈哈,這裡不是撕牌還原的restoration啦,不要想偏了)!


巧了,上面描述的這個事情在數學上早就有名字了,他們統一叫做對稱關係,即對任意關係集A,若(a, b)屬於A則(b, a)也屬於A,按理說這種元素倒轉後形成的新元祖所在集合可以是A’,當且僅當A = A’(這種樣子的表示式是不是經常見到,那個矩陣的逆和自身相等則為單位陣的結論是不是長的差不多?)時候,這個關係稱之為對稱關係。當然對稱關係只是等價關係的條件之一,後面有機會再分析其他兩個(傳遞性,自反性)。當關系滿足一一對應的時候我們稱之為函式關係,這裡即對稱函式,在不同領域有不同名字,比如實數上的函式叫沿y = x對稱,空間上我們稱之為映象關係(mirror),而在撲克牌這裡,我取名reverse操作,它是對稱關係在序列空間上的具體形式,與映象這些概念構成counterpart關係,當然,counterpart關係也是對稱關係了。


於是,撲克牌手法中的普通的一張一張發牌(dealing),恰好等價於對撲克牌頂部的一部分牌執行reverse操作,嗯嗯,在程式設計師看來就是這樣的:

#! /usr/bin/env python

# -*- coding:utf8 -*-

import numpy as np

import random

poker_list = range(54)

np.random.shuffle(poker_list)# shuffle the deck

n = random.randint(1, 54)# choose a position randomly

result_list = poker_list[:n]# get the pack from the top

result_list.reverse()# reverse it

 

我們可以看到,無論n為多少(這個選擇其實很有限哦,資訊量僅為54種可能而已,看起來自由其實束縛很大,一個隱形的限制就是,是從頭開始的n張,前面若干張總是在你選擇範圍內。),其原來的頂牌在經過了兩次reverse以後,依然會恢復到頂牌位置,而對於觀眾來說,如果表演得當,這些牌已經經過了充分的混亂和隨機了,任何效果看起來都是那麼不可思議!而做到這些效果,只需要想方設法,讓這一操作的執行過程變得合理而有趣,這些就是魔術設計的藝術啦。


說了這麼多,最後總結一下:撲克牌上的dealing手法等價於選序列頭部進行reverse 操作,reverse是一個對稱變換,反操作效果等價於原操作,操作兩次可恢復原自變數值,而魔術效果也產生於這一性質。


嗯嗯,嚴謹的數學終於講完了,下面是美妙的魔幻藝術。

不說廢話,上表演!

 


魔術部分


第一個流程我印象很深刻,源於傅琰東老師在走進科學的一次訪談,嗯嗯,那時候我應該還是個10歲左右的翩翩少年。


視訊1. 4Ace聚首


原理講解:Reverse部分的變種之一,即,在執行時候發成二疊甚至更多,這樣在每一疊頂部的牌恰為原來頂部若干張,注意哦,由於張數不一樣,那些牌的排列是起點可能不相同的迴圈佇列哦,佇列長度是牌疊數量m,起始位置取決與發出張數n模m的值。當然這些都不重要啦,最後的效果是4張一樣的Ace的組合,組合!誰會在這美妙的時刻去考慮他們的排列?(排列和組合是兩種魔術效果,往往後者已經足夠驚豔,而忘卻了其實他們已經排列得很混亂了,以後的文章中還會有一系列效果用到了這個現象。)


表演關鍵:兩個關鍵點,注意臺詞“一半多一點”讓你有理由去放回2張,但是後面的表演已經要讓這個不得不做的dirty work被讓觀眾看起來更重要的流程蓋掉乃至遺忘;另外,第一次發牌讓觀眾停的時候,一定要發出去兩張以後再說(當然如果只發了一張,那麼發出的一疊和剩餘頂牌就是Ace,那可能也是一個好結局吧)。

 

第二個流程也是來自我很小時候在一本厚厚的用照片拼成的魔術書上的,抱歉已經忘了書名和作者了,回家要是翻到了一定補上,致歉!


還真回憶起來的,此流程來自於張德金先生的《圖說魔術入門》


640?wx_fmt=jpeg

圖2 張德金先生的《圖說魔術入門》封面


這本書至今應該還收藏在我老家爸媽的床底下,應該早就佈滿了灰塵吧。裡面東西也沒太大難度和深度,但至今我都視為至寶之一(嘿嘿,還有好幾個寶貝呢~),因為她曾經是我童年的希望。


視訊2. 表裡如一(4Ace聚首2)


原理講解:經過後來的學習才領悟到,這裡用到了Dai Vernon 的 The trick that cannot be explained裡面的一個經典思想,因為沒有人知道我要做什麼,所以只要看起來也還合理,還不太可能發生,甚至寓意還挺美好,那就是好魔術。像magician’s choice 和一些心靈類魔術也都由此原理而來。因此,一開始桌上5張牌,如果選了前4個Ace中的一個,沒問題,如果選了最後一個,嗯嗯,會讓他一直選到只剩下一張為止。現在桌上是Ace頂部3張Ace,一切就緒,執行reverse操作就可以了(第二次發成3疊)。


魔術對數學的畫龍點睛,如此美妙!

 

最後還有一個流程,是最近看的一個shin lim的一個表演,讓我久違地感嘆魔術對原理改造以後的美的極致追求。就不再附上講解啦,相信聰明的小夥伴們一定能夠解析其中奧祕,獲取理性和感性藝術的雙重體驗。


視訊3.All you have chosen

怎麼樣,數學的原理多麼簡單而純粹,魔術的展現多麼挑戰而美麗,他們合二為一的時候何不是天作之合呢!我彷彿在接受上帝賞給人類的文明和智慧一般地在接受洗禮,聰明的你,感受到了嗎?


最後感謝騰訊的幾位小夥伴幫忙拍攝和當託~



640?wx_fmt=png640?wx_fmt=png

作者簡介

640?wx_fmt=gif

magic2728,現就職於騰訊。自幼以數學和魔術為最大愛好,從參加建模比賽到培訓到一線網際網路從業者,其建模經驗遍歷金融,生物,網際網路;魔術表演從學校走向比賽和商演,又迴歸撲克牌魔術理論的研究。他通過建模來思考,參與和改造這個世界,也希望能同步把這些精彩分享給感興趣的朋友們!

640?wx_fmt=jpeg

長按識別二維碼,關注mathemagician!

640?wx_fmt=png



640?wx_fmt=jpeg

演算法數學之美微信公眾號歡迎賜稿

稿件涉及數學、物理、演算法、計算機、程式設計等相關領域,經採用我們將奉上稿酬。

投稿郵箱:math_alg@163.com



相關文章