题目
关于A*算法,下列说法错误的是( )。A. h(x)所携带的启发性信息越多,搜索时所扩展的节点数越少,搜索效率就越高。B. A*算法的搜索效率在很大程度上取决于h(x),在满足h(x)≤h*(x)的前提下,h(x)的值越大越好。C. A*算法中h(n)≥h*(n)D. 宽度优先搜索是当h(n)=0时的A*算法的特例。
关于A*算法,下列说法错误的是( )。
A. h(x)所携带的启发性信息越多,搜索时所扩展的节点数越少,搜索效率就越高。
B. A*算法的搜索效率在很大程度上取决于h(x),在满足h(x)≤h*(x)的前提下,h(x)的值越大越好。
C. A*算法中h(n)≥h*(n)
D. 宽度优先搜索是当h(n)=0时的A*算法的特例。
题目解答
答案
C. A*算法中h(n)≥h*(n)
解析
本题考查A算法的相关知识,解题思路是对每个选项所涉及的A算法的性质和特点进行分析判断。
- 选项A:
- 在A*算法中,$h(x)$ 是启发式函数,它用于估计从节点 $x$ 到目标节点的最优路径代价。
- 当 $h(x)$ 所携带的启发性信息越多时,它对搜索方向的引导就越准确。
- 这样在搜索过程中,就可以更有针对性地扩展节点,从而减少不必要的节点扩展,搜索时所扩展的节点数就会越少,搜索效率也就越高。所以选项A的说法是正确的。
- 选项B:
- A*算法的搜索效率在很大程度上依赖于启发式函数 $h(x)$。
- 当满足 $h(x) \leq h^*(x)$(其中 $h^*(x)$ 是从节点 $x$ 到目标节点的实际最优路径代价)时,$h(x)$ 的值越大,它对搜索的引导作用就越强。
- 因为 $h(x)$ 越大,算法会更倾向于选择那些估计代价较小的节点进行扩展,从而更快地找到目标节点,搜索效率也就越高。所以选项B的说法是正确的。
- 选项C:
- 在A*算法中,为了保证算法能够找到最优解,要求启发式函数 $h(n)$ 满足 $h(n) \leq h^*(n)$,即 $h(n)$ 是对实际最优路径代价 $h^*(n)$ 的一个下界估计。
- 如果 $h(n) \geq h^*(n)$,那么A*算法就不能保证找到最优解。所以选项C的说法是错误的。
- 选项D:
- 宽度优先搜索是一种盲目搜索算法,它按照层次依次扩展节点。
- 当 $h(n) = 0$ 时,A*算法的评估函数 $f(n)=g(n)+h(n)$ 就变成了 $f(n)=g(n)$,其中 $g(n)$ 是从初始节点到节点 $n$ 的实际路径代价。
- 此时A算法会优先扩展那些距离初始节点最近的节点,这与宽度优先搜索的策略是一致的,所以宽度优先搜索是当 $h(n)=0$ 时的A算法的特例。选项D的说法是正确的。