ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

022(北极通讯网络)(最小生成树)

2022-06-19 11:00:45  阅读:142  来源: 互联网

标签:通讯 个点 北极 一个 最小 生成 022 条边 顶点


题目:http://ybt.ssoier.cn:8088/problem_show.php?pid=1487

题目思路:很明显的最小生成树

最小生成树,一般在实际生活中用于解决修建铁路或是服务器链接的问题

具体就是给你 n 个点,让你把这 n 个点拼起来,使其两两相通

但是吧,每连起来两个点都会花钱,最小生成树就是为了找到钱最少的一种连法

在这种最小生成树上,衍生出了一种叫 “MST” 的东西,一个算法,以及一个定理

MST性质:假设N = (V,{ E })是一个连通网,U 是顶点集V的一个非空子集。若(u , v )是一条具有最小权值(代价)的边,其中u∈U, v∈V - U,则必存在一棵包含边(u,v)的最小生成树。

看不懂没关系,它通俗来讲,就是把所有顶点分成两块,这两块里面各取一个顶点,如果这俩货连起来要花的代价相对于其他的,让这两块顶点区域相通的边最小,那么我们最终的成品,肯定有这条边在里面

那么,依照这个性质,我们又想到了“并查集”这个算法

最开始,每一个顶点我们就看成一个块,叫做“单元素集合”,什么 U,U1,U2......U8......U10086全都整上

然后,按照“最小”的字眼挑两个幸运的 U ,让他们作为一个大块里的 U 和 V 

前面说好的“必存在一棵包含边(u,v)的最小生成树”,那么接下来,U,V凑起来之后,他们就成了新的块,暂且命名 U10087

然后,继续按照“最小”的字眼,一个一个的小块融合成大块,最终由多变一,树来!

而那个定理呢?试想一下有 3 个点构成了一个环,咱能不能删去一条边?可以

如果是 n 个点被拼成了一个类似于圆的玩意呢?我们也能删去一条边。

所以说,把 n 个点拼在一起,最多只需要 n-1 条边

即使不按照”环“的方式去连,等到过了 n-1,就连最优解都不是了。

所以,"把 n 个点拼在一起,最多只需要 n-1 条边",

这对于一整个大顶点集中的一小部分也同样适用

换句话说,在最小生成树里不可能出现闭环

现在,看到“最小”那个字眼了吗,尘封多年的“贪心”又可以用了

在"MST"和“贪心”的共同作用下,衍生出了一种算法:kruskal

首先是一大堆的顶点,这是我们做题的先提条件

然后,或是利用坐标求或是人家给,把顶点与顶点之间连接的代价搞出来

用结构体存下来对应的点和边,按照边的大小排排坐,小的在前面

然后就可以开干了

首先,我们需要找一个数组 f,f[i]=j,代表顶点 i 和 j 被放在了一个块里

而我们又能干出 f[j]=k 的玩意,这样就把两个

最开始的时候,f[i] 都是 i,代表

 

标签:通讯,个点,北极,一个,最小,生成,022,条边,顶点
来源: https://www.cnblogs.com/a-001/p/16390106.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有