迪杰斯特拉(di jie qi)算法

这里有一张图:

假设要求从1号节点到5号节点的最短路。那么根据迪杰斯特拉算法的思想,我们先看:

节点1,从节点1出发的一共有3条路,分别是1-6、1-3、1-2。然后我们分别看每条路的权值,发现1-6的权值为14,记录下来、1-3的权值为9,记录下来、1-2的权值为7,记录下来。我们发现好像不能再从1号节点发现什么了,所以,我们把它out掉。

接着按顺序看2号节点,从节点2发出了2条路分别是2-3与2-4,我们接着向计算1号节点一样计算2号节点。先计算2-3,权值为10。咦?我们好像已经在计算1号节点的时候标记过了,也就是说现在到3号节点有两种方案,分别是1-3与1-2-3,通过比较,我们发现9〉7+10,所以标记不变,依旧是9。接下来看2-4,没有被标记过,记录15。Out掉节点2

然后就该节点3了,我们发现有两条路,且都没被标记过,分别记录2与11,out掉节点3

节点4有两条路,发现从3-4更方便标记11。Out掉。

节点6有两条路,3-6方便标记为2。Out掉。

最后5号节点有两条路从4到5最短,5号节点标记为6。

我们达到了光辉的顶点,发现最后路径是1-3-6-5和为20。

迪杰斯特拉算法具有明显的贪心特征,通过每个节点去最优值的过程我们称之为“松弛”,松弛之后,答案显而易见。

实际上对于松弛过程的模拟,核心代码只有两行:

if(dis[v]>dis[u]+e[u][v])

dis[v]=dis[u]+e[u][v];

(咦,你的核心代码为什么没有找最近的节点?哈哈思(sheng)考(lve))

迪杰斯特拉算法的局限性

不难看出(好粗暴的词汇)它的时间复杂度为O((M+N)logN)空间复杂度为O(M)看起来还不错,但它无法解决权值为负数的情况,所以用前先审题哦。

【算法杂谈】LJX的迪杰斯特拉算法报告的更多相关文章

  1. 算法与数据结构(六) 迪杰斯特拉算法的最短路径(Swift版)

    上篇博客我们详细的介绍了两种经典的最小生成树的算法,本篇博客我们就来详细的讲一下最短路径的经典算法----迪杰斯特拉算法.首先我们先聊一下什么是最短路径,这个还是比较好理解的.比如我要从北京到济南,而 ...

  2. C++迪杰斯特拉算法求最短路径

    一:算法历史 迪杰斯特拉算法是由荷兰计算机科学家狄克斯特拉于1959 年提出的,因此又叫狄克斯特拉算法.是从一个顶点到其余各顶点的最短路径算法,解决的是有向图中最短路径问题.迪杰斯特拉算法主要特点是以 ...

  3. 图(最短路径算法————迪杰斯特拉算法和弗洛伊德算法).RP

    文转:http://blog.csdn.net/zxq2574043697/article/details/9451887 一: 最短路径算法 1. 迪杰斯特拉算法 2. 弗洛伊德算法 二: 1. 迪 ...

  4. C#迪杰斯特拉算法

    C#迪杰斯特拉算法 网上有许多版本的,自己还是写一个理解点 Dijkstra.cs public class Dijkstra { private List<Node> _nodes; p ...

  5. C# 迪杰斯特拉算法 Dijkstra

    什么也不想说,现在直接上封装的方法: using System; using System.Collections.Concurrent; using System.Collections.Gener ...

  6. 迪杰斯特拉算法——PAT 1003

    本文主要是将我对于我对于迪杰斯特拉算法的理解写出来,同时通过例题来希望能够加深对于算法的理解,其中有错误的地方希望大家指正. 迪杰斯特拉算法 我将这个算法理解成一个局部到整体的算法,这个方法确实越研究 ...

  7. dijkstra算法(迪杰斯特拉算法)

    dijkstra算法(迪杰斯特拉算法) 用途:有向图最短路径问题 定义:迪杰斯特拉算法是典型的算法,一般的表述通常有两种方式,这里均采用永久和临时标号的方式,该算法要求图中不存在负权边 用永久和临时标 ...

  8. 迪杰斯特拉算法c语言实现

    /*http://1wangxiaobo@163.com 数据结构C语言版 迪杰斯特拉算法  P189 http://1wangxiaobo@163.com 编译环境:Dev-C++ 4.9.9.2  ...

  9. HDU6166-Senior Pan-Dijkstra迪杰斯特拉算法(添加超源点,超汇点)+二进制划分集合-2017多校Team09

    学长好久之前讲的,本来好久好久之前就要写题解的,一直都没写,懒死_(:з」∠)_ Senior Pan Time Limit: 12000/6000 MS (Java/Others)    Memor ...

随机推荐

  1. 4 HTML&JS等前端知识系列之Dom的基础

    preface 主要聊聊dom的编程,包含下面的内容: what's the dom dom选择器 innerText 替换或写入文本 value 获取input,select,textarea的值 ...

  2. <<< Tomcat运行提示The server does not support version 3.0

    导入了一个项目,运行Tomcat出现此错误大致由于当前导入项目服务器不支持J2ee版本 原因是导入项目的Tomcat版本是6.0,Tomcat 6.0仅支持到Servlet 2.5,而此时项目是3.0 ...

  3. 说说JavaScriptCore

    http://www.jianshu.com/p/1328e15416f3/comments/1724404 javascript目前看来仍是世界上最流行的语言,不管在web.服务端还是客户端都有广泛 ...

  4. WinForm------SimpleButton去掉点击时的边框

    设置属性

  5. Java排序算法——希尔排序

    package sort; //================================================= // File Name : ShellSort //------- ...

  6. HTML5学习笔记(持续更新中....)

    平时的工作中,不知不觉我们应用了很多HTML5,但当正儿八经问起来你对HTML5了解多少,很多时候都有点懵. 做个简单的HTML5总结.包括简介.要学的知识点.凌乱的知识点 HMTL5简介 定义:ht ...

  7. Spring系列之AOP实现的两种方式

    AOP常用的实现方式有两种,一种是采用声明的方式来实现(基于XML),一种是采用注解的方式来实现(基于AspectJ). 首先复习下AOP中一些比较重要的概念: Joinpoint(连接点):程序执行 ...

  8. vue 列表渲染

    在Vue官网中写道,vue无法直接用索引设置元素, 如 vm.items[0] = {}: 提出的解决方法是用 : example1.items.$set(0, { childMsg: 'Change ...

  9. poj 1733

    这题离散化+并查集,没看出关dp什么事.(那他为什么放到dp里面) 用Si记录前i项的和.拆成两个点,i*2表示与第i个相同,i*2+1表示与第i个不同.用并查集判断.区间[a,b]就可以看成Sb-S ...

  10. BZOJ2007——[Noi2010]海拔

    1.题意:一个裸的最小割 2.分析:直接转成对偶图最短路就好了,水爆了!(雾) #include <queue> #include <cstdio> #include < ...