matlab结束外循环,求单源最短路径的BellmanFord算法的matlab实现及其优化
function [minD,path] = BellmanFord(w,start,terminal)
%求单源最短路径的Bellman-Ford算法(图论)
%调用格式:[minD,path] = BellmanFord(w,start,terminal)
%输入:
% w------------图的带权邻接矩阵(可以是有向图,权值可正可负,但不能有负环,
% 如果两点之间没有边直连,则边权为无穷大)
% start--------源点标号
% terminal-----目的点标号
%输出:
% minD---------起点到终点的最短距离
% path---------是一个向量,存储了从源点到目的点的路径。如果没有输入目的点,则
% 第i位存储的是源点到节点i的最短路径上i的前驱结点
G = sparse(w); % 构造邻接矩阵w的稀疏矩阵
[u,v,c] = find(G); % 记录边的始点和终点
V = size(w,1); % 节点数量
E = length(u); % 边的数量
f = zeros(1,V); % 存放源点到该点最短路径上该点的前驱结点
% 初始化
dist = inf(1,V);
dist(start) = 0;
% 主循环
for k = 1:(V-1)
for e = 1:E
i = u(e); j = v(e);
if dist(j) > dist(i) + c(e)
d
matlab结束外循环,求单源最短路径的BellmanFord算法的matlab实现及其优化
function [minD,path] = BellmanFord(w,start,terminal)
%求单源最短路径的Bellman-Ford算法(图论)
%调用格式:[minD,path] = BellmanFord(w,start,terminal)
%输入:
% w------------图的带权邻接矩阵(可以是有向图,权值可正可负,但不能有负环,
% 如果两点之间没有边直连,则边权为无穷大)
% start--------源点标号
% terminal-----目的点标号
%输出:
% minD---------起点到终点的最短距离
% path---------是一个向量,存储了从源点到目的点的路径。如果没有输入目的点,则
% 第i位存储的是源点到节点i的最短路径上i的前驱结点
G = sparse(w); % 构造邻接矩阵w的稀疏矩阵
[u,v,c] = find(G); % 记录边的始点和终点
V = size(w,1); % 节点数量
E = length(u); % 边的数量
f = zeros(1,V); % 存放源点到该点最短路径上该点的前驱结点
% 初始化
dist = inf(1,V);
dist(start) = 0;
% 主循环
for k = 1:(V-1)
for e = 1:E
i = u(e); j = v(e);
if dist(j) > dist(i) + c(e)
d