文章目录
- 前言
- 一、启发式搜索(heuristic search)
- 方法(Dijkstra search,Greedy Search,A* )
- 性质(Admissible & Consistent & dominate)
- 总结
前言
启发式搜索(Heuristically Search)又称为有信息搜索(Informed Search),它是利用问题拥有的启发信息来引导搜索,达到减少搜索范围、降低问题复杂度的目的,这种利用启发信息的搜索过程称为启发式搜索。简单来说,就是已知起点和终点位置,寻找最佳路径。
一、启发式搜索(heuristic search)
方法(Dijkstra search,Greedy Search,A* )
代价一致搜索 (Uniform Cost Search or Dijkstra search)
贪心搜索 (Greedy Search)
A星搜索 (A* Search)
首先, 使用评价函数 f(x) 来对上述的节点选择顺序进行排序
下面先定义两个函数
g(x) 为从根节点到x节点的代价总和
h(x) 为从x节点到目标节点的估计代价总和
这类应用算法有
代价一致搜索 (Uniform Cost Search or Dijkstra search) f(x) = g(x)
贪心搜索 (Greedy Search) f(x) = h(x)
A星搜索 (A* Search) f(x) = g(x) + h(x)
这个网址对算法进行了可视化表示,解释和例子非常具体的有助于理解,强烈推荐!!!!!link~~~~~~~~~~
性质(Admissible & Consistent & dominate)
Admissible heuristic
admissibility是启发式搜索的一个性质,如果满足这个性质,那么,启发函数一定能得到最佳solution。
A*搜索能找到最优解的充分条件:
- 搜索树上存在着从起始点到目标点的最优路径
- 问题域是有限的
- 所有结点的子结点的成本>0
- h(n) =< h*(n) (h*(n)为从节点n到目标点的实际成本)
1 2 3易满足,第4条中这样的启发函数被称为Admissible heuristic,也就是说在A*中我们对目标的估计必须小于或等于其实际值,不然可能会出现找不到最优路径或者根本找不到路径的情况
Consistent heuristic
N是开始节点,绿色的是目标节点,h(N)则是从N到目标节点的启发函数,N’为任意不同于N的节点
A star with tree能找到最优解的充分条件:
- 搜索树上存在着从起始点到目标点的最优路径
- 问题域是有限的
- 所有结点的子结点的成本>0
- h(N’) + c(N, N’) < h(N)
这样的启发函数被称为Consistent heuristic,只有满足了这个才能保证A*算法在图搜索中能找到最优解。
一个启发函数是consistent,它也是admissible。反之,不可。
dominate
Dominance(用于表现不同启发函数的关系)
two admissible heuristics ha, hb:如果对于所有n, ha(n) >hb(n),那么,我们可以说 ha dominates hb,对于这个search问题,我们最好使用ha作为启发函数。
总结
A star算法的特点(考虑g(x)+h(x),注意树搜索满足Admissible heuristic,图搜索满足Consistent heuristic时)
- 完备性:肯定能找到最优解
- 最优性:找到的解花费最小
- 快:扩展更少的节点
UCS(代价一致搜索,只考虑g(x))
- 完备性:肯定能找到最优解
- 最优性:找到的解花费最小
- 比A*慢一些
广度优先搜索是代价一致搜索的特例
贪婪搜索(启发式搜索,但只考虑h(x))
- 不完备性:不保证能找到最优解
深度优先搜索是贪婪搜索的特例(令h(n)===0,A*搜索退化为宽度优先搜索(BFS),不估计成本,肯定能找到最优解)
更多推荐
最佳路径搜索(二):启发式搜索(代价一致搜索(Dijkstra search),贪心搜索,A*搜索)
发布评论