DBSCAN(Density-based Spatial Clustering of Applications with Noise)是一种基于密度的聚类算法,能发现任意形状的聚类,并标记噪声点。现要求你实现标准 DBSCAN 算法,具体规则如下:
-
ε 邻域:对于样本点p,其 ε 邻域定义为所有与p的欧几里得距离≤ε的样本点集合(包含p自身)。
-
核心点:若样本点p的 ε 邻域内的样本点数≥MinPts,则p为核心点;否则为非核心点。
-
直接密度可达:若样本点q在核心点p的 ε 邻域内,则称q从p直接密度可达。
-
密度可达:若存在样本点序列p1,p2,...,pn,其中p1=p,pn=q,且pi+1从pi直接密度可达,则称q从p密度可达。
-
密度连通:若存在样本点o,使得p和q都从o密度可达,则称p和q密度连通。
-
聚类定义:一个聚类是最大的密度连通样本点集合;不属于任何聚类的样本点为噪声点(标记为 - 1)。
-
聚类编号规则:按核心点被首次发现的顺序分配聚类编号(从 0 开始),非核心点若与核心点密度连通则归入对应聚类。
请你实现该算法,并输出每个样本点的聚类编号(按输入顺序输出)。