转自:http://www.cnblogs.com/biyeymyhjob/archive/2012/07/31/2615833.html

Dijkstra算法

1.定义概览

Dijkstra(迪杰斯特拉)算法是典型的单源最短路径算法,用于计算一个节点到其他所有节点的最短路径。主要特点是以起始点为中心向外层层扩展,直到扩展到终点为止。Dijkstra算法是很有代表性的最短路径算法,在很多专业课程中都作为基本内容有详细的介绍,如数据结构,图论,运筹学等等。注意该算法要求图中不存在负权边。

问题描述:在无向图 G=(V,E) 中,假设每条边 E[i] 的长度为 w[i],找到由顶点 V0 到其余各点的最短路径。(单源最短路径)

2.算法描述

1)算法思想:设G=(V,E)是一个带权有向图,把图中顶点集合V分成两组,第一组为已求出最短路径的顶点集合(用S表示,初始时S中只有一个源点,以后每求得一条最短路径 , 就将加入到集合S中,直到全部顶点都加入到S中,算法就结束了),第二组为其余未确定最短路径的顶点集合(用U表示),按最短路径长度的递增次序依次把第二组的顶点加入S中。在加入的过程中,总保持从源点v到S中各顶点的最短路径长度不大于从源点v到U中任何顶点的最短路径长度。此外,每个顶点对应一个距离,S中的顶点的距离就是从v到此顶点的最短路径长度,U中的顶点的距离,是从v到此顶点只包括S中的顶点为中间顶点的当前最短路径长度。

2)算法步骤:

a.初始时,S只包含源点,即S={v},v的距离为0。U包含除v外的其他顶点,即:U={其余顶点},若v与U中顶点u有边,则<u,v>正常有权值,若u不是v的出边邻接点,则<u,v>权值为∞。

b.从U中选取一个距离v最小的顶点k,把k,加入S中(该选定的距离就是v到k的最短路径长度)。

c.以k为新考虑的中间点,修改U中各顶点的距离;若从源点v到顶点u的距离(经过顶点k)比原来距离(不经过顶点k)短,则修改顶点u的距离值,修改后的距离值的顶点k的距离加上边上的权。

d.重复步骤b和c直到所有顶点都包含在S中。

4.算法实例

先给出一个无向图

用Dijkstra算法找出以A为起点的单源最短路径步骤如下

转载于:https://www.cnblogs.com/bore3601/p/3829310.html

