搜索
写经验 领红包
 > 设计

蒙特卡罗算法是什么算法的一种(蒙特卡罗算法的特点)

导语:蒙特卡罗算法

蒙特卡罗算法是对一类随机算法特性的统称,并不是某种算法,蒙特卡罗算法的特性是在采样范围内尽量找到最优解,但不保证一定找到。

20世纪40年代,随着计算机的出现,使得用数学方法模拟大数据量的计算成为可能,二战的曼哈顿计划就应用了此算法。

比如:在一堆球里面找到最重的,每次拿一个与前面一个比较,留下重的,次数越多,挑出的球就越重,除非我把这堆球都拿一遍,否则我不能确定挑出了最重的那个,这个挑球的方法就是蒙特卡罗算法。

而与蒙特卡罗算法相对的是拉斯维加斯算法:尽量找最正确的答案,但不能保证能够找到。

如:有100把钥匙,但只有一把能打开锁,每次拿一把去试,在没有打开锁之前,试的次数越多,打开锁的可能就越大,这个试钥匙的方法就是拉斯维加斯算法。

这两个随机算法往往受到问题本身限制;如:一个问题在有限的实验次数内,一定要给出一个答案,但不要求是最佳答案,那么我们就用蒙特卡罗算法。如果要求实验给出最好的答案,但对次数没有限制,那就用拉斯维加斯算法。

前段时间大火的阿尔法狗和柯洁的围棋大战,阿尔法狗使用的就是蒙特卡罗算法,因为对于机器而言,每一步的运算时间,实验的次数都是有限的,而且机器找到的每步棋都是最接近最优解的。

我前面写过一篇如何在excel中利用随机点求圆周率,本质上是利用蒙特卡罗算法。(有限的样本,尽可能接近最优解)

再举个例子:求 y = x^2在 [ 0 , 1 ] 区间的积分。如下图:

求积分即求面积,如下图:

所要求的积分面积即在曲线右下方的面积,判断条件为y < x^2,当点的个数足够多时,近似得到面积值。

在excel中随机生成1000个数来求面积:

函数本身积分求出来是1/3(),我模拟求出来的数值是0.33201(1000个点),通常模拟的点越多,越接近1/3。

有兴趣的读者可以自己试一下~

免责声明:本站部份内容由优秀作者和原创用户编辑投稿,本站仅提供存储服务,不拥有所有权,不承担法律责任。若涉嫌侵权/违法的,请反馈,一经查实立刻删除内容。本文内容由快快网络小信创作整理编辑!