启发式有序搜索算法:A*及其变体详解
1. A*算法基础与终止条件
A*算法是一种经典的启发式搜索算法,它在状态图搜索中有着广泛的应用。该算法的终止条件有两个:一是当开放列表(front)为空时(对应代码中的第21行);二是当开放列表中的某个节点,其评估值最优且满足目标状态的定义时(对应代码中的第5行)。
2. A*算法找到最短路径的条件
在带权弧的搜索图框架下,$h^ (n)$ 表示从节点 $n$ 到目标节点集合的最短路径长度。若不存在这样的最短路径,则 $h^ (n) = \infty$;$h^*(s)$ 衡量的是从初始状态 $s$ 到目标节点的最短路径长度,也就是最小解的长度。
尼尔斯森及其同事提出的可采纳性定理表明,当满足以下条件时,将A 算法应用于带权状态图 $G$ ,必然能找到从初始状态到目标节点的最短路径:
1. 图 $G$ 中至少存在一条从初始状态到目标状态的路径。
2. 图 $G$ 中的每个状态都有有限个后继状态。
3. 存在 $\delta > 0$,使得图 $G$ 中的任意弧 $(m, n)$ 都满足 $c(m, n) \geq \delta$。
4. 对于图 $G$ 中的任意状态 $n$,都有 $h(n) \geq 0$。
5. 对于图 $G$ 中的任意状态 $n$,都有 $h^ (n) \geq h(n)$。
满足条件5的启发式函数 $h$ 被称为在图 $G$ 上“低估”的函数。对于 $(n^2 - 1)$ 谜题的状态图,条件2和3显然满足。条件1成立的充要条件是目标状态和初始状态属于同一个连通分量。启发式函数
超级会员免费看
订阅专栏 解锁全文
43

被折叠的 条评论
为什么被折叠?



