玩不够的数学2:当数学遇上游戏
上QQ阅读APP看书,第一时间看更新

第2章 怎么玩一手完美的扑克

既有随机成分,玩家又只知道不完整的信息,这就是两人德州扑克的难题。这个难题已经被解决了:人们提出了一个不可能被打败的策略。

要用计算机解决双人游戏有两种方法:要么编写一个程序,让它能打败所有人类对手,这种做法不一定一劳永逸,因为人类玩家有可能迎头赶上,这就是“弱解决”;要么编写一个以最优策略运作、从而不能被打败的程序,这就是“强解决”。

对于国际象棋来说,我们已经完成了弱解决:自从1997年加里·卡斯帕罗夫与计算机深蓝(Deep Blue)的著名对局以后,机器就一直比所有人类选手都强大,在今天,人类选手已经绝无可能逆转局势。但由于游戏局面的大量组合(据计算,大概有10120种可能的对局),大部分专家认为我们不可能在可预见的将来完成强解决。有些游戏编程的专家,比如说法国的西蒙·维耶诺和朱利安·勒穆瓦纳,也就是最优秀的萌芽游戏萌芽游戏(Sprouts)是一种纸笔游戏,双方开始前先在纸上画上一定数量的点,然后双方交替,每次画上一条线连接任意两点,然后在线上画上一点。但画线时,每个点最多只能引出三个线头,而且画出的线不能跟别的线或者自身相交,但可以是任意的直线或者曲线。——译者注程序的缔造者,则认为简化双方决策树的方法,即他们做出贡献并完善的方法,也许在大约20年后能用于得出国际象棋的最优策略,即完成强解决。马克西姆·瓦西耶–拉格拉夫,自菲利多尔(1726—1795)后最优秀的法国棋手,认为最优策略会导致平局。

对于英国跳棋来说(跟法国跳棋很相似,但它用的是8×8的棋盘),加拿大阿尔伯塔大学的乔纳森·谢弗团队开发的Chinook程序从2007年开始就提出了强解决方法。这个程序还由此证明了先手至少也能打成平局:如果Chinook的对手犯错的话,那么Chinook就能赢;如果对手完美应对的话,那么就会打成平局(见第5章)。对于围棋来说,2016年AlphaGo已经完成了弱解决。

上面提到的游戏都是所谓的完全信息游戏:玩家没有隐藏任何信息,游戏中也没有随机性。纸牌游戏(勃洛特勃洛特(belote)是法国流行的牌类游戏,只用32张牌,跟桥牌有相通之处,但要简单得多。——译者注、扑克之类)的性质就完全不同:一来,在发牌的时候就有随机因素,我们拿到的牌可好可坏,攥着一手坏牌基本上就赢不了;二来,有关牌如何分配的信息,每个玩家都只知道一部分,而且不知道对手拿到了什么牌。但我们还是可以讨论这类游戏的弱解决和强解决。如果一个程序能在足够多轮(足以平衡运气好坏)的游戏中打败所有人类玩家,那么它就完成了游戏的弱解决。如果一个程序再没有改进的余地,也就是说对于任意在想象范围内的玩家,如果它在轮数足够多的游戏中都能胜利或者打个平手的话,那么它就完成了强解决。2015年1月,加拿大阿尔伯塔大学迈克尔·鲍林领导的研究团队发表了一篇论文,讲述了如何强解决一种人类玩家众多的扑克变种:一对一限注德州扑克(Heads up limit Hold'em,以下简称HULHE扑克)。这是德州扑克的一个变种,只有两名玩家,对下注也有限制(见框1)。

1.德州扑克

《007:大战皇家赌场》让德州扑克大受欢迎。在电影里,詹姆斯·邦德用一手同花顺(黑桃45678)打败了对手的葫芦(三条A和一对6)。在德州扑克每一局开始时,每位玩家都会接到两张只有自己能看到的底牌,然后会有五张牌逐渐被发到牌桌上。

首先发三张牌(“翻牌”),然后发一张牌(“转牌”),最后发一张牌(“河牌”)。每位玩家用手里底牌的两张或一张,或者一张不用,与台上五张牌中的一部分凑成一手一共五张的牌,而且要组成最强大的牌组(从弱到强是一对、两对、三条、顺子、同花、葫芦、四条、同花顺、同花大顺)。游戏开始时的强制下注构成了彩池;然后,在牌桌上的公用牌逐步被翻开时,玩家可以放弃(就此输掉之前下的注)、跟注或者加注;在加注完毕后,没有退出的玩家亮出各自的底牌(“斗牌”),谁的组合最强,谁就赢得整个彩池;在平手的情况下,彩池也会被平分。

在加注阶段用到的术语如下。

盖牌(fold):认输并放弃已下的注。

跟牌(call):追加下注,使得总下注与台面最大的下注相等,这样才能留在牌局中。

加注(raise):追加下注,使得总下注超出其他玩家的下注,其他玩家只能盖牌、跟牌或者加注。

全下(all-in):将手头所有筹码用于追加下注;在限注德州扑克中,开局就限定了每位玩家能下注的最大数目。

德州扑克有很大的运气成分,但有关扑克的电影让人印象深刻的通常是那些赌桌英雄的推断能力、控制表情以免泄露天机的能力和夸张演技。在所有电影中,双方的最后一手都强得不像话。