0
点赞
收藏
分享

微信扫一扫

2022Mathorcup D题完整思路和论文

已经初步写出论文,论文地址见文末。
符号说明
F :圆覆盖后图形区域
r_i :圆i 的半径;
dij :圆i 与圆j 的圆心距;
Sij :圆i 与圆j 的重叠面积;
T :目标区域内所有节点集合
C :公共节点集合
O :圆心节点集合
M :覆盖区域圆个数

编辑
添加图片注释,不超过 140 字(可选)

自适应K-中心聚类方法基本思想:使用圆心数据作为K-中心聚类的初始中心,开始聚类,然后用最小的圆覆盖同类中的节点,判断是否满足约束条件,不满足则调整圆,再将此时的圆心作为下一次聚类的中心,重新聚类,重复上面过程,最终得到满足题目条件的一跳覆盖区划分的结果。
自适应K-中心聚类方法流程如下:
①设置迭代次数Num,使用正六边形一跳覆盖区方案的圆心位置作为聚类的初始中心。采用这种初始位置选择的方法,使得我们的初始中心在目标区域内的分布较平均,使得聚类后的同类范围相差不大;
②K-中心聚类方法聚成K 类;
③用最小的圆来完全覆盖K 类中的节点,此时的覆盖圆集满足约束条件2);
④考虑约束条件1),当上面的覆盖圆集中某圆的半径时,我们选择圆内节点与其它圆心的距离最远的点,将圆心朝着该点移动,直到可以用半径为r 的圆覆盖它为止。此时该半径为r 的圆肯定不覆盖原来同类中的所有节点,漏覆盖的点将其加入最接近的一类中。由于我们初始中心的为半径为100 的正六边形一跳覆盖区方案,所以一定可以用半径小于100 的圆覆盖住露出的节点。从而得到新的覆盖圆集;
⑤考虑约束条件3)中满足转发任务的条件,这里我们理解转发任务即为在两圆的公共部分是否存在公共节点,存在则满足转发任务,反之则不满足。检查上面得到的覆盖圆集中圆的公共部分中是否存在公共节点,如果不存在,则找到离此圆距离最近的外部节点,扩大圆的半径并移动圆心,直到覆盖距离最近外部节点。圆心移动和扩大半径示意图见图5。满足此条件的覆盖圆集中的节点为连通的,也就解决了约束条件4)的问题;
建立一个记录库,任意选取一个公共节点记入记录库,搜索其它公共节点,如果与记录库中节点连通,则加入记录库中,继续搜索直到没有公共节点与记录库中节点连通。如果记录库包含所有存在的公共节点,说明网络节点连通,否则不连通。
效果展示:

在这里插入图片描述
在这里插入图片描述

论文地址:https://mianbaoduo.com/o/bread/YpmXmpdp

举报

相关推荐

0 条评论