
基本思路为从一颗根节点开始让一颗小树慢慢长大 .从根节点开始,每次找一个与当前树有直接边的邻接点,每次找一个最小权重的边,将其边和点收入到树内,树就长大了,然后继续往外长这颗树.反复循环. 以上图的情况来看以V1为起点最小生成树的生成顺序为:
V1(V4最近只有1) - V4(此时树为V1+V4找与他们最近的边) - V2(V3,V2顺序无所谓先后) - V3(V3,V2顺序无所谓先后) - V7(此时因为不能有回路,则V2-V4,V3-V1,V6-V7与树不直接相连,不计入。因此V7最小)-V6-V5

如果V和S(初始点)有直接的边则V的距离为S-V的权重,否则为正无穷,跟dijkstra一样。

Prim算法是一种贪心策略,从一个根节点开始逐步构建最小生成树。每次选择与当前树有最小权重边的邻接点加入树中,避免形成回路。在给定图示例中,以V1为起点的最小生成树构建顺序为V1-V4-V2-V3-V7-V6-V5。算法中,节点距离初始化,通过更新邻接点距离并存储父节点信息来构建树。当顶点个数未达到总数时,表明图不连通,最小生成树不存在。

4267

被折叠的 条评论
为什么被折叠?



