假如说待遍历的图是一棵二叉树的话,那么:
因此A*的遍历模式跟dfs与bfs都不太一样。与bfs的相同点在于每次都扩展某个节点的所有子节点。不同的地方在于bfs扩展顺序固定且与权重无关,而A*的扩展顺序由权重决定。
随便举个例子。(下图是分支限界法解01背包问题的图,不是A*,你就把b看作是A*中的代价函数h(n)=f(n)+g(n)好了。这个图就做个示意。)
每种方法遍历的次序分别为:
所以用到的数据结构也不一样
此外,题中“A*接近最优解”的说法不太好。A*一定是最优解。不是最优解的叫A。