必威体育Betway必威体育官网
当前位置:首页 > IT技术

A*算法和dijkstra算法

时间:2019-10-12 18:14:32来源:IT技术作者:seo实验室小编阅读:67次「手机版」
 

dijkstra算法

A*算法dijkstra算法都是启发式搜索,dijkstra算法可以看成是广度优先搜索,而A*可以认为是深度优先搜索。

dijkstra就是保证当前节点的值对于前面的层一定是最优的(不管后面有啥只往前看),所以最后到终点的时候,可以保证终点到前一层选一个最优的点,这样从终点到起点一直选当前最小得到的路径一定是最优的。

A*可以轻松地用在比如无人机航路规划中,而dijkstra建立在较为抽象的图论层面。

A*算法主要是有两张表, 一个open表,一个是close表。

1. 将起点加入open表。

2. a)遍历open list,找F(F = G + H)值最小的节点,把他作为当前要操作的节点;

2. b)把这个节点移到close list;

2. c)把当前操作节点周围的8个节点放到open list中(除了不可达的节点,比如墙、禁飞区等);

2. d)重复上述操作,每次都去F值最小的节点作为当前操作节点。

3. 当终点加入到close表中的时候停止。

4. 保存路径,从终点开始,每个节点沿着父节点移动到起点,就是最终路径。

上面F = G + H中:H是启发函数,是当前点到终点距离的估计,一般采用曼哈顿距离(当前点和终点横纵坐标差之和);G就是起点到当前点的距离,这里G值的度量方式一般是上下左右取一个值比如10,对角线的四个点取一个值比如14(一般比上下左右的值要大),而在A*中表示障碍点一般会给对应点一个特别大的G值,所以在筛选的时候就会放掉

A*效果图

dijkstra效果图

GIF图:https://blog.csdn.net/hopeping128/article/details/78960326

相关阅读

RSA算法简介

RSA是目前最有影响力和最常用的公钥加密算法,它能够抵抗到目前为止已知的绝大多数密码攻击,已被ISO推荐为公钥数据加密标准。 RSA算

今天的新发现发现了一个关于算法的新网站 领扣

https://www.lintcode.com/这个网站上面有一些关于算法的题,可以进行日常的练习。

贪心算法Hufuman树问题

问题描述Huffman树在编码中有着广泛的应用。在这里,我们只关心Huffman树的构造过程。给出一列数{pi}={p0, p1, …, pn-1},用这列

模拟退火算法(SA)简单介绍,附用python3求解最大值案例

简介 模拟退火算法(Simulate Anneal,SA)是一种通用概率演算法,用来在一个大的搜寻空间内找寻命题的最优解。其思想借鉴于固体的退火

快速排序算法

最开始学习编程,遇到排序问题,一般都是用冒泡法,因为冒泡法好理解,代码量少。但是这种算法时间复杂度高,当需要排序的元素较多时,程序运

分享到:

栏目导航

推荐阅读

热门阅读