蒙特卡罗算法并不是一种算法的名称,而是对一类随机算法的特性的概括。媒体说“蒙特卡罗算法打败武宫正树”,这个说法就好比说“我被一只脊椎动物咬了”,是比较火星的。实际上是ZEN的算法具有蒙特卡罗特性,或者说它的算法属于一种蒙特卡罗算法。

那么“蒙特卡罗”是一种什么特性呢?我们知道,既然是随机算法,在采样不全时,通常不能保证找到最优解,只能说是尽量找。那么根据怎么个“尽量”法儿,我们我们把随机算法分成两类:

  • 蒙特卡罗算法:采样越多,越接近最优解;(强调每一个iteration都在进步,提高的过程)
  • 拉斯维加斯算法:采样越多,越有可能找到最优解;(强调直接想要最优解)

举个例子,假如筐里有100个苹果,让我每次闭眼拿1个,挑出最大的。于是我随机拿1个,再随机拿1个跟它比,留下大的,再随机拿1个……我每拿一次,留下的苹果都至少不比上次的小。拿的次数越多,挑出的苹果就越大,但我除非拿100次,否则无法肯定挑出了最大的。这个挑苹果的算法,就属于蒙特卡罗算法——尽量找好的,但不保证是最好的

而拉斯维加斯算法,则是另一种情况。假如有一把锁,给我100把钥匙,只有1把是对的。于是我每次随机拿1把钥匙去试,打不开就再换1把。我试的次数越多,打开(最优解)的机会就越大,但在打开之前,那些错的钥匙都是没有用的。这个试钥匙的算法,就是拉斯维加斯的——尽量找最好的,但不保证能找到

所以你看,这两个词并不深奥,它只是概括了随机算法的特性,算法本身可能复杂,也可能简单。这两个词本身是两座著名赌城,因为赌博中体现了许多随机算法,所以借过来命名。

这两类随机算法之间的选择,往往受到问题的局限。如果问题要求在有限采样内,必须给出一个解,但不要求是最优解,那就要用蒙特卡罗算法。反之,如果问题要求必须给出最优解,但对采样没有限制,那就要用拉斯维加斯算法。对于机器围棋程序而言,因为每一步棋的运算时间、堆栈空间都是有限的,而且不要求最优解,所以ZEN涉及的随机算法,肯定是蒙特卡罗式的。

机器下棋的算法本质都是搜索树,围棋难在它的树宽可以达到好几百(国际象棋只有几十)。在有限时间内要遍历这么宽的树,就只能牺牲深度(俗称“往后看几步”),但围棋又是依赖远见的游戏,甚至不仅是看“几步”的问题。所以,要想保证搜索深度,就只能放弃遍历,改为随机采样——这就是为什么在没有MCTS(蒙特卡罗搜树)类的方法之前,机器围棋的水平几乎是笑话。而采用了MCTS方法后,搜索深度就大大增加了。比如,在题主说的ZEN与武宫正树九段的对局中,我们可以看这一步棋:

武宫正树九段(执白)第53步大飞,明显企图攻角,而ZEN(执黑)却直接不理,放弃整个右下角,转而把中腹走厚。这个交换究竟是否划算,就不在这里讨论了,但我们至少可以看出,ZEN敢于在此脱先,舍弃这么大的眼前利益,其搜索深度确实达到了人类专业棋手的水平。

