dijkstra最短路径Matlab代码
发布日期:2021-05-14 16:02:29 浏览次数:22 分类:精选文章

本文共 1084 字,大约阅读时间需要 3 分钟。

%dijkstra最短路径

(1)
file1.m
function [mydistance,mypath]=mydijkstra(a,sb,db);
% 输入:a—邻接矩阵,a(i,j)是指i到j之间的距离,可以是有向的
% sb—起点的标号, db—终点的标号
% 输出:mydistance—最短路的距离, mypath—最短路的路径
n=size(a,1); visited(1:n) = 0;
distance(1:n) = inf; distance(sb) = 0; %起点到各顶点距离的初始化
visited(sb)=1; u=sb; %u为最新的P标号顶点
parent(1:n) = 0; %前驱顶点的初始化
for i = 1: n-1
id=find(visited==0); %查找未标号的顶点
for v = id
if a(u, v) + distance(u) < distance(v)
distance(v) = distance(u) + a(u, v); %修改标号值
parent(v) = u;
end
end
temp=distance;
temp(visited ==1)=inf; %已标号点的距离换成无穷
[t, u] = min(temp); %找标号值最小的顶点
visited(u) = 1; %标记已经标号的顶点
end
mypath = [];
if parent(db) ~= 0 %如果存在路!
t = db; mypath = [db];
while t ~= sb
p = parent(t);
mypath = [p mypath];
t = p;
end
end
mydistance = distance(db);

(2)file2.m

clc,clear,
a = [0 121.66 inf 117.41 inf inf inf inf;
inf 0 75.50 inf 65.4 inf inf inf;
inf inf 0 inf inf 113.10 inf inf;
inf inf inf 0 156.9 inf 93.59 inf;
inf inf inf inf 0 73.2 inf inf;
inf inf inf inf inf 0 inf 50.6;
inf inf inf inf inf inf 0 198.74;
inf inf inf inf inf inf inf 0];
[mydistance,mypath] = mydijkstra(a, 1, 8)

上一篇:k-Mean均值聚类算法Matlab代码
下一篇:Nginx 配置负载均衡

发表评论

最新留言

路过,博主的博客真漂亮。。
[***.116.15.85]2025年04月24日 04时04分49秒