《麻省理工学院公开课:人工智能》笔记四

《05 搜索: 最优,分支限界,A*》视频链接

【内容简介】

还是上一节课的地图,由这张地图引出了最短路径求解问题。利用了拓展列表(Extended List),可容许性启发Admissible heuristic(积累距离+直线距离)对分支限界法(Branch and Bound)进行了优化。以及讲解了使用可容许性启发的条件。

【笔记】

先强调一点:虽然我们用地图来解释搜索算法,但实际上 搜索是关于选择的,不是关于地图的。

还是这张地图,假设目前有人告诉你从S点移动到G点的最近的路线是:SADG,长度为11。你怎么确定这句话的正确性呢?

有一个简单且暴力的方式:我们利用 大英博物馆算法 得到所有的路径来进行比较,就可以知道答案。但问题是,简单的地图这么做还可以,稍微复杂一点的地图这种方式就不可行了。

可以利用分支限界法。

分支限界法(Branch and Bound)

分支限界法的目标是找出满足约束条件的一个解,或是在满足约束条件的解中找出在某种意义下的最优解。首先要确定的就是一个合理的限界函数,我们这里的约束条件就是距离最小。

从起点开始来向终点拓展,拓展结果用树来表示,如下:(因为此时的目的是为了验证S->A->D->G是最短的路径,所以我们在下面的拓展中会忽略这条路径

  1. 首先从S开始拓展,有两个点:A和B。已知SA的距离是3,SB的距离是5;因为3<5,所以先拓展A点
  2. A点拓展有两个点:B和 D(忽略)。已知AB=4,所以S->A->B的距离就为7。又因为此时在树的拓展列表中,S->B的距离最小,所以接着拓展S->B
  3. B点拓展有两个点:A和C。已知AB=4,所以S->B->A的距离就为9;同理S->B->C的距离也为9(距离一致时,按照字典顺序拓展)。此时在树的拓展列表中,S->A->B的距离最小,所以接着拓展S->A->B
  4. B点拓展只有一个C点:S->A->B->C的距离=11,此时还没有到终点G。但是长度已经等于目前已知的最短路径长度,所以这条路我们就不在继续拓展了。(因为在拓展下去长度肯定就大于11了,我们的目的是验证S->A->D->G是最短的路径,所以就不必要了)
  5. 那么接着拓展A点与C点,如图所示:由于S->B->A->D的长度为12,S->B->C->E的长度为15,均大于11(S->A->D->G最短的路径的长度),所以都没有拓展下去的必要了
  6. 为此可以得出结论,S->A->D->G的确是最短的路径。
    在这里插入图片描述
    但是在现实情况下,我们往往并不知道最短距离是多少。此时如何利用分支限界法呢?其实原理是一样的。还是拿下面这张图举例:首先因为SA < SB ,所以先拓展SA;然后因为SB < SAD < SAB,所以拓展SB;然后因为SBA = SBC < SAB < SAD,所以拓展SAD。当我们得到SADG这条路径时,我们的拓展就结束了吗?并没有,我们还要继续按照分支限界法拓展,直到证明SADG是最短路径即可。

整个的流程图如下:

在这里插入图片描述
优化分支限界法1:使用拓展列表

如上一节课的优化方式一样,为了解决路径重复考虑的问题,我们使用一个拓展列表来存储已经拓展过的路径。

假设还是使用分支限界法拓展地图时:当我们拓展S->A->B的B点时,我们已经在S->B时拓展过B点了,S->A->B即使在下面的拓展过程中能够到达终点,也会比在S->B的拓展过程中到达终点的距离长,所以S->A->B的B点我们就不再继续拓展了。这样就优化了算法。此时的算法流程图就为:
在这里插入图片描述
优化分支限界法2:可容许启发式

还是用下图来细说:我们这里是用的可容许启发式使用的是 积累距离+直线距离最短的路径优先拓展

  • 首先在 分支限界法中的拓展思路是这样的:

首先从S开始拓展,有两个点:A和B。已知SA的距离是3,SB的距离是5;因为3<5,所以先拓展A点

  • 而添加上可容许启发式的分支限界法中的拓展思路是这样的:

首先从S开始拓展,有:SA和SB。已知SA的距离是3,SB的距离是5;A 到G的直线距离是7+,B到G的直线距离是6。所以 S过A到G的距离下限就是10+, S过B到G的距离下限就是11。因为10+ < 11,所以优先拓展SA

按照上面的地图,添加上可容许启发式的分支限界法似乎并没有什么大的优化,但是如果我们把起点放到地图中间时, 如下图。可容许启发式就会发挥出大的功能(起码能规避掉算法朝左搜索)。
在这里插入图片描述

优化分支限界法3:A*算法

别担心,A*算法并不是一个新的算法,而是将上述两种优化同时加到分支限界法上而已。

那么这会是一种完美的搜索算法吗?记住这一点:搜索算法是关于选择的,不是关于地图的。在地图上,A* 算法是完美的,但是在非地图的选择问题中,想要完美的使用A* 算法还需要满足下面一点:

一致性:即 任一节点X和目标的估计距离 与 另一节点Y和目标的估计距离 的差 的绝对值 要 小于等于 X和Y之间的实际距离。

  • 6
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值