代码改变世界

随笔分类 -  Matlab

Dijkstra算法——方法(三)

2013-03-26 20:32 by Keiven_LY, 347 阅读, 收藏,
摘要: 最短路功能函数部分:function [S,D]=minRoute(i,m,W)%图与网络论中求最短路径的Dijkstra算法 M-函数%格式 [S,D]=minroute(i,m,W)% i为最短路径的起始点,m为图顶点数,W为图的带权邻接矩阵,% 不构成边的两顶点之间的权用inf表示。显示结果为:S的每% 一列从上到下记录了从始点到终点的最短路径所经顶点的序号;% D是一行向量,记录了S中所示路径的大小;%例如% clear;w=inf*ones(6);w(1,3)=10;w(1,5)=30;% w(1,6)=100;w(2,3)=5;w(3,4)=50;w(4,6)=10;%... 阅读全文

Dijkstra算法——方法(二)

2013-03-26 20:31 by Keiven_LY, 305 阅读, 收藏,
摘要: 最短路函数部分:function [d,DD]=dijkstra(D,s)%Dijkstra最短路算法Matlab程序用于求从起始点s到其它各点的最短路%D为赋权邻接矩阵%d为s到其它各点最短路径的长度%DD记载了最短路径生成树[m,n]=size(D);d=inf.*ones(1,m);d(1,s)=0;dd=zeros(1,m);dd(1,s)=1;y=s;DD=zeros(m,m);DD(y,y)=1;counter=1;while length(find(dd==1))<m for i=1:m if dd(i)==0 d(i)=min(d(i),d(y)+D(y,i)... 阅读全文

(原创)Dijkstra算法——方法(一)

2013-03-26 16:27 by Keiven_LY, 391 阅读, 收藏,
摘要: 算法原理步骤如下:1、初使时令 S={V0},T={其余顶点}T中顶点对应的距离值 若存在<V0,Vi>,d(V0,Vi)为<V0,Vi>弧上的权值 若不存在<V0,Vi>,d(V0,Vi)为 ∞ 2、从T中选取一个其距离值为最小的顶点W且不在S中,加入S 3、对T中顶点的距离值进行修改:若加进W作中间顶点,从V0到Vi的距离值比不加W的路径要短,则修改此距离值 重复上述步骤2、3,直到S中包含所有顶点,即S=T为止说明:以下算法是给定起点与目的节点的最短路径最短路函数部分:function [l,t]=minPath(A,v) % 函数说明如下: % [ 阅读全文