【数据结构】图—克鲁斯卡尔算法(原理及C程序详解)



普利姆(Prim)算法是以某个顶点为起点,逐步寻找各个顶点上权值最小的边来构建生成树。
文章指引:图—普里姆(Prim)算法(原理和C程序解释)
而克鲁斯卡尔(Kruskal)算法是以边为目标,直接寻找权值最小的边来构建生成树,并在构建中不形成回路。

一、定义

假设N = (V, {E})是一个连通网,则令最小生成树的初始状态为只有n个顶点而无边的非连通图T = {V, {}},图中每个顶点自成一个连通分量。
在E中选择代价最小的边,若该边依附的顶点落在T中不同的连通分量上,则将此边加入到T中,否则舍去此边而选择下一条代价最小的边。依次类推,直至T中所有顶点都在同一连通分量上为止。


二、实现思路

下图是一个连通网,我们以此来介绍普利姆算法的实现过程。


(1)首先设立最小生成树的初始状态T = {V, {}},只有顶点,没有边,寻找权值最小的边,显然是 ( v 1 , v 5 ) (v_1,v_5) (v1,v5)最小。

:红色边为最小生成树的边,黑色线为连通网的边。

(2)然后 ( v 1 , v 7 ) (v_1,v_7) (v1,v7)边权值最小

(3)此时有两条边的权值均为8,这里先取 ( v 0 , v 1 ) (v_0,v_1) (v0,v1)

(4)添加 ( v 4 , v 5 ) (v_4,v_5) (v4,v5)

(5)添加 ( v 3 , v 7 ) (v_3,v_7) (v3,v7)

(6)因为 ( v 2 , v 3 ) (v_2,v_3) (v

  • 7
    点赞
  • 56
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值