数学建模算法之迪杰斯特拉算法求图论最短路问题

算法介绍

B站up视频介绍

好用的软件:算法动画图解(安卓有破解版 苹果需要购买)

利用matlab内置函数代码实现

clear;clc

load Ddata.mat

%内置函数实现
G = digraph(D(:,1),D(:,2),D(:,3));%输入邻接矩阵

plot(G, 'EdgeLabel', G.Edges.Weight, 'linewidth', 2) %作带权重的有向图并将边的宽度设为2以显示的更加清晰

[P,d] = shortestpath(G, 1, 8);  %注意:该函数matlab2015b之后才有

% 在图中高亮我们的最短路径
myplot = plot(G, 'EdgeLabel', G.Edges.Weight, 'linewidth', 2);  %首先将图赋给一个变量
highlight(myplot, P, 'EdgeColor', 'r')   %对这个变量即我们刚刚绘制的图形进行高亮处理(给边加上r红色)

%%扩展
% 求出任意两点的最短路径矩阵
A = distances(G);   %注意:该函数matlab2015b之后才有
%A(1,8)  % 1 -> 8的最短路径

%自定义函数实现
[P,d] = Dijkstra(D,start,end);

结果

 附,用自己的代码复现该算法

以后再补吧,学不完了呜呜呜

猜你喜欢

转载自blog.csdn.net/zkx0214/article/details/127822613
今日推荐