贪婪最佳优先算法地址:https://blog.csdn.net/weixin_44350205/article/details/99453513
下面是A*算法完整代码:
currentNode = startNode
add currentNode to closedSet
do
//把邻接节点加入开放集合
foreach Node n adjacent to currentNode
if closedSet contains n
continue
else if openSet contain n //选用检查
compute new_g //n节点以当前节点为父节点的g(x)值
if new_g < n.g
n.parent=currentNode
n.g=new_g
n.f=n.g+n.h//该节点的n.h是不变的
end
else
n.parent=currentNode
compute n.h
compute n.g
n.f=n.g+n.h
add n to openSet
end
loop
//所有可能性都尝试过了
if openSet is empty
break
end
//选择新的当前节点
currentNode = Node with lowest f 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