zoukankan      html  css  js  c++  java
  • A*算法

    我自己是通过这篇博文博文去理解A*算法的   所以希望读者先看看这篇博文  https://blog.csdn.net/hitwhylz/article/details/23089415

    关于A*的解释在上面链接中的博文已经讲得足够详细     下面的文章中我只写我在编写A*算法时遇到的一些问题和其他的理解

    同时我将A*寻路过程可视化  可以通过gif每一帧观察整个过程


    先上几张·gif看看整个寻路过程

    第一张  只能以上下左右四个方向作为路径

    第二张  可以以上下左右·左上·左下·右上·右下八个方向作为路径

    我解释一下图片中一些量的意义         也可以在 这篇博文 中理解这些量

    红色为起始点 

    黑色为目标点   

    浅蓝色方块为close set

    黄色方块为open set

    灰色方块为障碍物

    绿色方块为未搜索区域

    深蓝色方块为最终搜索的路径

    方块的左上角为F量

    方块的左下角为H量

    方块的右下角为G量

    其中F =  H + G

    G量为该点和目标点的线段距离长度

    H量为起始点到该点的路径长度

    如何理解线段距离长度和路径距离长度     [路径总是绕过障碍物]

    (如下图 蓝色表示两点间线段距离长度    粉红色表示红点到黑点的路径距离长度)

    关于两点间距离可以使用不同的距离计算公式  可以参考 距离计算方法总结    我自己在代码中使用的是曼哈顿距离

    此外需要知道比较重要的两个点

    1.   A*算法不会因为当前路径未死胡同而无法寻找路径    除非起始点无论怎么走都无法到达目标点

    2.    A*算法为启发式算法 它无法保证找到的最终路径一定是最优路径(这个和选择的距离计算公式有关系)

    转载务必注明出处 博客主页http://www.cnblogs.com/magicianlyx/ 作者:魔术师LYX
  • 相关阅读:
    定时任务、间隔执行任务实现
    界面上小说或视频下载
    简单的打印日志
    无法识别的配置节 system.webServer
    压缩解压
    zabbix初级进阶
    Mysql高可用集群-解决MMM单点故障
    Mycat详解及配置读写分离(Centos7)
    MHA-结合MySQL半同步复制高可用集群(Centos7)
    MySQL全同步复制基于GR集群架构实现(Centos7)
  • 原文地址:https://www.cnblogs.com/magicianlyx/p/9196747.html
Copyright © 2011-2022 走看看