MATLAB实现最短路径
目录一、Dijkstra是什么?二、使用步骤1.引入库2.读入数据总结前言本人是数学建模在学习的小白,分享一下最近学习的内容也顺便做一下笔记。提示:以下是本篇文章正文内容,下面案例可供参考一、Dijkstra是什么?Dijkstra是解决最短路径的一种算法最短路径即从图中的某个顶点出发到达另外一个顶点的所经过的边的权重和最小的一条路径二、使用步骤1.引入库代码如下(示例):import numpy
·
目录
前言
本人是数学建模在学习的小白,分享一下最近学习的内容也顺便做一下笔记。
提示:以下是本篇文章正文内容,下面案例可供参考
一、Dijkstra是什么?
Dijkstra是解决最短路径的一种算法
最短路径即从图中的某个顶点出发到达另外一个顶点的所经过的边的权重和最小的一条路径
二、算法介绍
1.核心思想
广度优先搜索
2.具体思路
1.初始化,即所有的节点都是未访问节点(0),所有的距离都是无穷大(INF),所有的父亲节点都是-1,表示不存在。
2.假设起点(A),然后对应的访问状态变为1,对应的距离变为0,其父亲节点变为本身。
3.开始访问与起点相邻的节点(B)的信息(此时这些节点还没有被访问)
更新规则如下:
如果(A与B的距离加上A列表中的距离)小于(B列表中的距离),那么我们就将B列表中的距离更新为较小的距离,并将其父亲节点更新为A。
4在所有未访问的节点里找到表格里具有最小距离的那个节点,并将其作为新的已访问节点。
3MATLAB实现
s = [9 9 1 1 2 2 2 7 7 6 6 5 5 4];
t = [1 7 7 2 8 3 5 8 6 8 5 3 4 3 ];
w = [4 8 3 8 2 7 4 1 6 6 2 14 10 9];%权重
G = graph(s,t,w);
plot(G,'EdgeLabel',G.Edges.Weight,'LineWidth',2);
[P,D] = shortestpath(G,9,4);
%%高亮显示路径
myplot = plot(G,'EdgeLabel',G.Edges.Weight,'LineWidth',2);
highlight(myplot,P,'EdgeColor','r');
结果:
三、总结
这既是今天学习的内容。
——更新于2021.8.31
更多推荐
已为社区贡献1条内容
所有评论(0)