扫雷作为策略游戏,需要游戏者精确的判断。在面对一个超大雷阵时,如何才能做到“迅风扫落叶”?这当然需要一定的技巧,而技巧的高下之分,其实从第一步就已经开始。
Windows 系统保证了扫雷的第一步无论点击哪个方块都是安全的。一名普通玩家一上来大概会很随意地点击一个方块,反正不晓得哪个是雷又肯定是安全的,点哪不一样。但对高手来说,却是每一步都要运筹帷幄。
在扫雷游戏中,如果你点击的方块附近都没有地雷,点击的后果就是一片没有雷的区域瞬间展开了,然后我们就可以根据区域边缘的数字慢慢排雷。
于是问题来了:第一步点击什么位置碰到安全区域的几率更大?是角、边还是中间?这当然需要算一算。
首先不难看出,点击某个方块出现一片安全区域的条件是这个方块的周边没有地雷。假设我们第一次点击的方块处在盘面中间的位置,那么就需要它周围的 8 个方块都没有雷;如果方块在盘面的 4 条边上,则是 5 个方块;在角上是 3 个方块。
假如我们第一次点击的方块在盘面中间,那么出现安全区域的概率就等于它周围 8 个方块都没有雷的概率(暂且不论这个安全区域可以有多大)。如下图所示,令 N 表示盘面上格子的总数, M 表示地雷的个数,前面说过因为第一次点击的一定不是雷,所以这时候场上还剩 N-1 个格子和 M 个地雷,于是图中右下角那个格子不是雷的概率就是 (N-M-1)/(N-1)。
类似地,当前场上还剩 N-2 个格子和 M 个雷,所以下一个格子依然不是雷的概率是 (N-M-2)/(N-2)。
安全区有大有小,依此类推,最后可以发现,第一次点击的格子,其周围没有雷的概率是: 对于边和角的情况,推导的过程完全类似,只是上述乘积的项数不一样——边上只有 5 项,角上只有 3 项。
根据游戏的设置,将 N 和 M 的取值代入这个表达式中,最终可以得到三种难度下三种策略各自出现安全区的可能性大小:所以得出的结论是,“从角上开局”!
当然,看到这里你可能有个疑问,虽然说第一步点击角出现安全区的概率最大,但安全区域的面积也有大有小。一个直观的想法是,虽然角上出现安全区域的可能性最大,但其能扩展出的面积也最受限制。而在中间的位置,虽然安全区出现的可能性最小,但是一旦出现,这个区域可以向四周发散,能扩展出的面积也随之增大。这两个因素相互制约,究竟谁能最终胜出?
我们转而考虑另一个指标,也就是某一个方块被点击后出现的安全区域的平均面积,这个指标在概率论和统计学中称为期望值。但因为安全区域面积的期望大小很难从理论上推导出来,所以在这里我们利用了蒙特卡罗模拟的办法来对它进行计算。其主要流程就是在电脑中模拟很多次扫雷的过程(比如 10 万次),然后把每一次的结果记录下来,最后做一次平均。
下图是初级模式下游戏开始第一步,点击每个格子出现安全区域的期望面积,可以看出,颜色越浅的地方安全区域面积倾向于越大,在图中即为四个角的位置,平均下来一次可以击出约 16 个格子。最“差”的地方则是从外向里第二圈的四个顶点,仅为 10 个格子左右。这其实也符合记录,初级扫雷的世界纪录是 1 秒,世界上很多人达到了这一点。
在1秒的时间里完成初级扫雷其实属于碰运气,最可能的方法就是直接点击 4 个角的方块。
类似地,中级和高级的图如下所示:其中颜色最浅的地方都指向了四条边的中心。
所以,如果考虑的是连击区域的大小,那么在初级模式下还是应该优先选择四个角的位置;而对于中级和高级模式,则是边的中心其大小的期望值最大。
然而上面用蒙特卡罗方法得出的结果却并不就是我们想要的答案。计算机模拟的只是第一步点击哪里出现安全区域的期望面积最大。但实际上,第一次点击出现的安全区域面积越大,下一次点击未知区域出现安全区域的概率也就越小,区域面积也会越小。
如果只是贪图第一步捡一个大便宜,而让之后的操作寸步难行,那未免得不偿失。
另一方面,并非每一个扫雷局都是有解的,有时候根据现有的局面,并不能够判断最后剩下的几个方块哪个是雷哪个不是,例如下图这种情况,剩下两个方块各自有雷的概率都是 50%。
出现这种情况,除了因为地雷布局的原因,还和游戏者的操作有关。试想辛辛苦苦大半天,最后却只能“谋事在人成事在天”,未免太亏。而如果第一步就点击角落,自然就降低这种局面出现的概率。
对于扫雷游戏来说,首要目的是要排出全部地雷,其次是尽量缩短游戏时间。而根据前面的推算,我们知道,首先点击角无疑会让这个游戏变得更为简单和容易,并且也不会为之后的操作带来什么麻烦,作为一名技术流高手,第一步首先点击角落的方块,无疑是最保险和高效的。