A*算法总结

1.设置一个move值G和一个曼哈顿值H,和他两的和F

2.设置一个hashset用来存储已经判断过的点,和一个优先队列que=PriorityQueue

3.设置一个存储父元素的字典parent={}, 

4.寻路:

       

将star存入hashset中;

当que不为空的时候循环:

        从que中取最小的值curr

        当curr !=end时循环:

                 遍历curr的邻居:

                        如果邻居已经在hashset中,则返回

                                如果邻居没有在que中存过,则直接将其存入que,

                                如果邻居在que中存过,则判断此时他的G值与之前的大小,

                                        如果此时的的G值比之前的大,则不操作;

                                        如果此时的G值比之前的小,则更新他之前的值(存入优先队列),并把                                     他的父节点设置为他现在的前一个;

                                如果没有存过,则直接存入que;他的父节点设置为前一个节点

                 如果curr==end:

                        while curr !=star:

                              将curr的坐标存入数组arr

                               只要curr的父节点不为空:

                                        curr = curr的父节点

                

                将curr加入hashset中

                

                                

                                       

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值