算法描述:

输入图G,源点v0,输出源点到各点的最短距离D

中间变量v0保存当前已经处理到的顶点集合,v1保存剩余的集合

1.初始化v1,D

2.计算v0到v1各点的最短距离,保存到D

for each i in v0;D(j)=min[D(j),G(v0(1),i)+G(i,j)] ,where j in v1

3.将D中最小的那一项加入到v0,并且从v1删除这一项。

4.转到2,直到v0包含所有顶点。

%dijsk最短路径算法

clear,clc

G=[

inf inf 10 inf 30 100;

inf inf 5 inf inf inf;

inf 5 inf 50 inf inf;

inf inf inf inf inf 10;

inf inf inf 20 inf 60;

inf inf inf inf inf inf;

]; %邻接矩阵

N=size(G,1); %顶点数

v0=1; %源点

v1=ones(1,N); %除去原点后的集合

v1(v0)=0;

%计算和源点最近的点

D=G(v0,:);

while 1

D2=D;

for i=1:N

if v1(i)==0

D2(i)=inf;

end

end

D2

[Dmin id]=min(D2);

if isinf(Dmin),error,end

 

v0=[v0 id] %将最近的点加入v0集合,并从v1集合中删除

v1(id)=0;

 

if size(v0,2)==N,break;end

%计算v0(1)到v1各点的最近距离

fprintf('计算v0(1)到v1各点的最近距离\n');v0,v1

id=0;

for j=1:N %计算到j的最近距离

if v1(j)

for i=1:N

if ~v1(i) %i在vo中

D(j)=min(D(j),D(i)+G(i,j));

end

D(j)=min(D(j),G(v0(1),i)+G(i,j));

end

end

end

fprintf('最近距离\n');D

if isinf(Dmin),error,end

end

v0

 

%>> v0

%v0 =

% 1 3 5 4 6

 

最短路径问题:dijkstar的更多相关文章

  1. 最短路径——Dijkstar算法

    背景:本文是在小甲鱼数据结构教学视频中的代码的基础上,添加详细注释而完成的.该段代码并不完整,仅摘录了核心算法部分,结合自己的思考,谈谈理解. Dijkstar算法理解: Dijkstar算法的核心思 ...

  2. 最短路径Dijkstar算法和Floyd算法详解(c语言版)

    博客转载自:https://blog.csdn.net/crescent__moon/article/details/16986765 先说说Dijkstra吧,这种算法只能求单源最短路径,那么什么是 ...

  3. 单源最短路径问题-Dijkstra算法

    同样是层序遍历,在每次迭代中挑出最小的设置为已知 ===================================== 2017年9月18日10:00:03 dijkstra并不是完全的层序遍历 ...

  4. 最短路径——Dijkstra算法

    一.相关定义 最短路径:从图中的某个顶点出发到达另外一个顶点的所经过的边的权重和最小的一条路径. 地位:Dijkstra算法是很有代表性的最短路算法,在很多专业课程中都作为基本内容有详细的介绍,如数据 ...

  5. 转:ospf学习-----SPF最短路径算法

    ospf学习-----SPF最短路径算法 常见的路由协议比如RIP.IGRP.BGP是距离矢量协议,OSPF和ISIS是数据链路状态协议.矢量协议路由器只知道本身和与自身相连的接口路由信息,矢量图只是 ...

  6. Python数模笔记-NetworkX(2)最短路径

    1.最短路径问题的常用算法 最短路径问题是图论研究中的经典算法问题,用于计算图中一个顶点到另一个顶点的最短路径. 1.1 最短路径长度与最短加权路径长度 在日常生活中,最短路径长度与最短路径距离好像并 ...

  7. Python小白的数学建模课-16.最短路径算法

    最短路径问题是图论研究中的经典算法问题,用于计算图中一个顶点到另一个顶点的最短路径. 在图论中,最短路径长度与最短路径距离却是不同的概念和问题,经常会被混淆. 求最短路径长度的常用算法是 Dijkst ...

  8. Johnson 全源最短路径算法

    解决单源最短路径问题(Single Source Shortest Paths Problem)的算法包括: Dijkstra 单源最短路径算法:时间复杂度为 O(E + VlogV),要求权值非负: ...

  9. Floyd-Warshall 全源最短路径算法

    Floyd-Warshall 算法采用动态规划方案来解决在一个有向图 G = (V, E) 上每对顶点间的最短路径问题,即全源最短路径问题(All-Pairs Shortest Paths Probl ...

随机推荐

  1. Git本地版本控制备忘

    首先git是一个版本控制工具,类似于SVN 笔记包括两部分,git本地版本控制和git远程协助 一.Git本地版本控制 以git windows版本msysgit为例,下载地址http://msysg ...

  2. Mybatis 开发中遇见的异常及处理

    1 异常信息: org.mybatis.spring.MyBatisSystemException: nested exception is org.apache.ibatis.binding.Bin ...

  3. curl 学习

    <?php // $username =13800138000; // $password =123456; // $sendto =13912345678; // $message = &qu ...

  4. 讲解版的自动轮播(新手福利)样式和js就不分离了为了看的方便

    <!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8" ...

  5. 全响应跨设备的Zoomla!逐浪CMS2 x2.0正式公布

    2014年是中国互联网的重要一年,京东上市.聚美优品领衔创业风范,小米进军国际化.滴滴快的锋火争雄. 作为中国互联网的中间力量,Zoomla!逐浪软件团队坚守信念,始终以WEB开发和科研创新为己任,并 ...

  6. [RxJS] Completing a Stream with TakeWhile

    Subscribe can take three params: subscribe( (x)=> console.log(x), err=> console.log(err), ()=& ...

  7. Android 关于倒计时功能的实现

    关于倒计时的实现,可以说有很多的方法,比较常见的就是Timer+TimerTask+Handler了,或者还可以配合Runnable.例如下面的代码: import java.util.Timer; ...

  8. Socket学习笔记

    ..........(此处略去万万字)学习中曲折的过程不介绍了,直接说结果 我的学习方法,问自己三个问题,学习过程将围绕这三个问题进行 what:socket是什么 why:为什么要使用socket ...

  9. MVC4过滤器(转)

    先来看看一个例子演示过滤器有什么用: public class AdminController : Controller { // ... instance variables and constru ...

  10. (转)SQL中的ISNULL函数介绍

    SQL中有多种多样的函数,下面将为您介绍SQL中的ISNULL函数,包括其语法.注释.返回类型等,供您参考,希望对您学习SQL能够有所帮助. ISNULL 使用指定的替换值替换 NULL. 语法ISN ...