A*寻路之美

贪婪最佳优先算法地址:https://blog.csdn.net/weixin_44350205/article/details/99453513

A*寻路之美

A*寻路之美

A*寻路之美

下面是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

A*寻路之美

A*寻路之美

 

上一篇:算法-链表


下一篇:贪婪最佳优先算法之美