Dijstra 和 Prim 算法比较
引言:Dijstra和Prim算法是图论中两种基础的优化算法。只要与图相关的问题,都有可能会用这两种算法来解决问题。信息专业的人一定是学过这两种算法的,不过不知道别人有没有这种感觉,我常常会分不清这两种算法,总觉得这两种算法非常的相似,甚至有时候有的人会把这两种算法混淆着用。为了彻底摆脱这一困惑,决定写篇文章,来区分Dijstra和Prim。
应用场景不同:
Dijstra 和 Prim都是优化算法,但是他们的应用场景不一样。Dijstra是最短路径算法,用来解决在一个图上寻找一个起点到一个终点的最短路径这样的问题;Prim是最小生成树算法,即对于一个图,寻找一个能够包含所有顶点且边的权值和最小的树。
算法步骤不同:
因为解决的问题不同,这两种算法的具体实现方法也就存在差别。
\textcolordarkblueDijstra \textcolor d a r k b l u e D i j s t r a
基本思想:最短路径的求解过程中,图中的顶点分属两个集合:指定出发点的顶点为一个集合V,其余顶点为一个集合W。从W中选择一个离V中顶点最近的一个顶点加入到V中,求出了长度最短的一条最短路径,并把刚选择加入最短路径的顶点作为中间点,对其它顶点到源点的路径长度进行修改,求出长度次短的一条最短路径,依次类推,直到从顶点v到其它各顶点的最短路径全部求出为止。
实现步骤:
(1)集合 S S 和 , S S 中存放已找到最短路径的顶点, 存放当前还未找到最短路径的顶点。初态, S S 中只包含源点 。
(2)不断从