学习总结(1.31)

一、最小生成树

    • 定义

给定n个点,m条边,如果将这些点依次相连,求出连接这些点的最小数值

如图

黑色的边表示需要连接的边

如果你用第一种方案连接,可以发现他的数值和是最大的,这样就不行了,而这个算法,就是找到最小的数值和。

    • 应用

根据这个算法特性,我们不能猜出此算法主要运用于要在n个城市之间铺设光缆,主要目标是要使这 n 个城市的任意两个之间都可以通信,但铺设光缆的费用很高,且各个城市之间铺设光缆的费用不同,因此另一个目标是要使铺设光缆的总费用最低。这就需要找到带权的最小生成树

    • 普利姆算法(prim)

用a数组来记录权值

如图,从1开始,有三个点连接,那么a[1]始终为0

a[2]=b[1][2]=2

a[3]=b[1][3]=4

a[4]=b[1][4]=7

选择最小的权值b[1][2]=2

然后2有2个点连接,那么

a[3]=b[2][3]=1

a[5]=b[2][5]=2

选择最小权值b[2][3]=1

3有2个点连接

a[4]=[3][4]=1

因为a[5]=2<a[3][5]=6,因此无需变化,那么所有的点都已经连接完毕

其最终数值和为2+2+1+1=6

    • 克鲁斯卡尔算法(kruskal )

此算法的思想与并查集有点像,就是将点分成独立的个体,然后选择一个点,选择能连接的最小数值边的点,连接之后,就将这俩个点变成一个团体,再选择没有连接的点,继续进行选择

如图

开始时,由5个独立的个体{1} {2} {3} {4} {5}

由1开始,其能连接得到最小数值边为1->2,,因此将1,2合并成一个团体{1,2}

然后选择4,其能连接得到最小数值边为3,因此将4,3合并成一个团体{4,3}

然后选择5,其能连接得到最小数值边为2,因为2属于团体{1,2},所以5就与团体{1,2}合并为团体{1,2,5}

最后选择3,其能连接得到最小数值边为1,因为2属于团体{1,2,5},3属于{3,4}团体,所以{3,4}就与团体{1,2,5}合并为团体{1,2,3,4,5},完毕

因为再每次的选择中,都是选择的最小的边,因此最终形成的树一定是一个最小生成树,直到选取了n-1条边为止。

参考链接:

  1. (5条消息) 最小生成树详解(模板 + 例题)_潘小蓝的博客-CSDN博客_最小生成树

  1. 《大话数据结构》

明日计划

    • 学习最短路径

    • 刷题

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值