扫雷求高手结构力学求解器

扫雷第一步,先戳哪里最高效? | 科学人 | 果壳网 科技有意思
扫雷第一步,先戳哪里最高效?
扫雷游戏第一步点哪里最好?金角银边草肚皮
扫雷高手宝典
本文作者:解名缰
扫雷作为策略游戏,需要游戏者精确的判断。在面对一个超大雷阵时,如何才能做到“迅风扫落叶”?这当然需要一定的技巧,而技巧的高下之分,其实从第一步就已经开始。
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%。
出现这种情况,除了因为地雷布局的原因,还和游戏者的操作有关。试想辛辛苦苦大半天,最后却只能“谋事在人成事在天”,未免太亏。而如果第一步就点击角落,自然就降低这种局面出现的概率。
对于扫雷游戏来说,首要目的是要排出全部地雷,其次是尽量缩短游戏时间。而根据前面的推算,我们知道,首先点击角无疑会让这个游戏变得更为简单和容易,并且也不会为之后的操作带来什么麻烦,作为一名技术流高手,第一步首先点击角落的方块,无疑是最保险和高效的。
为了理论结合实践,众编辑纷纷亲赴雷区,不幸的是,某人不小心用力过猛把机器戳爆了…
相关阅读:
参考资料:
你可能感兴趣
果壳网主编,科学松鼠会成员
那是我的手,这种事我会随便说嘛。。。
友情提醒,玩扫雷是会上瘾的……
看很多人都还在淘宝用原价购买商品,我分享一下如何用获得商品内部券的方法,一年应该也能够帮助大家节省不少钱:例如我看中的一款泳衣,天猫旗舰店原价是66元:领了40的内部卷后就变成26元了这个不是个例,其实大部分的商品都有内部券,只是一般人不知道罢了这些大额卷的来源有两种方式,一种是漏洞卷,这种情况可遇不可求,具体来源我就不过多介绍了,以免影响商家的利益另外一种其实就是变向刷销量的方式,大多数的大额卷来源于这种方式,只不过卖家前期比较吃亏,在商品前期卡排名做好评的过程中,销售量上去了,才能在淘宝有排名,吸引更多的顾客直接下单,从淘宝购买看不到内部卷,都是原价同作为天猫卖家一枚,也说了一些不该说的,另外经常有人私信我问这种商品的大额优惠卷是从哪里来的,因为我姐就在做这一块,想要领各种优惠卷的可以找加她微信:yeye362,(补充:内部卷是免费的,是商家为了冲销量卡排名提供的)算是打了个广告,但的确也是事实,其实对大家来说,也能省不少钱,我也问心无愧了如果感觉有帮助,就给我点个赞吧~哈~
显示所有评论
全部评论(312)
这个需要学习-Come frome Guokr Reader-
戳爆了.....
学校的老师很反感我们在实验室70寸的电视上用手玩扫雷,但是我们没玩水果忍者已经是给老师面子了
热衷windouws小游戏的前来报个道
亮点在最后一句来自
戳的太对了,减少无解的出现就是要先点角落,第一步的安全区域大小对速度影响不大
好久没玩扫雷了...一直是先戳四个角难道我是天生高手 :D对下面这句话表示怀疑Windows 系统保证了扫雷的第一步无论点击哪个方块都是安全的。我怎么记得自己经常第一个戳到雷...另外我想知道, 编辑部哪位高人能把机器戳"爆"了...
果壳网主编,科学松鼠会成员
那是我的手,这种事我会随便说嘛。。。
Lenovo软文……?
怪不得触屏版的打地鼠不是很流行呢!
的话:学校的老师很反感我们在实验室70寸的电视上用手玩扫雷,但是我们没玩水果忍者已经是给老师面子了不是反感,是鄙视,大屏幕增大了移动距离是扫不快的。
技术贴啊 = =!
的话:不是反感,是鄙视,大屏幕增大了移动距离是扫不快的。恩的确,我在我家电视上切西瓜那叫一个累啊
sogar.原来扫雷还有这些技巧的... 一直随便点的...
一定要用蒙特卡洛算法吗?求高手做直接分析……
统计与精算学硕士生,useR
的话:一定要用蒙特卡洛算法吗?求高手做直接分析……那会疯掉的……
友情提醒,玩扫雷是会上瘾的……
早说啊想当初最大的地图最多的雷第一步就爆……连着2次……
我都是先四个角
摸摸脑袋。。我从来都是先点四个角的。。。
可同时四个角中很容易一个是雷…肯定是故意的…
戳爆了 - -
因为第一步绝对安全-----------------这是没根据的话,我有很多次第一次点,就死了。。。。
解除电脑十几年,到现在还是不会玩扫雷
空间信息与数字技术专业
好像 Windows 8 CP (木有 RP) 没带扫雷的。。。
显示所有评论
(C)2017果壳网&&&&京ICP证100430号&&&&京网文[-239号&&&&新出发京零字东150005号&&&&
违法和不良信息举报邮箱:&&&&举报电话:| 游戏瓶旗下网站
您的位置:&&&&&&正文
技术贴:经典游戏《扫雷》攻略 读完你就是扫雷高手!
17:43 来源:本站原创 作者:裸奔
[浏览:2479次]
扫雷作为策略游戏,需要游戏者精确的判断。在面对一个超大雷阵时,如何才能做到“迅风扫落叶”?这当然需要一定的技巧,而技巧的高下之分,其实从第一步就已经开始。
扫雷作为策略游戏,需要游戏者精确的判断。在面对一个超大雷阵时,如何才能做到“迅风扫落叶”?这当然需要一定的技巧,而技巧的高下之分,其实从第一步就已经开始。
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完全问题。由此看来,面对一个上千上万个格子的巨型雷区,不要说去完成所有扫雷任务,就仅仅判断它是不是可解的,都可能会是计算机也承受不了的的大难题。
【评论】技术贴:经典游戏《扫雷》攻略 读完你就是扫雷高手!
健康游戏公告: 抵制不良游戏
拒绝盗版游戏
注意自我保护
谨防受骗上当
适度游戏益脑
沉迷游戏伤身
合理安排时间
享受健康生活【图文】游戏扫雷的玩法技巧详解_百度文库
两大类热门资源免费畅读
续费一年阅读会员,立省24元!
游戏扫雷的玩法技巧详解
大小:102.41KB
登录百度文库,专享文档复制特权,财富值每天免费拿!
你可能喜欢}

我要回帖

更多关于 结构力学求解器 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信