1. Job Roadmap
  2. Home
  3. Problem Set
  4. codenotelist
  5. Forum
  6. course
  7. Shore Share Sessions
  8. Record
  1. Login
  2. Sign Up
  3. Language
    1. English
    2. 한국어
    3. 简体中文
    4. 正體中文
    ZhContent TextSol video solution AI分析

解题思路

相关算法与实现要点

  • K-Means

    • 初始中心:取前 kkk 个点作为初始中心(简单且可重复)。

    • 迭代过程:

P3791.第2题-无线网络优化中的基站聚类分析

    1000ms Tried: 3101 Accepted: 597 Difficulty: 7 所属公司 : 华为
    算法与标签>机器学习算法

题目内容

【问题背景】在无线网络优化中,基站的位置分布直接影响信号覆盖质量。密集区域的基站可能造成资源浪费,而稀疏区域则会出现信号覆盖不足。

【任务要求】给定nnn个基站的二维坐标,使用K-Means算法将其划分为kkk个簇,再通过计算每个簇的轮廓系数(Silhouette Coefficient),识别信号覆盖最差的簇(轮廓系数最低),并在该簇中心新增基站以优化信号覆盖。

【算法过程】

  1. 使用前kkk个基站作为初始聚类中心,执行K-Means算法。K-means的结束条件为:最大迭代次数100或者所有簇中心点移动距离都不大于1e−61e-61e−6。
  2. 计算每个簇的轮廓系数(簇内所有点的轮廓系数平均值)。
  3. 找出轮廓系数最低的簇。
  4. 输出该簇的中心坐标(保留两位小数),作为新增基站的位置。

K-Means和轮廓系数的详细介绍见“提示”。

输入描述

第一行:基站数量 nnn 和聚类簇数 kkk,之间以空格分开,其中 nnn 取值范围为 [1,500][1,500][1,500],kkk 取值范围为 [1,120][1,120][1,120]。

接下来 nnn 行:每行两个整数,表示基站的坐标 xxx 和 yyy,其中 xxx 取值范围为 [0,5000][0,5000][0,5000],yyy 取值范围为 [0,3000][0,3000][0,3000]。

输出描述

新增基站的坐标:x,yx,yx,y (输出结果四舍五入保留两位小数,采用 RoundingMode.HALF_EVEN)

样例1

输入

6 2
0 0
1 1
2 2
10 10
11 11
5 5

输出

8.67,8.67

说明

簇划分结果:簇 0:[(0,0),(1,1),(2,2)]0:[(0,0),(1,1),(2,2)]0:[(0,0),(1,1),(2,2)],中心 (1,1);(1,1);(1,1); 簇 1:[(5,5),(10,10)(11,11)]1:[(5,5),(10,10)(11,11)]1:[(5,5),(10,10)(11,11)],中心 (8.67,8.67)(8.67,8.67)(8.67,8.67) 轮廓系数:簇 000 的轮廓系数: 0.820.820.82 ;簇 111 轮廓系数: 0.350.350.35 答案:输簇 111 的中心点: (8.67,8.67)(8.67,8.67)(8.67,8.67)

样例2

输入

4 2
0 0
0 1
1 0
10 10

输出

0.33,0.33

说明

簇划分结果:簇 000 : [(0,0),(0,1)(1,0)][(0,0),(0,1)(1,0)][(0,0),(0,1)(1,0)] ,中心点: (0.33,0.33)(0.33,0.33)(0.33,0.33) ; 簇 [(10.10)][(10.10)][(10.10)] ,中心点: (10,10)(10,10)(10,10)

轮廓系数:线 000 的轮廓系数: 0.920.920.92 ;簇 111 的轮廓系数: 1.01.01.0 答案:输出簇 000 的中心点: 0.33,0.330.33,0.330.33,0.33

簇 0:[A(0,0),B(0,1),C(1,0)]0:[A(0,0),B(0,1),C(1, 0)]0:[A(0,0),B(0,1),C(1,0)] ;

簇 111 : [(10.10)][(10. 10)][(10.10)]

簇 000 的轮廓系数计算:

计算点 A(0,0)A(0,0)A(0,0) :

1、AAA 同簇平均距离为 111 : AAA 到 B(0,1)B(0,1)B(0,1) 距离 111 ,AAA 到 C(1,0)C(1,0)C(1,0) 距离 111

2、AAA 到簇 111 平均距离为 14.14214.14214.142 : AAA 到 D(10,10)D(10,10)D(10,10) 距离 14.14214.14214.142

3、AAA 的轮廓系数 s(A):0.929s(A):0.929s(A):0.929

计算点 B(0,1)B(0,1)B(0,1) :

