最小生成树能够保证整个拓扑图的所有路径之和最小,但不能保证任意两点之间是最短路径。
最短路径是从一点出发,到达目的地的路径最小。
最小生成树所有点被连通 。把连通的图的所有顶点连起来路径之和最小的问题,即生成树总权值之和最小。整体来分析。
最短路径不一定所有点。只着眼于点与点之间的路径问题,并不关注整个图,也就意味着对一个节点运行算法的结果与另一个节点的结果之间没有多少关系。单条路径来分析。
最小生成树算法选择
有Kruskal和Prim算法
Kruskal相比Prim快很多。
Prim算法的实现过程,在求值过程中,先以一个点作为最小的初始起点,然后以迭代的方式,找出各结点中,所占权重最小的边,并加到最小的系列中。当所有的计算结点,都已经加入到预先设计的最小数列中,我们只需找出了这个连通图的最小结点,就能求出最小值。
Kruskal算法的实现过程,Kruskal算法是通过排序的方式,找到最小结点。在开始寻找之前,需要对权重从小到大进行排序。将排序好的权重,依次加入到序列中,而当所有的结点都加入到序列中后,我们就成功找到了这个最小值,速度方面要快很多。
最短路径选择
主要有Dijkstra和Floyd算法
Dijkstra算法和Floyd算法的区别之处:
总结来说就是
1.
Dijkstra不能处理负权图,Flyod能处理负权图;
2.
Dijkstra处理单源最短路径
Flyod是处理多源最短路径