李遠哲 西南石油大學(xué)計算機科學(xué)學(xué)院
一副牌共有52 張,花色分黑桃、紅桃、草花、方塊四種,面值從A 到K 共13 種。我們需要用四張明牌體現(xiàn)出花色和面值這兩類信息。第1 張明牌界定花色,4 張牌共同界定面值。
首先,由于總共5 張牌,最多包含4 種花色,根據(jù)鴿巢原理,一定有某種花色的牌大于等于2 張,我們就選這個花色的牌作為暗牌。比如,一手牌為(黑桃3,紅桃5,黑桃7,方塊J,梅花A),這其中有兩張黑桃,我們就選其中一張黑桃作為暗牌。至于究竟選哪張,后邊再來確定。這樣至少保證一點,即暗牌的花色與第一張明牌相同。
其次,我們來確定暗牌的面值。總的思路是以第一張明牌的面值為基礎(chǔ),以第2至4 張牌的大小關(guān)系編碼作為增量來確定暗牌的面值。
第2 至4 張明牌按一般規(guī)則2<3<…K<A,同面值的按四種花色也可定義:方塊<梅花<紅桃<黑桃,這樣全副牌可以排成序列:方塊2<梅花2<紅桃2<黑桃2……<紅桃<A 黑桃A。因此剛才例子中的一手牌就有唯一的次序:黑桃3<紅桃5<黑桃7<方塊J<梅花A。去除已經(jīng)使用過的兩張黑桃后,其余三張牌有:紅桃5 <方塊J<梅花A
假設(shè)我們暗牌選的是黑桃7,第一張明牌是黑桃3,如何用上述3 張牌表示增量4 是當(dāng)前的主要問題??梢杂弥虚g三張牌的大小關(guān)系做如下編碼:小中大 增量為1,小大中 增量為2,中小大 增量為3,中大小 增量為4,大小中 增量為5,大中小 增量為6.
按照以上編碼,增量4 對應(yīng)中大小,也就是第二到第四張牌對應(yīng)為:方塊J、梅花A、紅桃5,全部5 張牌如下:黑桃3、方塊J、梅花A、紅桃5、黑桃7(暗牌)。
至此還有最后一個問題,假設(shè)黑桃牌不是黑桃3 和黑桃7,而是黑桃3 和黑桃J,也即二者差值大于6 怎么辦呢?此時我們用黑桃J作明牌,用黑桃3 作暗牌,在J 的基礎(chǔ)上加5 正好是16,也就是在模13 意義上的3。此時全部5 張牌如下:黑桃J、梅花A、紅桃5、方塊J、黑桃3(暗牌)。
如果五張牌中沒有王牌,可以用第1 部分的策略來解決。以下我們僅需考慮有一張或兩張王牌的情況。
我們僅需僅需把一張王牌放在明牌第1 張,用以指示暗牌也為王牌。明牌是大王,暗牌則是小王,明牌是小王,暗牌則是大王。此時不需要第2—4 張牌攜帶任何信息,因此可以處理成暗牌,助手一見一明4 暗,則第五張一定是另一張王牌。
當(dāng)5 張牌中包含一張王牌時,按照第1 部分的策略,王牌一定出現(xiàn)在明牌里。
第一種情況,若王牌以外的四張牌中有相同花色的兩張,則選擇一張作為花色指示牌放在第一張明牌處,選擇方法同上一部分。王牌作為偏移量指示部分,放在第2—4 位置中,此時王牌暗放。具體來說一般把王牌看成最大,黑桃A<小王<大王,其他約定規(guī)則與不含王牌相同。
第二種情況,若王牌以外的4 張牌花色各不相同,此時又要分兩種情況:2a 和2b。2a 是另外4 張牌面值不完全相同,2b 是另外四張牌面值完全相同,比如4 張7。
2a:選兩張序號之差不超過6 的牌,將序號低的放在首位,序號高的作為暗牌。然后按編碼規(guī)則放好其它3 張牌,此時王牌明放,暗牌花色是用互補提示法,即沒出現(xiàn)的那種花色,面值按前述規(guī)則確定。
2b:此時把王牌明放在首位,2 至4 張明放,第5 張暗放。此時采取互補提示法,花色由沒出現(xiàn)的花色來標(biāo)定,面值與其他3 張明牌相同。此時應(yīng)為第一張為王牌,無法加減,這樣不會造成混淆。
這個魔術(shù)或者叫游戲的拓展可以從兩方面展開,一是一副牌上加以改變,不再是一副普通的撲克牌了,是一副我們自己構(gòu)造出來的牌。另外可以從一手撲克牌上進行改變,比如不取五張牌搞讀心術(shù)了,改為4 張、或改為6 張。也可以兩方面結(jié)合,這樣就是一個面貌全新的游戲了。
如果縮減為3 張明牌,一張用來暗示暗牌的花色和基礎(chǔ)序號,那么只有兩張牌可以暗示偏移量信息,而兩張牌的大小關(guān)系只有兩種可能的排列方式,因此每種花色最多只能有5 張牌,這樣可以保證同花色的兩張牌間的最小距離不會超過2。至于花色數(shù),由于一手牌只有4 張,因此花色只能有3種,才可以保證有兩張牌同花色。至此我們知道,4 張牌的讀心術(shù)的全副牌應(yīng)該為3 種花色,每種花色5 張牌,整副牌共計15 張。
從純計數(shù)的角度考慮這個問題,如果我們從一副牌共d 張中抽取n 張牌的一手牌,我們可以傳遞多少種不同的信號?進而推得d 的上限應(yīng)該是多少。
我們抽取n 張牌,究竟能傳遞多少種信號呢?首先明牌有(n-1)!種排列方式,暗牌又有n 種選擇方案,因此總共有n!種信號。再將明牌的數(shù)量加入其中,則d=n!+n-1。即d 張牌的的一副牌可以通過抽取n 張的一手牌來進行讀心術(shù)魔術(shù)。下面我們給出兩個較小的例子。
當(dāng)n=2 時,d=3。假設(shè)一副牌只有(1,2,3),我們?nèi)我馊∫皇? 張牌,只可能是(1,2)或(1,3)或(2,3),此時我們可以將模3 意義下較小的一張作為明牌,即分別取1、3、2 作為上述3 手牌的明牌即可。
當(dāng)n=3 時,d=8。此時就不是那么輕而易舉的解答了。假設(shè)一副牌仍然是(1,2,3,4,5,6,7,8),典型的一手牌如(2,3,7)。此時我們考慮明牌可見的有序二元組和包含暗牌在內(nèi)的3-組合之間的關(guān)系。
明牌是2 張牌的2-排列,如果整副牌是1---8,則這個2-排列共有8*7=56 種可能。同時我們考慮含暗牌的三組合c(8,3)恰好也等于56。因此如果我們能建立起一種一一對應(yīng)關(guān)系來我們就可以從明牌的2 元有序?qū)?,直接推得一個3 元組合,這個三元組合必須包含二元有序?qū)褐械膬蓚€元素。
這兩個集合基數(shù)是相等的,都為56。這兩個集合之間的關(guān)系滿足6-正則兩部圖,下面我們仔細分析下兩個集合間的可能的對應(yīng)關(guān)系。對于明牌<1,2>對應(yīng)的3組合只能是以下六種,(1,2,3)、(1,2,4)、(1,2,5)、(1,2,6)、(1,2,7)和(1,2,8)。對于整手牌比如(1,2,3),對應(yīng)的明牌只可能是<1,2>、<2,1>、<1,3>、<3,1>、<2,3>和<3,2>。其它有序?qū)腿M也都是如此。這樣看來整幅圖是6 正則的兩部圖。
幸運的是,根據(jù)兩部圖的婚姻定理,這樣的正則兩部圖總存在完美匹配。這樣我們就可以以其中一個完美匹配為編碼和解碼的原則來實現(xiàn)撲克牌讀心術(shù)。
魔術(shù)謎題浩如煙海,編碼理論魅力無窮,我們將二者結(jié)合,主要透過讀心術(shù)魔術(shù)謎題及其解密來探討編碼的能力及其上限。其中不含王牌的謎題解法嚴(yán)密、邏輯清晰;含王牌的魔術(shù)謎題則略顯復(fù)雜,情況也分得比較多。至于廣義的撲克牌讀心術(shù),我們只是做了初步的探討,這里有編碼能力的問題,相對還是比較好研究的,更為困難的是具體可行解的探索,這將是長期的復(fù)雜的過程。目前還僅對正則兩部圖的求解有確實的理論依據(jù)和行之有效的做法,對于廣義的問題有待于進一步探索。