如何解决点聚类算法
我需要帮助来解决几何问题。 考虑一组点。 我们注意到点数 N。
我们注意到 d 是欧氏距离,dmax 是一个值。
两点 p1 和 p2 连通当且仅当距离 d(p1,p2) 问题是创建一个算法,返回一个连接组件大小的列表。 例如下图中的算法应该返回 [3,2,4,1] 我用红色绘制了连接,但最初我们只有点(此处为黑色)。如果需要,程序应计算所有连接。
figure below 我有两种算法,一种是迭代的,另一种是递归的。我使用了 DBScan。但这还不够快。你的复杂度是 O(N^2) 如果可能的话,我需要用 O(N) 或 O(N*log(N)) 使其更快。 我读过有关 DFS 的信息,但我不确定... 感谢帮助
解决方法
使用 SciPy(或其他库)查找输入点的 Delaunay triangulation(其中包含最小生成树,其中包含足够的边以使此答案的其余部分起作用)。删除长度≥ dmax 的三角剖分边。找出剩余边的连通分量。
这是 O(n log n),带有 Qhull 中的内部循环(编译后的扩展)。
(k-d 树或其他局部结构提供了另一种解决方案,但最坏的情况可能是 ω(n log n),如果在彼此的 dmax 内有许多点对。)
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。