首页 > 技术文章 > A*算法为什么是最优的

mightofcode 2013-12-12 11:46 原文

图搜索的A*算法有两种情况:

hn是可采纳的,但是不是满足一致性

如果满足一致性,A*算法的实现要简单一些:即使不检查closed节点的状态重复,也能得到最优的结果

下面是证明最优性的一些关键点:

1 沿着任何路径的fn都是非递减的

2 closed集合里面的任何一个节点的fn都要小于open集合里面的任何一个节点的fn,这个特点保证了在拓展open节点时可以跳过已经在closed节点中的节点

3 目标点的fn=gn+0,如果有路径到达目标点,那么所有能到达目标点的路径都在open表里面,而且A*算法必然能找到最优的那条路径

推荐阅读