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分析

解题思路

DBSCAN 基于“密度”成簇:对每个点找 eps 邻域(欧氏距离 < eps 的点集合),若邻域样本数 >min_samples,该点为核心点;从未访问的核心点出发,用 BFS/DFS 扩展,将其邻域内的点并入当前簇;若被并入的点本身也是核心点,则继续把它的邻域加入队列,直到不再扩展。最终没有被任何簇吸纳的点即为噪声点。

实现细节:

  1. 计算并缓存所有点的邻居列表(两两距离判断,含自身);维度不写死,自动支持二维或三维输入。
  2. core[i] = (len(neighbors[i]) > min_samples) 判定核心点。
  3. 逐点扫描:若是未访问的核心点,创建新簇并用队列扩展;扩展时把邻居标成当前簇,遇到核心点则把它的邻居继续入队。

P3874.第2题-数据聚类及噪声点识别

    2000ms Tried: 2286 Accepted: 431 Difficulty: 6 所属公司 : 华为
    算法与标签>BFS

题目内容

DBSCANDBSCANDBSCAN(Density−BasedDensity-BasedDensity−Based SpatialSpatialSpatial ClusteringClusteringClustering ofofof ApplicationsApplicationsApplications withwithwith NoiseNoiseNoise)是一种基于密度的聚类算法。它能够识别出噪声点,发现任意形状的簇,其核心概念包括:

  1. eps-邻域:样本点 PPP 与 点 QQQ 的距离小于 epsepseps 的所有样本点的集合,即点 PPP 周围以 epsepseps 为半径内所有样本点的集合。

  2. 核心点:若点 PPP 的 epsepseps 邻域内的样本点数量大于 min_samplesmin\_samplesmin_samples 的阈值,则称点 PPP 为核心点。

  3. 直接密度可达:若点 PPP 是核心点,且点 QQQ 处于点 PPP 的 epsepseps 邻域内,则称点 QQQ 由点 PPP 直接密度可达。

  4. 密度可达:若有一串点 P1,P2,...,PnP_1, P_2, ..., P_nP1​,P2​,...,Pn​,对于任意 iii,Pi+1P_{i+1}Pi+1​ 可由 PiP_iPi​ 直接密度可达,则称点 PnP_nPn​ 可由点 P1P_1P1​ 密度可达。

  5. 密度相连:若存在点 OOO ,使得点 PPP 和点 QQQ 都可由 OOO 密度可达,则称点 PPP 和点 QQQ 是密度相连的。

  6. 簇:对于任意的点 PPP 和点 QQQ ,若点 PPP 属于某个簇,且点 QQQ 由点 PPP 密度可达,则点 QQQ 也属于这个簇。同理,由点 QQQ 密度可达的点也属于这个簇。即同一簇内的点,是密度相连的。

  7. 噪声点:不属于样本集内任何簇的样本点。

请你根据以上要求实现 DBSCANDBSCANDBSCAN 算法,要求根据给定的数据集、epsepseps 和 min_samplesmin\_samplesmin_samples 值,输出簇的个数和噪声点的个数。

输入描述

第一行输入 333 个数 epsepseps, min_samplesmin\_samplesmin_samples, xxx,以空格隔开,分别表示:

  • epsepseps:计算 epsepseps-邻域的半径值,可为小数
  • min_samplesmin\_samplesmin_samples:核心点的 epsepseps-邻域内样本点数量阈值,整数
  • xxx:数据集行数,即样本数量,整数

第二行开始为输入的样本数据,数值之间用空格隔开,共输入 xxx 行,每行输入数值数量为 yyy,2≤y≤32 \leq y \leq 32≤y≤3

输出描述

输出两个值,用空格隔开,第一个值表示得到的簇的个数,第二个值表示识别到的噪声点的个数

样例1

输入

2 2 10
0 0
3 3
6 6
9 9
12 12
2 6
6 2
9 5
5 9
10 2

输出

0 10

说明

epsepseps 设为 222,min_samplesmin\_samplesmin_samples 为 222,但给出的数据集中任意两个点之间的距离都大于222,因此即使 min_samplemin\_samplemin_sample 设置为 222,也没有形成任何簇,即所有的点都是噪声,如下图:

样例2

输入

1 5 20
5.05 1.36
-8.19 -6.47
4.5 2.5
5.01 2.06
4.30 2.28
4.22 1.82
4.58 1.82
4.81 2.46
4.81 1.09
4.80 1.78
5.16 2.44
-6.92 -6.38
-6.84 -7.03
-6.70 -7.20
-6.83 -7.87
-6.47 -6.20
-6.70 -6.11
-6.90 -6.10
-6.99 -6.70
5 5

输出

2 2  

说明

样例数据集中共 202020 个点,给定 epsepseps 为 111 , min_samplesmin\_samplesmin_samples 为 555 ,聚类后得到两个簇: 一个在坐标系第一象限,一个在第三象限,且存在两个噪声点 (5,5)(5, 5) (5,5) 和 (−8.19,−6.47)(-8.19, -6.47) (−8.19,−6.47)不属于任何簇,如下图:

开通会员即可查看完整视频题解: 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 0, 74ms
  3. Powered by Hydro v5.0.0-beta.18 Community
CLOSE


ScanQRCodePrompt

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

Forgot password or username?