目录

一、Dijkstra是什么?

二、算法介绍

1.核心思想

2.具体思路

3MATLAB实现

总结


前言

本人是数学建模在学习的小白,分享一下最近学习的内容也顺便做一下笔记。


提示:以下是本篇文章正文内容,下面案例可供参考

一、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

Logo

华为开发者空间,是为全球开发者打造的专属开发空间,汇聚了华为优质开发资源及工具,致力于让每一位开发者拥有一台云主机,基于华为根生态开发、创新。

更多推荐