正文内容 评论(0

扫雷第一步:先戳哪里最高效?
2012-06-12 20:23:54   编辑:上方文Q     评论(0)点击可以复制本篇文章的标题和链接

扫雷作为策略游戏,需要游戏者精确的判断。在面对一个超大雷阵时,如何才能做到“迅风扫落叶”?这当然需要一定的技巧,而技巧的高下之分,其实从第一步就已经开始。

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%。

扫雷第一步:先戳哪里最高效?

出现这种情况,除了因为地雷布局的原因,还和游戏者的操作有关。试想辛辛苦苦大半天,最后却只能“谋事在人成事在天”,未免太亏。而如果第一步就点击角落,自然就降低这种局面出现的概率。

对于扫雷游戏来说,首要目的是要排出全部地雷,其次是尽量缩短游戏时间。根据前面的推算,我们知道,首先点击角无疑会让这个游戏变得更为简单和容易,并且也不会为之后的操作带来什么麻烦,作为一名技术流高手,第一步首先点击角落的方块,无疑是最保险和高效的。

扫雷第一步:先戳哪里最高效?

延伸阅读:想扫雷高手?先练好逻辑吧

扫雷作为策略游戏,需要游戏者精确的判断。现在扫雷高级的官方最快纪录是33.95秒,中级则是由一个波兰玩家保持的8.5秒,而初级纪录是1秒,世界上很多人达到了这一点。在1秒的时间里完成初级扫雷,据测算概率在0.00058%至0.00119%之间(属于运气题),最可能的方法是直接点击四个角的方块。下边我们就要将雷与雷之间的规律给你揪出来,并且深入思考其中的内涵。让你以后面对扫雷时,缩短与记录的差距,战无不胜!

从简单雷区入手

下图是一个初级的雷区,并且标注了两颗雷的位置,你能将剩下的地雷扫描出来吗?

扫雷第一步:先戳哪里最高效?

经过逐一排查,可以很轻松的确定雷区中的6颗地雷所在位置:

扫雷第一步:先戳哪里最高效?

再来看一个简单的“雷区”:

扫雷第一步:先戳哪里最高效?

通过逐步扫描每一个方块会发现:首先最左边的和最右边的两个格子都一定是地雷,从左数第二个空格子和从右数第二个空格子也都是地雷,由于数字1的关系,从左数第3个格子和从右数第3个格子都不是地雷,翻开一定是数字1……这样一直下去,最后你会发现最中间的两个空格子,不管有没有地雷,都和周围格子上的数字不符。也就是说这样的雷区有bug,是无解的。

雷区中的逻辑门

怎么判断一个雷区是否有bug?又怎么判断雷区中地雷的具体位置呢?难道一定要从头到尾将雷区扫描一遍吗?

其实这些雷区里其实藏着一个规律。我们用数学方法来分析了上例的雷区:

在之前提到的这两个雷区里,把还没有翻开的格子交叉标记上字母x和x’。可以看到:当x的格子有雷时,x’格子一定没有地雷,反之亦然。如果将最左边的空格子作为输入,把最右边的格子作为输出,输入结果和输出结果一定是一样或者相反的。如果是相反的,这相当于一个NOT(“非”)门电子元件。如果是一样的,就有趣了,这样的一片雷区就具备了电路导线的性质!

扫雷第一步:先戳哪里最高效?

在这里,雷区被看成了一个数字逻辑电路。执行这些“或”、“与”、“非”等逻辑运算的电路则被称为——逻辑门。任何复杂的逻辑电路都可由这些逻辑门组成。

逻辑门是集成电路上的基本组件。简单的逻辑门可由晶体管组成。这些晶体管的组合可以使代表两种型号的高低电平在通过它们后产生信号。而高低电平可以分别代表逻辑上的真假或二进制中的0和1,从而实现逻辑运算。具体到扫雷游戏里,也就是说,逻辑门可以用于判断一系列格子中的地雷的具体位置,而且它如同电路传导一样,精确而迅速。

常见的(也是扫雷中用到的)逻辑门包括“与”门、“或”门、“非”门等。将它们组合使用就可以实现更复杂的运算——完成复杂情形下的扫雷,这种方法比按照规则缓慢推进的扫雷方法要节省很多时间。

扫雷第一步:先戳哪里最高效?

复杂雷区中的精确判断

在简单的雷区中小试牛刀后,带着发现的规律,让我们进行一次实战演习。下图是高级扫雷游戏中的一个典型的雷区:

扫雷第一步:先戳哪里最高效?

你能在不翻开格子的情况下,直接指出黄格子中有无地雷吗? 如果将雷区随意改变一点——左上角的一个格子下移一位,结果又如何呢?

扫雷第一步:先戳哪里最高效?

你可能需要考量全局,从某个点开始逐步推理,将雷区全部扫描一遍,才能判断,而当雷区任意改变一点时,你都要重新来过,才能再次解答。这无疑是一种巨大成本负担。

实际上我们可以很快速地给出答案:第一个雷区的黄格子中无雷,而第二个雷区的黄格子中一定有雷。

这是怎么做到的?其实将上述的逻辑门引入到这个复杂的雷区中,一切都会变得简单而清晰起来。

扫雷第一步:先戳哪里最高效?

雷区内靠近边界、可以直接确定是地雷的位置都插上了标示旗,剩下的位置标上了不同的字母。把一个有地雷格子看作1,没有地雷的看作0。最左面的格子(u、v)作为输入,最右面的格子(t)作为输出。按照扫雷游戏的规则,经过一步步推算,它们之间的关系就是:

( u , v , t ) = ( 1 , 1 , 1 ) 或 ( 1 , 0 , 0 ) 或 ( 0 , 1 , 0 ) 或 ( 0 , 0 , 0 )

显然,这个雷区被归纳成了一个AND门,它不仅轻松化解了这个扫雷难题,而且把雷区的规律揭示出来了。如此一来,当你掌握扫雷中这些逻辑门规律并加以练习后,就能够达到精确、快速的“机械化”扫雷水准。到那时,一个新纪录或许就会诞生了。

数学家的扫雷研究

将扫雷问题抽象化从而缩短游戏时间的人,也不仅仅是扫雷发烧玩家。一些数学家也十分关注这个游戏背后的数学意义。

英国一位数学家用扫雷游戏中的逻辑规律构建了一系列电子元件,用电子电路模拟雷区。他试图将一个的给定的雷区图案交由计算机来判断是否可解。如果随着格子数量的增加,电脑的计算量增长不是很快,就是P问题,如果计算量增加的很快,就是NP问题。计算机判断雷区是否可解,需要这类问题属于P问题才可以。

对于几种基本的电路元件(AND、OR、NOT),如果将很多个这样的元件组合起来,相互连接,就会产生很多个输入、输出口。判断最后哪些输出结果可以产生,哪些不可以产生的这类问题,被称为SAT问题,它属于一个经典的NP完全问题。

而英国数学家的这个问题在一些时候等同于一个复杂电子电路的SAT问题,也就是NP完全问题。由此看来,面对一个上千上万个格子的巨型雷区,不要说去完成所有扫雷任务,就仅仅判断它是不是可解的,都可能会是计算机也承受不了的的大难题。

(文/果壳网)

【本文结束】如需转载请务必注明出处:快科技

责任编辑:

  • 支持打赏
  • 支持0

  • 反对

  • 打赏

文章价值打分

当前文章打分0 分,共有0人打分
  • 分享好友:
  • |
本文收录在
#黑客

  • 热门文章
  • 换一波

  • 好物推荐
  • 换一波

  • 关注我们

  • 微博

    微博:快科技官方

    快科技官方微博
  • 今日头条

    今日头条:快科技

    带来硬件软件、手机数码最快资讯!
  • 抖音

    抖音:kkjcn

    科技快讯、手机开箱、产品体验、应用推荐...