首页 > 最短路径 - dijkstra

最短路径 - dijkstra

dijkstra是单源点最短路算法。

借图:

 

其基本思想是,设置顶点集合S并不断地作贪心选择来扩充这个集合。一个顶点属于集合S当且仅当从源到该顶点的最短路径长度已知。

初始时,S中仅含有源。设u是G的某一个顶点,把从源到u且中间只经过S中顶点的路称为从源到u的特殊路径,并用数组dist记录当前每个顶点所对应的最短特殊路径长度。Dijkstra算法每次从V-S中出具有最短特殊路长度的顶点u,将u添加到S中,同时对数组dist作必要的修改。一旦S包含了所有V中顶点,dist就记录了从源到所有其它顶点之间的最短路径长度。

 

红色部分:为什么是从V-S中取具有最短特殊路长度的顶点u?

1、dist[u]是V-S中dist[]最短的,也就是说V-S再无中间点使dist[u]更短。

转载于:https://www.cnblogs.com/byluoluo/p/3580939.html

更多相关:

  • 知识补充: 顶点数组对象:Vertex Array Object,VAO顶点缓冲对象:Vertex Buffer Object,VBO索引缓冲对象:Element Buffer Object,EBO或Index Buffer Object,IBO 蓝色部分代表的是我们可以注入自定义的着色器的部分。 图形渲染管线的第一个部分是顶...

  • 官方帮助文档http://www.electronjs.org/docs  有时候运行安装依赖包会很慢建议在(c)npm config edit之后弹出的.(c)npmrc记事本里面加入 electron_mirror=https://npm.taobao.org/mirrors/electron/ electron-bui...

  •     题意是求俩字符串的编辑距离,编辑定义有三种1、插入字符 2、删除字符 3、替换字符。 int minDistance(string word1, string word2) { if (word1.size() == 0) return (int)word2.size(); if (word2.size(...

  • 一:常量和变量 开始之前,还是照例做个经典的例子,如下: declare mydate varchar2(16) := 'hellow world'; begindbms_output.put_line(mydate); end; declare是声明部分我在这个部分声明了varchar2类型的变量,名字叫mydata,内容是he...