1、BBB 同簇平均距离为 1.207:B1.207:B1.207:B 到 A(0,0)A (0,0)A(0,0) 距离 111 ,BBB 到 C(1,0)C(1,0)C(1,0) 距离 1.4141.4141.414

2、BBB 到簇 111 平均距离为 13.454:B13.454:B13.454:B 到 D(10,10)D(10,10)D(10,10) 距离 13.45413.45413.454

3、BBB 的轮廓系数 s(B):0.910s(B):0.910s(B):0.910

计算点 C(1,0):C(1,0):C(1,0): 1、CCC 同簇平均距离为 1.207:C1.207:C1.207:C 到 A(0,0)A(0,0)A(0,0) 距离 1,C1,C1,C 到 B(0,1)B(0,1)B(0,1) 距离 1.4141.4141.414

2、CCC 到簇 111 平均距离为 13.454:C13.454:C13.454:C 到 D(10,10)D(10,10)D(10,10) 距离 13.45413.45413.454

3、CCC 的轮廓数 s(C):0.910s(C):0.910s(C):0.910

簇 000 轮廓系数: (s(A)+s(b)+s(b))/3=2.749/3=0.92(s(A)+s(b)+s(b))/3=2.749/3=0.92(s(A)+s(b)+s(b))/3=2.749/3=0.92

提示

K-means的算法步骤为:

  1. 选择初始化的前 kkk 个样本作为初始聚类中心。

  2. 针对数据集中每个样本 xix_ixi​,计算它到 kkk 个聚类中心的距离并将其分到距离最小的聚类中心所对应的类中。

  3. 针对每个类别 aja_jaj​,重新计算它的聚类中心

    aj=1ci∑x∈cixa_j = \frac{1}{c_i} \sum_{x \in c_i} x aj​=ci​1​x∈ci​∑​x

    (即属于该类的所有样本的质心)。

  4. 重复上面2、3两步操作,直到达到某个中止条件(迭代次数、最小误差变化等)。

轮廓系数 (Silhouette Coefficient Index):

1、对于一个数据点 iii,先计算它和簇内其他数据点的平均距离 aia_iai​。

2、然后计算该点与不包含该点所在簇的其他簇内数据点的平均距离 bib_ibi​(簇间相似度),选取其中距离最小的那个作为 iii 的簇间平均距离。

3、最后,计算数据点 iii 的轮廓系数:

si=bi−aimax⁡(ai,bi) s_i = \frac{b_i - a_i}{\max(a_i, b_i)} si​=max(ai​,bi​)bi​−ai​​

将所有数据点的轮廓系数取平均值,即得到聚类算法的整体轮廓系数。

若某个数据点所在簇的数据点数量小于等于1,则该点的轮廓系数为 111。

RoundingMode.HALF_EVEN:

1、Python默认的HALF_EVEN模式,其他语言按照如下规则处理: HALF_EVEN也称为“银行家舍入”或“向偶数舍入”。这种模式下,当小数部分恰好为0.50.50.5时,round()会将结果舍入到最近的偶数。

  • round(2.55, 1) 会返回 2.62.62.6 (因为6是偶数)
  • round(2.65, 1) 会返回 2.62.62.6 (因为6是偶数)
  • round(2.75, 1) 会返回 2.82.82.8 (因为8是偶数)
  • round(1.15, 1) 会返回 1.21.21.2 (因为2是偶数)

开通会员即可查看完整视频题解: 1.题目讲解 2.思路分析 3.逐行代码手写

登录后即可使用 AI 分析。

模式
倒计时时长
:

最长 10 小时 59 分;应用后按此时长重新开始。

提示:点击提交记录在左侧题面区域查看详情
题库
AI分析设置
留空使用官方API Key,每天有次数限制(自定义API Key仅限会员和管理员使用,不限次数)
会员和管理员可切换模型;切到 Kimi/智谱/通义/豆包时需填写对应供应商 API Key
升级会员,可将运行与提交冷却时间缩短至 1 秒起

Status

  • Judging Queue
  • Service Status

Development

  • Open Source

Support

  • Help
  • Contact Us

About

  • About
  • Privacy
  • Terms of Service
  • Copyright Complaint
  1. Language
    1. English
    2. 한국어
    3. 简体中文
    4. 正體中文
  2. Legacy mode
  3. Theme
    1. Light
    2. Dark
  1. 京ICP备2025123107号-1
  2. Worker 3, 97ms
  3. Powered by Hydro v5.0.0-beta.18 Community
CLOSE


ScanQRCodePrompt

请使用微信扫描下方二维码完成注册

Forgot password or username?