最小生成树-Prim算法

最小生成树的目的是使一个图的节点到其他各个节点的距离最短。产生的树成为最小生成树。

最小生成树算法分为普利姆(Prim)算法与克鲁斯卡尔(Kruskal)算法来解决。


Prim算法思想核心:

在一个图中,有n个顶点,首先设置被访问的顶点集合V,然后设置总集合U,U包含所有顶点,然后设置W=U-V,每当访问一个顶点时,就把这个点从W里面删除,然后增加到V里面。


绿色的是节点,蓝色的是边权值


首先:

选定节点1作为起始点,起始点可以任意选择。

此时U={1,2,3,4,5,6,},V={1},W={2,3,4,5,6};


下一步:

然后查找距离上一个节点距离最近的点是什么?

在本题中就是距离节点1最近的点。

边      权值

1->2 : 5

1->3 : 6

1->4 : 1

1->5 : 无穷

1->6 : 无穷

可以看出,最短的距离是1,此时将节点4放入集合V中,

V={1,4};W={2,3,5,6};


再从4这个点来看与其他各边的距离:

4->2 : 7

4->3 : 5

4->5 : 5

4->6 : 4

最短距离是4到6,然后把6放入被访问的节点里面,

V={1,4,6},W={2,3,5};


然后再看6这个节点:

6->2:2

6->3:无穷

6->5:6

把节点2放入V集中,V={1,4,6,2},W={3,5};


此时只剩下节点3与5,距离3与5在V中最近的是节点4,到两点距离都是5,选其中一个,3

V={1,4,6,2,3},W={5};

3到5的距离最短,于是把5放入V中,V={1,4,6,2,3,5},W={};

Prim算法结束。






评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

JensLee

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值