拉斯维加斯算法

拉斯维加斯算法

通俗理解:

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

蒙特卡洛和拉斯维加斯

这两类随机算法之间的选择,往往受到问题的局限。

  • 如果问题要求在有限采样内,必须给出一个解,但不要求是最优解,那就要用蒙特卡罗算法。
  • 反之,如果问题要求必须给出最优解,但对采样没有限制,那就要用拉斯维加斯算法。

例子

  1. 和机器下棋的关系
    最近比较热的AI下棋. 因为每一步棋的运算时间、堆栈空间都是有限的,而且不要求最优解,所以阿尔法狗涉及的随机算法,肯定是蒙特卡罗式的。
    机器下棋的算法本质都是搜索树,围棋难在它的树宽可以达到好几百(国际象棋只有几十)。在有限时间内要遍历这么宽的树,就只能牺牲深度(俗称“往后看几步”),但围棋又是依赖远见的游戏,甚至不仅是看“几步”的问题。所以,要想保证搜索深度,就只能放弃遍历,改为随机采样——这就是为什么在没有MCTS(蒙特卡罗搜索树)类的方法之前,机器围棋的水平几乎是笑话。

  2. 简单的运用
    拉斯维加斯算法的一个简单应用是结合dfs求解N较大时的N皇后问题. 即前几行选择用随机法放置皇后,剩下的选择用回溯法解决。

蒙特卡洛算法的典型运用比如蒲丰投针计算pi, 以及计算定积分. 都是用蒙特卡洛采样来解决的.

发布了75 篇原创文章 · 获赞 12 · 访问量 3436

猜你喜欢

转载自blog.csdn.net/weixin_44737877/article/details/103515125