A*算法的基本流程和A*算法是不是启发式思想
时间: 2023-06-19 22:08:46 浏览: 103
启发式搜索算法之A*算法实现VC++源代码
4星 · 用户满意度95%
A*算法是一种启发式搜索算法,它通过估计每个节点到目标节点的距离来指导搜索方向和优先级,从而更加高效地搜索最优解。它的基本流程如下:
1. 初始化:将起始节点加入 open 列表。
2. 重复以下步骤,直到找到目标节点或者 open 列表为空:
a. 从 open 列表中选择 f 值最小的节点作为当前节点。
b. 将当前节点从 open 列表中删除,并将其加入 close 列表。
c. 如果当前节点是目标节点,则搜索结束。
d. 否则,将当前节点的邻居节点加入 open 列表中(如果该邻居节点不在 close 列表中)。
i. 计算邻居节点的 f、g、h 值。
ii. 如果邻居节点已经在 open 列表中,则更新其 f 值。
iii. 如果邻居节点不在 open 列表中,则将其加入 open 列表,并计算其 f、g、h 值。
3. 如果 open 列表为空,则搜索失败。
总体来说,A*算法的启发式思想体现在节点的估价函数h(n)上,它可以根据问题的特点进行不同的设计,以提高搜索效率。
阅读全文