如果我使用 minPts 为 1 的 DBSCAN 算法,它仍然会在 O(nlogn) 时间内 运行 吗?
If I use a DBSCAN algorithm with a minPts of 1 will it still run in O(nlogn) time?
我正在做一个简化的家庭作业问题,即根据 x、y 坐标和最小距离将星星分组到星座中。任何一颗星星都可以单独成为一个星座。因此,例如 5 颗星不能相互连接,那么它将 return 有 5 个星座。
我最初做了一个算法,用 运行时间 O(n^2) 检查每个点。我想让它更快,并在 O(nlogn) 时间内看到 DBSCAN 运行s。
我的问题是,如果我要使用 DBSCAN,算法会说它会在 O(nlogn) 时间内 运行,但是如果我的 minPts 是 1(我的集群的大小),那么效率会降低吗DBSCAN 和 O(n^2) 中的 运行??
就我而言 运行 在这种情况下,DBSCAN 的时间取决于对给定距离内的每个点执行的邻居计算。正如您提到的,如果您执行线性扫描,您总共会得到 O(n^2)。然而,为了加快搜索速度,您可以使用基于索引的结构,该结构在 O(logn) 时间内进行搜索。
请结帐 spatial databases.
运行时取决于 epsilon 是否足够小以便结果大小很小,以及能够加速这些查询的索引。对 minpts 没有要求,因此它适用于 "degenerate" 单Link 聚类的情况。
但在您的情况下,您可能只想直接使用空间索引进行邻居搜索,而不是通过 DBSCAN 的代理?
我正在做一个简化的家庭作业问题,即根据 x、y 坐标和最小距离将星星分组到星座中。任何一颗星星都可以单独成为一个星座。因此,例如 5 颗星不能相互连接,那么它将 return 有 5 个星座。
我最初做了一个算法,用 运行时间 O(n^2) 检查每个点。我想让它更快,并在 O(nlogn) 时间内看到 DBSCAN 运行s。
我的问题是,如果我要使用 DBSCAN,算法会说它会在 O(nlogn) 时间内 运行,但是如果我的 minPts 是 1(我的集群的大小),那么效率会降低吗DBSCAN 和 O(n^2) 中的 运行??
就我而言 运行 在这种情况下,DBSCAN 的时间取决于对给定距离内的每个点执行的邻居计算。正如您提到的,如果您执行线性扫描,您总共会得到 O(n^2)。然而,为了加快搜索速度,您可以使用基于索引的结构,该结构在 O(logn) 时间内进行搜索。 请结帐 spatial databases.
运行时取决于 epsilon 是否足够小以便结果大小很小,以及能够加速这些查询的索引。对 minpts 没有要求,因此它适用于 "degenerate" 单Link 聚类的情况。
但在您的情况下,您可能只想直接使用空间索引进行邻居搜索,而不是通过 DBSCAN 的代理?