【算法】最短路——两点最短总权和

来源:互联网 发布:pr2015破解for mac 编辑:程序博客网 时间:2024/05/17 04:43

单源最短路问题

求解一个点到其它所有点的最短路的问题

用BFS求最短路

《算法竞赛入门经典》
第六章数据结构基础之图部分——zzyafyj的专栏

Dijkstra算法

【坐在马桶上看算法】算法7:Dijkstra最短路算法

我们发现dis[3]=12,dis[2]+e[2][3]=1+9=10,dis[3]>dis[2]+e[2][3],因此dis[3]要更新为10。这个过程有个专业术语叫做“松弛”。即1号顶点到3号顶点的路程即dis[3],通过2->3这条边松弛成功。这便是Dijkstra算法的主要思想:通过“边”来松弛1号顶点到其余各个顶点的路程。

每次找到离源点(上面例子的源点就是1号顶点)最近的一个顶点,然后以该顶点为中心进行扩展,最终得到源点到其余所有点的最短路径。

任意两点间的最短路问题

求解所有两点间的最短路的问题

Floyd-Warshall算法

坐在马桶上看算法:只有五行的Floyd最短路算法

最开始只允许经过1号顶点进行中转,接下来只允许经过1和2号顶点进行中转……允许经过1~n号所有顶点进行中转,求任意两点之间的最短路程。用一句话概括就是:从i号顶点到j号顶点只经过前k号点的最短路程。

参考文章:
《挑战程序设计竞赛》
坐在马桶上看算法:只有五行的Floyd最短路算法
【坐在马桶上看算法】算法7:Dijkstra最短路算法

0 0
原创粉丝点击