下面是贪婪优先算法的完整代码,注意这个实现假设h(x)的值在执行过程中总是不变的。
currentNode = startNode add currentNode to closedSet do //把邻接节点加入开放集合 foreach Node n adjacent to currentNode if closedSet contains n continue else n.parent=currentNode if openSet does not contain n compute n.h add n to openSet end end loop //所有可能性都尝试过了 if openSet is empty break end //选择新的当前节点 currentNode = Node with lowest h in openSet remove currentNode from openSet add currentNode to closeSet until currentNode == endNode //如果路径解出,通过栈重新构造路径 if currentNode == endNode Stack path Node n = endNode while n is not null push n onto path n=n.parent loop else //寻路失败 end 如果我们不想用栈构造路径,另一个方案就是直接计算起点到终点的路径。这样,在寻路结束的时候就能得到从起点到终点的路径,可以节省一点计算开销。