蒙特卡罗算法和拉斯维加斯算法比较相关推荐

  1. 蒙特卡罗算法与拉斯维加斯算法比较

    1 蒙特卡罗算法简介 蒙特卡罗(Monte Carlo)算法并不是一种特定的算法,而是对一类随机算法的特性的概括.它的名字来源于赌城蒙特卡罗,象征概率.它的基本思想是通过大量随机样本,去了解一个系统, ...

  2. 蒙特卡罗算法与拉斯维加斯算法 (西瓜书第十一章11.4题补充)

    书上侧边栏给出了关于蒙特卡罗方法和拉斯维加斯方法的提示: 拉斯维加斯方法和蒙特卡罗方法是两个以著名赌城名字命名的随机化方法两者的主要区别是:若有时间限制,以拉斯维加斯方法或者给出满足要求的解,或者不给 ...

  3. 蒙特卡罗算法 与 拉斯维加斯算法

    蒙特卡罗算法并不是一种算法的名称,而是对一类随机算法的特性的概括.媒体说"蒙特卡罗算法打败武宫正树",这个说法就好比说"我被一只脊椎动物咬了",是比较火星的.实 ...

  4. 随机算法:蒙特卡罗算法和拉斯维加斯算法

    随机算法分成两类: 蒙特卡罗算法:采样越多,越近似最优解: 拉斯维加斯算法:采样越多,越有机会找到最优解: 上图区分记忆一下: 蒙特卡罗是一类随机方法的统称,这里摘一段知乎大神(鹌鹑)的概括:(这些蒙 ...

  5. 蒙特卡罗算法与拉斯维加斯算法

    http://www.zhihu.com/question/20254139 太数学的东西就不说了,只用通俗唱法回答楼主的问题. 蒙特卡罗算法并不是一种算法的名称,而是对一类随机算法的特性的概括.媒体 ...

  6. 拉斯维加斯算法与N皇后问题

    拉斯维加斯算法与N皇后问题 拉斯维加斯算法 拉斯维加斯算法不会得到不正确的解.一旦用拉斯维加斯算法找到一个解,这个解就一定是正确解.但有时用拉斯维加斯算法找不到解.与蒙特卡罗算法类似,拉斯维加斯算法找 ...

  7. 拉斯维加斯算法结合八皇后问题

    #include <iostream> #include <cmath> #include "RandomNumber.h" using namespace ...

  8. 随机算法求pi、线性同余法求random、拉斯维加斯算法python

    一.随机算法求pi # 计算圆周率 import pdb import random def CalcPai(n):# 计算π值k = 0for i in range(0,n):x = random. ...

  9. 八皇后 拉斯维加斯算法

    拉斯维加斯算法的一个显著特征就是它所做的随机性决策有可能导致算法找不到所需的解.因此常用一个bool型函数表示拉斯维加斯算法.找到解就返回true,否则返回false. n后问题典型的有回溯法(n后问 ...

最新文章

  1. JetBrain WebStorm 注册码
  2. Xshell连接Centos完整版(动态ip)
  3. 现在女生的床真的都是这样吗?
  4. Centos/Red Hat6.8 安装、配置、启动Gitlab (外网环境)
  5. phpcmsV9 如何开启“会员注册” - 教程篇
  6. 做中国女人难,做中国女装更难
  7. 「小程序JAVA实战」小程序 loading 提示框与页面跳转(37)
  8. 2020年30米二级分类北京市土地利用数据
  9. 关于怕什么来什么的说法,是否成立
  10. 创建Person接口(即“人”),它有setData()和getData()方法对“人”属性name、sex和birthday赋值和获得这些属性组成的字符串信息创建类Student实现Person接口
  11. 进度播报|广州地铁七号线全线29台盾构机全部完成始发
  12. Android 指纹验证标准API学习
  13. 2D转换+动画+3D转换
  14. MySQL基础知识-MySQL概述安装,单表增删改查,函数,约束,多表查询,事物
  15. 《一文搞懂NMS发展历程》Soft-NMS、Weighted NMS、IoU-Net、Softer-NMS、Adaptive NMS、DIoU-NMS
  16. 自动驾驶传感器产业链
  17. git config本地信息配置
  18. 论文笔记(十七):Brax - A Differentiable Physics Engine for Large Scale Rigid Body Simulation
  19. CSS学习笔记——搭建京东购物车网页
  20. 新套路+老配方 | 2023年网络钓鱼攻击新方式

热门文章

  1. Centos 服务器 获取出口ip地址
  2. 开源项目 —— 原生JS实现斗地主游戏 ——代码极少、功能都有、直接粘贴即用
  3. 基于halcon的木板缺陷检测算法代码-基于halcon的区域增长、大津分割算法、直方图均衡化
  4. leetcode 286 周赛回顾
  5. 猫狗大战——数据集创建详细介绍
  6. 【步兵 shader】扫光
  7. Android 网络框架
  8. PyQt5的学习---01
  9. 2019内蒙古大学计算机学院研究生分数线,2021内蒙古大学研究生分数线一览表(含2019-2020历年复试)...
  10. 蓝桥杯2023年第十四届省赛真题-冶炼金属