A*算法的通俗理解
来源:互联网 发布:视频对比分析软件 编辑:程序博客网 时间:2024/05/16 01:56
之前做布局布线系统的时候,涉及寻路算法。其中用到的A*算法在教材上的描述往往比较晦涩,对某些初学习者来说,可能会存在一点困难。下面就这个算法,提供一个通俗的描述方式。
可以考虑如下例子:
小i在上海,计划去北京旅游。他也不知道,具体的路线,只知道到北京的路线必定会经过某些城市。
我们知道上海周边,有苏州,杭州。因此去北京的路线必定会穿过这两个城市。
小i会评估如下两条线路:
路线1:上海-杭州-北京
路线2:上海-苏州-北京
上海-杭州和上海-苏州的实际路程,小i可以很快知道。如何做决策,就取决于对杭州-北京和苏州-北京的路程的估计。
评估的标准为
路线A的代价(CA) = 上海-杭州的实际路程(SA) + 杭州-北京的估计路程(SA*)
路线B的代价(CB) = 上海-苏州的实际路程(SB) + 苏州-北京的估计路程(SB*)
这里的估计路程,可以通过地理方位简单的给出评估。
毫无疑问,如果CA<CB, 则小i会选择路线1,反之,选择路线2。
如此,考虑A*算法中的基本公式
f(n)=g(n)+h(n)
f(n)全路径的估计代价, 如例子中CA和CB
g(n)起始节点到节点n的实际代价, 如例子中SA和SB
h(n)节点n到目标点的估计代价, 如例子中SA*和SB*
很容易理解搜索的最佳策略,是选择f(n)最小的路径,作为候选路径。
而且,这里很容易看出SA*和SB*的评估是否合理,决定了路径的选择是否最优。这也就是为什么,在A-Star算法中,会特别强调h(n)的原因。
- A*算法的通俗理解
- EM算法的通俗理解
- Paxos算法的通俗理解
- SIFT/SURF算法的通俗理解
- 转载SIFT/SURF算法的通俗理解
- SIFT/SURF算法的通俗理解
- 八大基础算法 自己的通俗理解
- 关于DBSCAN算法的通俗理解
- 通俗理解爬山算法
- 通俗理解EM算法
- 通俗理解Paxos算法
- KMP算法 通俗理解
- 通俗理解谱聚类算法
- PID控制算法通俗理解
- 通俗理解模拟退火算法
- 通俗理解四大排序算法
- PID控制算法通俗理解
- pid控制算法通俗理解
- open : O_DIRECT
- 位运算符C语言
- C++中的动态多维数组
- 关于Sqlite3报错:Could not decode to UTF-8 column 'Name' with text...
- Choice的用法
- A*算法的通俗理解
- OCP考试
- dotnet下Request对象获取客户端数据的方式比较(Request.Params)
- DBHelper
- 时间钻戒
- “剩女”
- java.sql.SQLException: [Microsoft][SQLServer 2000 Driver for JDBC]The DBMS returned an unspecified error.
- 从测试方法看软件质量
- aix中的lvm及命令详解