最新消息: USBMI致力于为网友们分享Windows、安卓、IOS等主流手机系统相关的资讯以及评测、同时提供相关教程、应用、软件下载等服务。

matlab结束外循环,求单源最短路径的BellmanFord算法的matlab实现及其优化

互联网 admin 4浏览 0评论

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

发布评论

评论列表 (0)

  1. 暂无评论