在 A* 算法中,有一句话是这么说的:
在 A 算法的基础上,只要估价函数 h(x)∈[0,h∗(x)],那么 A* 就能找到最优解。
其中 h∗(x) 表示 x 到终点的距离。
然而,我却发现了这样一组数据:
4 4
1 2 1
1 3 10
2 4 20
3 4 100
其中点数、边数均为 4,起点为 1,终点为 4。
若令 h(1)=0,h(2)=20,h(3)=0,其满足估价函数的要求,但是经过模拟,似乎点 3 会先于点 2 被扩展,得到“错误”的最短路径 1→3→4,并非最优解。
显然,要么我对 A* 算法的理解有问题,要么是我对这组数据的模拟有问题。但很可惜,研究了一下午和一晚上,目前我并没有意识到是哪一步出了问题。