Dijkstra算法——最短路径(转)相关推荐

  1. Dijkstra算法 最短路径

    叙述 今天终于写到著名的贪心算法--Dijkstra算法了,内心有点激动. 小明的故事 Dijstra算法对很多人来说看起来比较困难,不是很能理解,其实也没什么啦! 比如,小明要自己驾车从科技大学去博 ...

  2. Dijkstra算法(最短路径)

    对于网图来说,最短路径,是指起始顶点到末尾顶点之间经过的边上权值之和最小的路径. 带权路径长度-----当图是带权图时,一条路径上所有边的权值之和,称为该路径的带权路径长度. 思路:Dijkstra算 ...

  3. 贪心算法单源点最短路径例题c语言源代码,Dijkstra算法是解单源最短路径问题的一个贪心算法...

    问题描述 给定一个带权有向图 G=(V,E) ,其中每条边的权是一个非负实数. 另外,还给定 V 中的一个项点,称为源. 现在我们要计算从源到所有其他各项点的最短路径长度. 这里的长度是指路上各边权之 ...

  4. 数据结构与算法(7-4)最短路径(迪杰斯特拉(Dijkstra)算法、弗洛伊德(Floyd)算法)

    目录 一.最短路径概念 二.迪杰斯特拉(Dijkstra)算法(单源最短路径) 1.原理 2.过程 3.代码 三.弗洛伊德(Floyd)算法(多源最短路径) 1.原理 2.存储 3.遍历 4.代码 参 ...

  5. 【算法】【ACM】深入理解Dijkstra算法(单源最短路径算法)

    Dijkstra算法是用来求解从某个源点到其他各顶点的最短路径(单源最短路径). 下面的Dijkstra算法的讲解都是基于这个有向图,在遇到其他问题可以类比. 算法的基本思想: 把图中的定点分成两组, ...

  6. 判断有向图g中顶点i到顶点j是否有路径_[源码和文档分享]基于Dijkstra算法的最短路径问题求解...

    摘 要 现实生活中许多数据的处理依赖于Dijkstra算法的应用,通过应用Dijkstra算法使复杂问题更加简单化.算法是以起始点为中心向外层层扩展,直到扩展到终点为止,最终求出最短路径.采用Visu ...

  7. Dijkstra算法--有向图的源点到其他顶点的最短路径(连接矩阵、邻接矩阵两种方式)

    引子: Dijkstra算法:某个顶点到其他顶点的最短路径. 以下面这个图为例:其中源点是A.关键点:维护一个二维数组,具体见下面: 1.首先,派一名调查员驻扎在A处,在A处,a调查员能够知道与A相连 ...

  8. dijkstra 算法_最短路径问题Dijkstra算法详解

    1.Dijkstra算法介绍 · 算法起源: · Djkstra 算法是一种用于计算带权有向图中单源最短路径(SSSP:Single-Source Shortest Path)的算法,由计算机科学家E ...

  9. _DataStructure_C_Impl:Dijkstra算法求最短路径

    // _DataStructure_C_Impl:Dijkstra #include<stdio.h> #include<stdlib.h> #include<strin ...

最新文章

  1. 【转载】JUnit各个注解的含义
  2. java有没有求组合的函数_如何在Java 8中使用compose和andThen组合函数
  3. CF294C Shaass and Lights(排列组合)
  4. 数据挖掘导论读书笔记11异常检测
  5. ubuntu笔记:查看Ubuntu的包依赖关系
  6. 以太网供电技术/有源以太网技术POE简单介绍
  7. mysql 检查列是否存在,如何检查mysql表列是否存在?
  8. html期末主题作业,tm.html
  9. 电商促销活动那么多,美工需要炫酷海报万能模板!可套用!救急必备!
  10. PHP 服务器变量 $_SERVER(转)
  11. android 编译 c 程序,Android上通过gcc编译普通的C程序
  12. SiteMesh2-示例工程
  13. lqr算法 c语言,LQR最优控制原理介绍
  14. vue路由守卫、vue-ajax请求
  15. lua 函数 默认值_简明lua教程[转]
  16. php 插件推荐,Typecho实用插件推荐(一)
  17. 正确刷牙的健康小常识
  18. 【ybt金牌导航2-3-3】【luogu P3975】K小子串 / 弦论
  19. 字符串 splice()、split() 和slice()方法
  20. 2022年阿里全球数学竞赛中的集福活动(附代码解答)

热门文章

  1. 鸿蒙开发者大会邀请函,将召开史上最大规模开发者大会,华为抓紧调试“鸿蒙”系统...
  2. 第一次失效_直击震撼场面!宁乡新沩丰坝建成以来第一次高水位应急演练!
  3. 怎样设计访谈提纲_访谈提纲设计
  4. format函数_Python学习教程:Python3之字符串格式化format函数详解(上)
  5. TensorFlow实现深度学习算法的教程汇集:代码+笔记
  6. Linux内核模块下载到板子,在Linux内核中增加新驱动模块
  7. linux下串口抓包,Linux的串行端口 - wrtie()字节到目标设备通过串口
  8. 创新方法(TRIZ)理论及应用
  9. mysql字符串等于失效_MySql整型索引和字符串索引失效或隐式转换问题
  10. 餐饮新零售品牌后位悬虚已久,喜茶能否凤袍加身入主中宫?