matlab dijkstra算法的问题,只能只能循环到第二步,%X是加权邻接举证distance1=ones(1,154)*inf;path1=ones(1,154)*63;B1=X(63,:);i=1;j=1;while j

来源:学生作业帮助网 编辑:作业帮 时间:2024/05/05 07:07:09

matlab dijkstra算法的问题,只能只能循环到第二步,%X是加权邻接举证distance1=ones(1,154)*inf;path1=ones(1,154)*63;B1=X(63,:);i=1;j=1;while j
matlab dijkstra算法的问题,只能只能循环到第二步,
%X是加权邻接举证
distance1=ones(1,154)*inf;
path1=ones(1,154)*63;
B1=X(63,:);
i=1;
j=1;
while j

matlab dijkstra算法的问题,只能只能循环到第二步,%X是加权邻接举证distance1=ones(1,154)*inf;path1=ones(1,154)*63;B1=X(63,:);i=1;j=1;while j
给你个正确的,自己看看吧.不行自己一行一行写注释,检查,看你对自己写的程序到底清楚不清楚
%-----------------------------------------------------------------------
function [l,t]=dijkstra(A,v)
%dijkstra最短路算法,某个顶点v到其余顶点的最短路
% 例:A=[0 2 8 1 inf inf inf inf
%2 0 6 inf 1 inf inf inf
% 8 6 0 7 5 1 2 inf
% 1 inf 7 0 inf inf 9 inf
% inf 1 5 inf 0 3 inf 8
% inf inf 1 inf 3 0 4 6
% inf inf 2 9 inf 4 0 3
% inf inf inf inf 8 6 3 0];
n=length(A);%顶点个数
V=1:n;%顶点集合
s=v;%已经找到最短路的点集,初始为v
l=A(v,:);%当前v点到各个点的距离,初始为直接距离
t=v.*ones(1,n);%当前距离时点的父顶点,初始都为v
ss=setdiff(V,s);nn=length(ss);%还没有找到最短路的点集
for j=1:n-1%一共进行n-1次迭代
k=ss(1);
for i=1:nn%对还没有找到最短路的点
if l(k)>l(ss(i))
k=ss(i);
l(k)=l(ss(i));%在当前一行距离中取最小值
end
end
if l(k)==inf%如果当前行最小值是无穷大,则结束
break;
else%否则k点的最短路找到
s=union(s,k);
ss=setdiff(V,s);
nn=length(ss);
end
if length(s)==n%全部点的最短路都找到
break;
else
for i=1:nn%以k为生长点,如果通过k点会更短,则更改当前最短距离
if l(ss(i))>l(k) A(k,ss(i))
l(ss(i))=l(k) A(k,ss(i));
t(ss(i))=k;
end
end
end
end
%附:运行上面程序后,如果想更清楚的观看点v到点vv的最短距离与路径可用下面小程序:
% v=3;%v要与上面的v一致
% vv=4;k=vv;tt=vv;
% while(1)
% if k==v
% tt %路径vv

关于Matlab Dijkstra算法问题,麻烦帮我解释下, 有没关于介绍怎么用matlab实现Dijkstra算法,floyd算法和bellman-ford算法的书籍. Floyd算法与Dijkstra算法的不同 Dijkstra最短路算法通用Matlab程序 Dijkstra最短路算法通用Matlab程序function [d,DD]=dijkstra(D,s)%Dijkstra最短路算法Matlab程序用于求从起始点s到其它各点的最短路%D为赋权邻接矩阵%d为s到其它各点最短路 求用matlab解最短路问题的程序要用Dijkstra算法找出任意两点间的最短路径.希望用MATLAB或LINGO编程求解.求程序, 最短路径的Dijkstra算法思路 Dijkstra算法的主要步骤是什么? 跪求解释 Matlab中graphshortestpath的具体用法 需要什么参数,矩阵,得到什么结果?是一个最短路径问题,据说是封装好的floyd,Dijkstra 算法 最短路径问题是有权还是没权问题呢? matlab dijkstra算法的问题,只能只能循环到第二步,%X是加权邻接举证distance1=ones(1,154)*inf;path1=ones(1,154)*63;B1=X(63,:);i=1;j=1;while j 关于matlab中的一个Dijkstra算法应用算法如下:function[d,DD]=dijkstra(D,s)%Dijkstra最短路算法Matlab程序用于求从起始点s到其它各点的最短路%D为赋权邻接矩阵%d为s到其它各点最短路径的长度%DD记载了 dijkstra算法 最短路径问题话说dijkstra算法可以求解一个节点到其他各节点的最短路径,但是如果节点间存在多条等长的最短路径怎么对这个算法修改呢?不要floyd算法或者别的算法,就dijkstra算法. 图论中求解最短路的dijkstra法的MATLAB程序中最后的矩阵DD是什么意思?MATLAB程序:function [d,DD]=dijkstra(D,s)%Dijkstra最短路算法Matlab程序用于求从起始点s到其它各点的最短路%D为赋权邻接矩阵%d为s( Dijkstra 算法是什么?Dijkstra 在哪里用 提供几道Dijkstra算法的ACM水题练习 为什么Dijkstra算法含有负数的时候不正确 matlab求最短路,运行dijkstra函数时出错function [d,DD]=dijkstra(D,s)%Dijkstra最短路算法Matlab程序用于求从起始点s到其它各点的最短路%D为赋权邻接矩阵%d为s到其它各点最短路径的长度; %DD记载了最短路 matlab运行dijkstra函数出错function [d,DD]=dijkstra(D,s)%Dijkstra最短路算法Matlab程序用于求从起始点s到其它各点的最短路%D为赋权邻接矩阵%d为s到其它各点最短路径的长度; %DD记载了最短路径生成树[m,n 我的dijkstra算法怎么有问题部分数据不能运行 用matlab做的B第一列是编号 第二列是横坐标 第三列是纵坐标 A是连接矩阵 C是由AB算出的连接矩阵 问问为什么一部分数据可以算例如distram(C,14,25)