一、什么是策梅洛定理?
是以恩斯特·策梅洛命名。其表示在二人的有限游戏中,如果双方皆拥有完全的资讯,并且运气因素并不牵涉在游戏中,那先行或后行者中必有一方必胜或者平局的策略。
策梅洛定理告诉我们,假设双方都是棋类大师,对游戏树了如指掌,这时候他们一定会采用统一的策略,让游戏向固定的方向发展,最终的结局也是固定的。因为任何一个人单方面的改变决策,都会对自己不利。
二、最简单的游戏分支举例:
我们假设有一个非常简单的游戏:先手A和后手B各做一次决策,选择上路或者下路。那么根据二人决策的结果,游戏的胜负如下:
通过这个表格,你能够知道游戏的结果是谁获胜吗?有的人会认为A的赢面会大一点,A有两种可能会赢,B只有一种可能。但是,事实并非如此,这盘棋的结果一定是和棋。我们可以画一个游戏树来解决这个问题。
- 如果A选择了上路,那么游戏会进入到一个由B进行决策的分支。这叫做一个子游戏,在这个子游戏中B选择上方,A就获胜;B选择下方,B就获胜。B要选择对自己有利的,所以他一定会选择下方。这个子游戏的结局是固定的,就是B获胜。
- 如果A选择了下路,那么游戏进入到一个由B做决策的子游戏中,这时B选择上方,A获胜;B选择下方,就是和棋。B要选择对自己有利的,所以这个子游戏的结局一定是和棋。
3、考虑A,如果A走上方,进入子游戏1,一定是B获胜。A走下方,进入子游戏2,一定是和棋。A要选择对自己有利的,所以A一定会选择下方。因此最终的游戏,就是和棋。
4、总结:如果游戏复杂一些,也不过是分支变多、长度变长,但是只要我们从最后端的子游戏开始,一层一层地倒推,就一定能够推算出在最优决策下,游戏到底是先手胜还是后手胜或者是和棋。这种胜负是不可避免的。
三、围棋的复杂度
其实,象棋也好,围棋也好,它们与我们刚才举的例子没有本质的不同,只是复杂度高很多,而且由于制定了一些胜负以及和棋的规则,下棋的步骤也是有限的。理论上讲,我们是可以画出围棋的游戏树的,如果我们遍历的所有情况,就能够知道围棋的结局到底是先手必胜还是后手必胜或者一定是和棋了。只是这个过程过于复杂。
以围棋为例,围棋在19*19=361个格子上轮流放棋子。所以每一个格子有黑、空、白三种可能。整个棋盘上的状态的上限是3的361次方=1.7*10的172次方这么多。去掉一些重复和对称,围棋的状态复杂度大约是10的171次方的量级。要知道,宇宙中原子的个数大约只有10的80次方。就算用宇宙中的一个原子代表一个围棋的局面,穷尽宇宙中所有的原子,也不能表示出围棋所有的局面。
围棋的游戏树就更加难画了,因为围棋可以提子,有了空白的地方还可以继续下,所以并不一定是填满了棋盘就结束了。不过我们还是可以估计游戏树的总层数,以及每一层的分支。根据统计和计算,一盘围棋的平均手数是150手。每一手的平均分支数是250种。所以整个围棋的游戏树复杂度是=。
理论上讲,如果我们遍历了这所有的情况,我们就能够知道围棋的结局到底是先手必胜还是后手必胜或者是和棋了。但是这个计算量实在是太大了,但是这个围棋的最优策略一定是存在的。
不仅仅是围棋,其他所有的明棋都是这样,只不过复杂度不同而已。