A*算法和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值,所以在筛选的时候就会放掉
GIF图:https://blog.csdn.net/hopeping128/article/details/78960326
A*算法和dijkstra算法相关推荐
- Prim算法和Dijkstra算法的异同
今天看了下,主要有以下几点: 1: Prim是计算最小生成树的算法,比如为N个村庄修路,怎么修花销最少. Dijkstra是计算最短路径的算法,比如从a村庄走到其他任意村庄的距离. 2: Prim算法 ...
- 最短路径Dijkstra算法和Floyd算法整理、
转载自:http://www.cnblogs.com/biyeymyhjob/archive/2012/07/31/2615833.html 最短路径-Dijkstra算法和Floyd算法 Dijks ...
- 【Java数据结构与算法】第二十章 Dijkstra算法和Floyd算法
第二十章 Dijkstra算法和Floyd算法 文章目录 第二十章 Dijkstra算法和Floyd算法 一.Dijkstra算法 1.介绍 2.代码实现 二.Floyd算法 1.介绍 2.代码实现 ...
- 【最短路径】:Dijkstra算法、SPFA算法、Bellman-Ford算法和Floyd-Warshall算法
求最短路径最常用的算法有: Dijkstra算法.SPFA算法.Bellman-Ford算法和Floyd-Warshall算法. Dijkstra算法.SPFA算法.Bellman-Ford算法这三个 ...
- 浅谈迪杰斯特拉(Dijkstra)算法和A*算法原理及实现
写在前面 最近我在学习一门名叫<智能自主机器人及系统>的课程,虽然跟过去所学的<机器人学>在部分内容上有所重复,但该课程的应用性更强.对于不同的机器人,如差速轮式车.四轮车.四 ...
- Dijkstra算法和A*算法总结
Dijkstra算法和A*算法都是最短路径问题的常用算法,下面就对这两种算法的特点进行一下比较: Dijkstra算法计算源点到其他所有点的最短路径长度,A*关注点到点的最短路径(包括具体路径). D ...
- dijkstra算法和A*算法
转自: https://www.cnblogs.com/21207-iHome/p/6048969.html#undefined Dijkstra算法 迪杰斯特拉(Dijkstra)算法是典型的最短路 ...
- Dijkstra算法和Floyed算法
Dijkstra算法和Floyed算法 最短路径: 在非网图中,最短路径是指两顶点之间经历的边数最少的路径. 在网图中,最短路径是指两顶点之间经历的边上权值之和最短的路径. 最短路径问题: 单源点到其 ...
- 最短路径(Dijkstra算法和Floyd算法)
最短路径 在图中,不可避免要解决的一个问题就是计算两点之间的最短路径,对于图结构来说,两个点之间不一定只有一条路径,那么如何才能找出最短的那一条就是图中最短路径问题.最短路径问题在实际生活中应用十 ...
- 数据结构与算法—最小生成树(Prim算法和Kruskal算法算法详解)
前言 在数据结构与算法的图论中,(生成)最小生成树算法是一种常用并且和生活贴切比较近的一种算法.但是可能很多人对概念不是很清楚.我们看下百度百科对于最小生成树定义: 一个有 n 个结点的连通图的生成树 ...
最新文章
- highcharts与ajax的应用
- CentOS5.9下用Kate
- 【 Markdown 】Markdown 编辑器语法常用格式 ( 整理中 ... )
- Java黑皮书课后题第9章:*9.4(使用Random类)编写一个程序,创建一个种子为1000的Random对象,然后使用nextInt(100)方法显示0到100之间的前50个随机整数
- ssh白名单_阿里云服务器ssh白名单
- inbox status and ServiceOrder Status
- 索引失效的场景(面试)
- matlab 排序点,matlab如何进行排序?
- Delphi语言最好的JSON代码库 mORMot学习笔记1
- 勤学如春起之苗,不见其增,日有所长!
- [转] 关于SQLSERVER2000卸载与出现挂起问题的解决
- matlab2008设置子函数断点无效,程序不在断点处停止
- linux7配置iptables配置转发,Centos7安装iptables及配置
- 《Timing is Almost Everything》作者访谈
- Android自动化测试在多种屏幕下的注意事项
- 改变系统TCP默认 MSS
- 恶意代码防范技术原理-恶意代码概述
- SMARTDRV.EXE下载和安装说明
- dev:dev fatal: HttpRequestException encountered. remote: Invalid username or password. fatal: Authen
- Richpedia: A Large-Scale, Comprehensive Multi-Modal Knowledge Graph