采用知乎上的说法,其实它本身不算是一种算法,更像是对一类随即算法特性的概括。通常会将随即算法分为两类:
- 蒙特卡洛算法:采样越多,越近似最优解;
- 拉斯维加斯算法:采样越多,越有机会找到最优解;
两者差别就有了,一个就尽量找更好的,只要比上一次好就行;而另一个是总是尽量找最好的。可以拿知乎上的例子:
假如筐里有100个苹果,让我每次闭眼拿1个,挑出最大的。于是我随机拿1个,再随机拿1个跟它比,留下大的,再随机拿1个……我每拿一次,留下的苹果都至少不比上次的小。拿的次数越多,挑出的苹果就越大,但我除非拿100次,否则无法肯定挑出了最大的。这个挑苹果的算法,就属于蒙特卡罗算法——尽量找好的,但不保证是最好的。
而拉斯维加斯算法,则是另一种情况。假如有一把锁,给我100把钥匙,只有1把是对的。于是我每次随机拿1把钥匙去试,打不开就再换1把。我试的次数越多,打开(最优解)的机会就越大,但在打开之前,那些错的钥匙都是没有用的。这个试钥匙的算法,就是拉斯维加斯的——尽量找最好的,但不保证能找到。
这两类随机算法之间的选择,往往受到问题的局限。如果问题要求在有限采样内,必须给出一个解,但不要求是最优解,那就要用蒙特卡罗算法。反之,如果问题要求必须给出最优解,但对采样没有限制,那就要用拉斯维加斯算法。
因为最近在学集合卡尔曼滤波算法,要解决的问题是油藏中的历史拟合,而此问题的关键思路就是不断根据观测数据去修正模型参数,保证模型更加符合真实的场景。所以能够看出来,这应该属于蒙特卡洛算法,即每一次总是让模型更加符合真实的模型从而去拟合生产数据,总是比上次的要好。
部分内容转载自https://www.zhihu.com/question/20254139/answer/33572009