图与网络模型及方法之最短路问题(dijkstra算法)

Posted anyk1416

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了图与网络模型及方法之最短路问题(dijkstra算法)相关的知识,希望对你有一定的参考价值。

两个指定顶点之间的最短路径:

技术图片

 

两个指定顶点之间最短路问题的数学规划模型:

 

技术图片

 

 每对顶点之间的最短路径:

技术图片

 

技术图片

 

最小生成树问题:

  • Prim算法:

技术图片

 

 

Prim算法类似病毒感染的过程,其中P中存放的是已经计算出的顶点(即前一顶点与后一顶点构成的边在最短路径上),然后遍历P中所有的顶点,找出与V-P中所构成的边的最小值得那个顶点a,然后将顶点a归入P中,如此迭代,最终P=V,即算出了最小生成数。

  • Kruskal算法:

技术图片

 

技术图片

 

 

 其实Kruskal算法的思想和Prim算法的思想都是一样的(都是将所有点分为两个集合,已经遍历过的点归入P集合,未遍历过的点在V-P集合中,其中V是所有点的集合),Prim算法是将每次算出的最小权值的新顶点归入P集合,然后找出P集合与V-P集合中的点所成的最小权值的边,将构成最小权值边的V-P中的那点再归入到P集合中,如此迭代下去,P集合最终会和V集合相等。Kruskal算法是将P集合中的点化为一个点(标号值最小的那个点,对于每次迭代来讲,即将找到的最短权值边的较大的顶点标号改为较小的那个顶点的标号,并且淘汰掉此次迭代找到的最短权值边),每次迭代都会找到一个新点,如此迭代n-1(n是V集合中点的个数)次,就算出了最小生成树。

 

以上是关于图与网络模型及方法之最短路问题(dijkstra算法)的主要内容,如果未能解决你的问题,请参考以下文章

图论之最短路径算法

leetcode之最短路刷题总结1

算法小讲堂之最短路算法(Floyd+bellman+SPFA+Dijkstra)

算法之最短路

康复计划之最短路

答案解析第五章:图与网络模型方法一