- function [distance,path]=Dijkstra(W,s,d)
- %20190117 by Asterghost,in Beijing
- N=length(W);
- for i=1:N
- W(i,find(W(i,:)==0))=inf;
- W(i,i)=0;
- end
- short_path_val=1./zeros(1,N);
- pre_dot=zeros(1,N);
- neighbor=W(s,:);
- neighbor(s)=inf;
- short_path_val(s)=0;
- dot=zeros(1,N);
- dot(:,:)=s;
- while sum(neighbor(:,:)~=inf)
- [xx,x]=min(neighbor);
- x=x(1);
- neighbor(x)=inf;
- short_path_val(x)=xx;
- pre_dot(x)=dot(x);
- val_copy=xx+W(x,:);
- yy=find(short_path_val==inf);
- y=find(val_copy<neighbor);
- y1=intersect(y,yy);
- neighbor(y1)=val_copy(y1);
- dot(y1)=x;
MATALB 复杂网络最短路径及最短距离Dijkstra算法源码
最新推荐文章于 2024-08-27 08:32:18 发布
这是一个MATLAB编写的Dijkstra算法源码,用于计算复杂网络中的最短路径和最短距离。作者Asterghost在2019年1月17日于北京编写。算法首先初始化权重矩阵,然后通过循环找到并更新最短路径,最终得出从源节点到目标节点的路径及其总距离。
摘要由CSDN通过智能技术生成