prim求最小生成树

prim 算法建议在 kruskal 算法及相关证明掌握后进行学习,这里不再赘述。

前置知识

暂无

prim 的算法步骤

  1. 确定一号节点为最小生成树。
  2. 找到一条由已经属于最小生成树的点集连到还不属于最小生成树的点集的边,使得这条边在这类边中权值最小。
    令已经属于最小生成树的点集为 S,还不属于最小生成树的点集为 T,则可以表达为找到两个点 x,y 使得 minxT,yS{z}z 即为这条边的权值。
  3. 记两点都已属于最小生成树的点集,累计这条边的权值进入答案。
  4. 重复 2,3 的操作直到所有点都属于最小生成树的集合,输出累加值。

主要实现方法

prim 的实现步骤可以类比 dijkstra,很像
维护数组 d,找到一个点 x,使得 xT,且 d[x] 最小,那么就把 x 加入 S 中,并更新所有出边的 d[ ] 值,直到所有点都加入了 S 集合,答案即为 x=2nd[x]

prim V.S kruskal

prim 时间复杂度 O(n2),堆优化后为 O(mlogn)
kruskal 时间复杂度 O(mlogm)
kruskal 更适用于稀疏图(即边数较少的图)。
prim 更适用于稠密图,其堆优化后的版本不如kruskal好写。

代码

咕了,什么时候补上再说。

posted @   lemon-cyy  阅读(38)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· 【自荐】一款简洁、开源的在线白板工具 Drawnix

阅读目录(Content)

此页目录为空

点击右上角即可分享
微信分享提示