军棋
刚才我们讨论的几种棋,虽然复杂度不同,但它们都是明棋,也就是博弈双方都对目前的局势了如指掌。这样的棋有最优解,谁更接近最优解,谁的棋术就更高,不出意外的情况下,棋术低的人绝不可能赢棋术高的人,就比如我和阿法狗下围棋,是绝对赢不了的。
但也有一些棋
下棋的人并不知道所有棋子的情况
有的时候,因为运气好
棋术差的人也能战胜棋术好的人
这就为游戏增添了很多乐趣
这种暗棋就是不完全信息博弈
比如,大家还记得军棋吗?
军棋
双方各有25个棋子,司令可以吃军长,军长可以吃师长,工兵可以挖地雷,挖完了地雷扛军旗就赢了。军棋有很多种玩法,其中一种是:开局之前,你要先暗自排兵布阵,把自己的25个子放在25个位置上,不让对方看到。两个子相遇,由裁判判定谁吃谁。所以双方都不知道对方的棋子是什么。我小时候特别喜欢玩军棋,运气好的时候自己的司令吃了敌方的军长,或者敌方司令踩了我的地雷,我就特别高兴。
怎么描述军棋的复杂程度呢?我们需要信息集这个概念。
信息集的大小表示所有未知信息的可能数。比如我和张三对局,我知道张三只会10种排兵布阵的方法,只是我不知道他选用了哪一种。这时,信息集大小就是10。
信息集的个数表示所有已知信息的可能数。比如我自己只会5种开局阵型,那么我的信息集个数就是5。
大家想想,我和张三对局时,局面有多少种可能?应该是50种对吗?只要用信息集大小乘以信息集个数就可以了。实际上如果两人对垒,双方各有25个子,排到自己的25个兵站上,开局时军棋的信息集的大小和个数都是25!=1.5x1025种(忽略重复的子)。
军棋棋盘
现在我们就从单一维度的局面状态
变成了信息集大小和信息集个数
两个维度了
信息集大小表示未知可能性的集合
信息集个数表示已知局面的总状态数
不完全信息博弈有两个维度的复杂度
麻将
我们再来看看我们的“国粹”:麻将。
麻将也是一种暗棋。34种牌,每种4张,一共136张牌。开局时四方各抓13张,每一轮抓一张再打一张,最后如果剩下14~16张还没有人胡牌,就算流局。我们知道自己手里的牌,但由于对手牌以及公共牌池中的牌均不可知,所以是不完全信息博弈,是暗棋。咱们具体来算算信息集个数和信息集大小:
麻将
第一轮
信息集个数:麻将牌一共136张,我起手抓13张牌,不考虑重复,我拿到的牌的可能方法数有