蒙特卡洛方法的应用——解决“彩色砖块”问题

本文介绍了一种利用蒙特卡洛方法解决游戏中砖块消除问题的方法。通过不断进行随机实验,该方法能在理论上找到游戏的最优解,即消除所有砖块。虽然时间复杂度较高,但其只需游戏规则即可实现。

同贝叶斯方法一样,蒙特卡洛方法与其说是一种算法,不如说是一种思想。

灵活的运用蒙特卡洛方法可以解决很多问题。比如可以用它来求pi,求pi肯定有比这更好的方法,但是蒙特卡洛方法是所需条件最少的,只是充分利用了计算机产生随机数的能力。我们不需要知道pi等于什么级数,只需要知道圆的面积等于pi*r**2。

下面来看如何用蒙特卡洛方法解决一个实际问题,而且其它的方法不太容易解决。

关于彩色砖块

http://www.3366.com/flash/1000132.shtml
是3366上的一个小游戏。
这里写图片描述
界面如图所示。这是一个消除类的游戏。
小游戏目标:
十字消除的玩法。鼠标放到合适位置,在十字线区域能连接到两个或两个以上相同颜色的方块就能打碎得分。点击错误将会扣除时间,时间结束,游戏结束。

其实是一个很简单的,只是考验眼力和手速的游戏。
问题在于砖块总是不能全部消尽。
这里写图片描述
一局游戏的结果往往是这样的,有一些砖块变得无法消去,即使还有时间。

那么,问题来了,如何得到一个最优解,把所有砖块全部消除掉?

基于蒙特卡洛方法的解决方案

总的方案的是,一次接一次的进行随机实验,直到某一次实验中,所有的砖块都被消去了。
重点在就在于随机实验,所谓的随机实验,是指一局以需要解决的局面为开局的,在计算机中模拟进行的游戏,这局游戏中每一次的点击操作都是从所有可能点击的点中随机选取的,没有任何专家意见和目标性。

代码写得比较粗糙,就不贴出了。

缺点:这个方法的时间复杂度是很高的。
优点:只需要知道规则就可以了,其它的一概不需要。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值