Dijkstra 与 Prim 算法的区别

Dijkstra 算法与 Prim 算法非常相似,它们最直观的区别就是目的不同:前者求解最短路径,后者求解最小生成树。

然后他们算法过程中比较大的区别就是“更新”的不同。

Dijkstra 与 Prim 算法的区别

Dijkstra:比如上图,加入b到已拓展节点集合里面后,shortest_path[c] = min( shortest_path[b]+2 , shortest_path[c] ),就是看看加入b后会不会通过b而到达c的路径更短,是就更新

Prim:加入b到已拓展节点集合里面后,min_edge[c] = min( distance[b,c] , min_edge[c] ) ,就是看看加入b后会不会通过b生成c的枝条长度(b到c的距离)更短,是就更新。