数学魔术:给暗号也要给得有艺术

  数学

在《赌神》系列电影里,赌神可以让手里的五张牌鬼使神差地变为一套皇家同花顺(也就是同花色的 10、J 、Q、K、A 五张牌)。皇家同花顺是德州扑克赌桌上的绝杀,手里捏一把皇家同花顺便无人能敌了。

作为一个数学魔术控,我可没有传说中赌王、赌神、赌圣们那样的必杀技。不过,我也有我自己的绝招。如果给我五张皇家同花顺的扑克牌,把它们背面朝上排成一列,我可以“读出”每张牌各是哪一个。

魔术是这样表演的。首先,魔术师本人按兵不动,由魔术师的助手先上场。他手里拿着这五张牌,现场找一位观众,让观众把这五张牌的顺序洗乱。洗完牌后,把五张牌正面朝上依次摆在桌面上,以验证这些牌都没有被更换过。

/gkimage/dl/ok/m8/dlokm8.png

观众把洗好的牌依次放在桌面上。

验证环节结束之后,这五张牌全都被翻了过去。

/gkimage/x9/aw/j4/x9awj4.png

桌上的五张牌都被翻了过去。

然后魔术师的助手说:“其实我并不是真正的魔术师,下面请大师登场。”魔术师上场后,助手继续说:“首先,我抛砖引玉,随便翻开两张牌。比如第三张——是张 K;再翻开第四张——一张 10。剩下三张背面朝上的牌都是什么,就要看魔术大师的功力了。”

/gkimage/8k/sp/z4/8kspz4.png

助手翻开了一张 K。

/gkimage/hr/q9/wz/hrq9wz.png

助手翻开了一张 10。

大师走到扑克牌前,淡定地说:最左边一张是 A,最右边这张则是 J,剩下这张就是 Q 了。翻开这三张牌,大师说的果然没错,三张扑克牌全部命中。

漂亮的暗号系统

大师读牌功力的秘密到底在哪里呢?有人或许已经猜到,他的助手一定逃脱不了干系,因为助手知道五张背面朝上的牌都是什么牌,他一定用某种暗号告知了“大师”本人。在魔术中,助手要先翻开其中两张牌,但究竟翻开哪两张牌,这可以由助手自己来选择。这种选择本身很可能就是助手和大师之间交流用的暗语。

问题的难点就是,如何构造一种暗号系统,使得助手总能选出适当的两张牌翻过来,就能让魔术师立即知道剩下的三张牌是什么。

助手和魔术师之间的暗语非常巧妙。助手先从扑克牌中找出三张点数依次增大或者依次减小的牌。在上面的例子中,观众洗好的牌从左至右依次是 A、Q、K、10、J,其中 A、Q、J 就是三张点数逐一减小的牌(当然,可能还有别的符合要求的组合)。然后,助手翻开另外两张牌(一张 K 和一张 10),并且先翻开大的那张,再翻开小的那张,暗示魔术师剩下的三张牌是递减排列的。魔术师便可推出,剩下的三张牌依次是 A、Q、J 了。

我们再举一个例子。如果观众洗好的牌依次是 Q、10、A、J、K,魔术师助手可以先翻开数值较小的 Q,再翻开 A,告诉魔术师剩下的 10、J、K 是按照递增方式排列的。

暗号系统总适用

这个策略确实很妙,但是,万一观众洗好的扑克牌序列中没有三张递增或者递减的牌该咋办?我们可以证明,这种情况是绝不会发生的。对于一个由 5 个不相同的数字组成的数列,无论怎样排列,从中一定可以找到一个长度为 3 的递增子序列或者递减子序列。假设五张牌的数值分别是 a、b、c、d、e,不妨假设 a b,由对称性,下面的推理同样适用)。只要 c、d、e 中有一个数比 b 大,它就和 a、b 一起构成了递增序列。现在,我们只需要考虑 c、d、e 都比 b 小的情况。如果 c > d,b、c、d 就会构成一个递减数列;如果 d > e,b、d、e 也会构成一个递减数列;如果以上两条都不满足,c、d、e 本身就变成一个递增序列了。可见,无论如何,长度为 3 的单调序列都是避免不了的。

利用鸽笼原理,我们不难证明这个定理的扩展形式:n 2 + 1 个不同的数组成了一个数列,则一定能从中挑选 n + 1 个数,它们正好是依次增大或者依次减小的。

LEAVE A COMMENT

This site uses Akismet to reduce spam. Learn how your comment data is processed.