%pb向量标记节点状态
%index1向量 存放已经被标记为1的节点,
%index2向量 起始点到第i点最短通路中前一个顶点的序号
%d向量 存放起始点到i的最短距离
clc,clear
a=zeros(6);
a(1,2)=50;a(1,4)=40;a(1,5)=25;a(1,6)=10;
a(2,3)=15;a(2,4)=20;a(2,6)=25;
a(3,4)=10;a(3,5)=20;
a(4,5)=10;a(4,6)=25;
a(5,6)=55;
a=a+a';
a(find(a==0))=inf; %创建邻接矩阵,可因问题修改
pb(1:length(a))=0;
index2=ones(1,length(a));
d(1:length(a))=inf;
pb(3)=1; %起始位置,可修改,将下标1改为其他的
index1=3; %起始位置,可修改,
d(3)=0; %起始位置,可修改,将下标1改为其他的
temp=3; %起始位置,可修改
while sum(pb)<length(a)
tb=find(pb==0);
d(tb)=min(d(tb),d(temp)+a(temp,tb));
tmpb=find(d(tb)==min(d(tb)));
temp=tb(tmpb(1));
pb(temp)=1;
index1=[index1,temp];
temp2=find(d(index1)==d(temp)-a(temp,index1));
index2(temp)=index1(temp2(1));
end
d,index1,index2
基于邻接矩阵的最短路算法(matlab实现)
猜你喜欢
转载自blog.csdn.net/Ruanes/article/details/104194971
今日推荐
周排行