%初始化

MAXNUM=5;

MAXINT=32767;

dij=MAXINT*ones(MAXNUM,MAXNUM);

dij(1,2)=10;

dij(1,4)=30;

dij(1,5)=100;

dij(2,3)=50;

dij(3,5)=10;

dij(4,3)=20;

dij(4,5)=60;

dij(1,1)=0;

dij(2,2)=0;

dij(3,3)=0;

dij(4,4)=0;

dij(5,5)=0;

V=1:MAXNUM;%全部节点

S=[1];%已分配节点

m=1;%过渡节点

ite=2;

U=2:MAXNUM;%未分配的节点

%重复,直到U为空

%将U中的节点不断添加到S中,同时记录过渡节点和最短路径

dist=dij(1,:);%节点1到其它节点的初始距离值,每次迭代更新一次

dist1=dist;

while(length(U)>0)

dist1(dist1==min(dist1))=[]; %已分配的节点对应的距离从dist1中删除

m=find(dist==min(dist1));%记录dist1当前的最小值在dist中的下标

S(ite)=m;%将过渡节点加入S

U(find(U==m))=[];%将过渡节点从U中删除

%比较1经过m与不经过m到未分配节点的距离,dist中的距离更新为较小者

for u=1:length(U)

if(dist(m)+dij(m,U(u))

dist1(find(dist1==dist(U(u))))=dist(m)+dij(m,U(u));%dist1中的值同步更新

dist(U(u))=dist(m)+dij(m,U(u));

end

end

ite=ite+1;

end

%保存到每个节点的最短路径,每行对应每个节点的路径和最短距离,其实就是将S逆序输出

path(1,1)=1;

for node=2:MAXNUM

location=find(S==node);

path(node,1)=node;

i=2;

for s=location:-1:2

if(dij(S(s-1),S(s))~=MAXINT)

path(node,i)=S(s-1);

i=i+1;

end

end

path(node,i)=dist(node);

end

%TODO:程序中用到了find()方法,这是一个bug,find可能会返回不止一个值,取其中任意一个就行。

webwxgetmsgimg.jpg

(46.31 KB, 下载次数: 2)

2016-8-8 19:09 上传

程序对应的有向图

dijkstra的matlab程序,最短路径算法dijkstra的matlab程序,让大家来找茬,交流相关推荐

  1. 最短路径算法——Dijkstra,Bellman-Ford,Floyd-Warshall,Johnson,无一幸免

    文章出自:http://dsqiu.iteye.com/blog/1689163 最短路径算法--Dijkstra,Bellman-Ford,Floyd-Warshall,Johnson,无一幸免 本 ...

  2. 计算机网络最短路径路由选择,最短路径算法Dijkstra算法在路由选择中的应用.pdf...

    最短路径算法Dijkstra算法在路由选择中的应用.pdf 计算机与网络 江苏联合职业技术学院徐州机电工程分院 王恒青 江苏联合职业技术学院徐州生物工程分院 宋如敏 [摘要]本文介绍了路由算法的设计目 ...

  3. [转]最短路径算法—Dijkstra(迪杰斯特拉)算法分析与实现

    最短路径算法-Dijkstra(迪杰斯特拉)算法分析与实现(C/C++) Dijkstra算法 ----------- 最后更新时间:2011.9.25 ----------- Dijkstra(迪杰 ...

  4. 最短路径算法----Dijkstra (转)

    Dijkstra算法的核心思想是贪心策略+动态规划 算法流程: 在以下说明中,s为源,w[u,v]为点u和v之间的边的长度,结果保存在dis[] 初始化:源的距离dis[s]设为0,其他的点距离设为无 ...

  5. 带权图的最短路径算法(Dijkstra)实现

    一,介绍 本文实现带权图的最短路径算法.给定图中一个顶点,求解该顶点到图中所有其他顶点的最短路径 以及 最短路径的长度.在决定写这篇文章之前,在网上找了很多关于Dijkstra算法实现,但大部分是不带 ...

  6. 最短路径算法——Dijkstra and Floyd算法

    一.     前言:     这个古老的算法应该耳熟能详了吧,但是我自从从学校出来到现在,最短路径算法都没有实际运用过,最近在一个GIS项目中总算用到了,于是乎把教材重温了下,同时查阅了网上很多的资料 ...

  7. 图论基础知识--最小生成树算法kruskal(克鲁斯克尔)和普里姆算法(Prim算法);最短路径算法Dijkstra(迪杰斯特拉)和Floyd(弗洛伊德)

    一.基础知识   有向图   无向图 以无向图为例: 邻接矩阵: 度矩阵(对角矩阵): 二.最小生成树 应用:将网络顶点看着城市,边看着城市之间通讯网,边的权重看着成本,根据最小生成树可以构建城市之间 ...

  8. python3dijkstra_python3 实现Dijkstra(迪杰斯特拉)最短路径算法

    Dijkstra 单源最短路径算法,用于计算一个节点到其他所有节点的最短路径.主要特点是以起始点为中心向外层层扩展,直到扩展到终点为止.Dijkstra算法是很有代表性的最短路径算法,在很多专业课程中 ...

  9. 图的最短路径之Dijkstra求单源最短路径算法(C++)

    一个有向带权图求它的单源最短路径可以使用Dijkstra算法. 单源最短路径是指:从图中的某个顶点出发,到其余各个顶点权值最小的路径. Dijkstra算法需要用到三个辅助数组: dist[max]: ...

最新文章

  1. 10. 解析XML文件(SAX/DOM/ElementTre)
  2. 电路中的这些符号标识,你真的明白吗?
  3. MySQL备份与恢复-mysqldump备份与恢复
  4. Linux time()函数解析
  5. 怎么调整字段长短_【芝士蛋糕怎么总烤不熟呢?】
  6. java 查找list中指定字符串出现的次数
  7. Hadoop ecosystem
  8. Maven Web项目配置Mybatis出现SqlSessionFactory错误的解决方案
  9. SQL注入原理解说,非常不错!
  10. 第二季-专题3-汇编语言得玩转
  11. VS2017离线下载安装包教程
  12. 郭盛华技术有多牛?外媒:稳坐亚洲第一
  13. 【开源访谈】ECharts 作者 林峰 访谈实录
  14. java学生基本信息管理_Java课程设计 - 学生基本信息管理
  15. c语言猜拳游戏石头剪刀布,模拟剪刀石头布猜拳游戏
  16. C语言(苏小红)——第二章基本数据类型
  17. 《增强现实:融合现实与虚拟世界》
  18. [转]网站整合Ucenter详细流程
  19. C# 特性Description的值的获取
  20. 出现错误“subprocess.CalledProcessError: Command ‘[‘ninja‘, ‘-v‘]‘ returned non-zero exit status 1”解决方法

热门文章

  1. imx8qxp正常倒车
  2. 面试JAVA常被问到的问题(持续更新中)
  3. Sklearn 模型保存和使用
  4. [Python]-Wechat工具
  5. 最小环 floyd java_最小环(floyd)
  6. 飞讯 移动售楼营销 iPAD营销楼盘展示
  7. osgEarth示例分析——osgearth_lights
  8. 车辆停放收费管理系统c语言,毕业论文 停车场收费管理系统
  9. Shell脚本运行中的停止方法
  10. 李渔:居家办公成就的辉煌人生