树搜索策略(下)

22 篇文章 1 订阅

       前面树搜索策略(上)介绍了树搜索的一些基本算法,树搜索策略(中)通过两个实例具体介绍了分支限界法的思想,本篇主要介绍借助“Best-First”搜索的A*算法。


1. A*算法与分支限界策略的比较


       分支限界策略是为了剪掉不能达到优化解的分支,其关键是“界限”。A*算法的核心是告诉我们在某些情况下,我们得到的解一定是最优解,于是算法可以停止。A*算法试图尽早地发现优化解,经常使用Best-first策略求解优化问题。


2. A*算法的核心——代价函数


       对于任意节点n, g(n) 表示从树根到节点n的代价, h*(n)表示从n到目标节点的优化路径的代价, f*(n) = g(n) + h*(n)即为节点n的总代价。那么,我们如何得到h*(n)的值呢?一般采用一种合适的方法来估计h*(n),h(n)是对h*(n)的估计,把f(n) = g(n) + h(n) ≤ g(n) + h*(n) = f*(n)定义为n的代价。为了更好的理解A*算法,我们以求解最短路径为例来讲述这种算法思想。


3. 利用A*算法求解最短路径问题


3.1 问题定义

 

       输入:一个带权有向连通图G(V,E),如下图所示。


       输出:发现一个从S到T的最短路径。


3.2 求解步骤


       step 1: 分别计算f(v1)=g(v1)  + h(v1) = 4 、f(v2) = g(v2) + h(v2)=5、f(v3) = g(v3) + h(v3)=6;

       step 2:根据step1可知进一步扩展v1,分别计算f(v2) = g(v2) + h(v2) = 7、f(v4) = g(v4) + h(v4)=5;

       step 3:根据step2可知进一步扩展v4、v2,分别计算f(v5) = g(v5) + h(v5) = 10、 f(T) = g(T) + h(T) = 7、f(v4) = g(v4) + h(v4) = 6、f(v5) = g(v5) + h(v5) = 10;

       step 4:根据step3可知进一步扩展v3、v4,分别计算f(v5) = g(v5) + h(v5) = 11、f(v5) = g(v5) + h(v5)=11、f(T) = g(T) + h(T) = 8;

       step 5:根据上述步骤可知进一步扩展T,由于T为目标节点,则算法终止,求得最优解。


        图形化展示过程如下:





4. 小结


    通过求解最短路径问题我们大概已经掌握了A*算法思想的精髓。现对A*算法进行简单总结:A*算法借助“Best-first”策略搜索树;假定g(n)表示从根节点到节点n的代价,h*(n)表示节点n到目标节点的优化代价;对于任一节点n,都有h(n)≤h*(n);选择f(n)小的节点进行分支;如果选择的节点n为目标节点,则算法终止,给出最优解。


  • 0
    点赞
  • 1
    评论
  • 0
    收藏
  • 一键三连
    一键三连
  • 扫一扫,分享海报

相关推荐
©️2020 CSDN 皮肤主题: 编程工作室 设计师:CSDN官方博客 返回首页
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值