dijkstra算法_Dijkstra算法例子

本文围绕Dijkstra算法展开,介绍了其程序代码,并展示了该算法在两个场景中的应用。一是在图中找顶点间最短距离,通过构造邻接矩阵计算;二是在栅格地图中找两点间最短路径,可通过修改程序求邻居部分或提供栅格数量及邻居信息来实现。

在Dijkstra算法代码下载本文涉及到的代码。

程序代码

Dijkstra算法的程序如下:

function

找图中顶点间最短距离

26350c7828dc9591e9fc71ae2a6543e2.png

在这样一张图中,找到从A到D的最短距离和路径。构造邻接矩阵如下:

adj 

指定起点和终点,使用上面的程序计算即可:

[

结果如下:

最短距离: 22.00
路径 :     'A'    'F'    'E'    'D'

513a41126a3bfa30d79002bd2d559428.png

找栅格地图中两点间最短距离

如下图所示栅格地图,指定起点和终点,智能体(或机器人)只能在“上、下、左、右”四个方向移动,找出最短路径:

cb3bebe174fc0536b26e79db84e93ba9.png

结果如下:

10b8cabd8d30f2aa42ab90d414a42832.png

可以直接提供邻接矩阵给上面的程序,但是需要修改程序中求邻居的部分(四个方向相邻栅格中不是障碍物的栅格),同时还需要在程序中对某栅格是否是障碍物进行判断,因为是障碍物的话程序不需要对该栅格进行规划。

也可以为程序提供栅格数量(除障碍物)和每个栅格的邻居,删除程序中求邻居的部分,修改程序中邻居间的距离(比如为1)即可。

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值