【发布时间】:2014-10-14 04:00:02
【问题描述】:
我有一组点,每个点都有一个 x 和 y 坐标。我想找到最接近的这些点中的 4 个(如果绘制所有点将在不同的位置,但其中 4 个点总是彼此更接近,我希望能够确定哪一个这四个点是程序化的)。我该怎么做呢?我被告知它与 k-means 或最近邻有关,但从我目前的搜索结果来看,我不知道如何让它适用于我的情况,因为我正在寻找点的接近度相对于彼此而不是相对于某个固定点。任何有关要研究的主题/算法或代码 sn-ps 的建议将不胜感激。
我认为确切问题的图像可能会有所帮助。所以这 8 个点包含在一个向量中,我希望能够确定哪四个是聚集在右侧的点。
提前致谢。
【问题讨论】:
-
你如何定义“彼此最接近”?四组中每对点之间的距离总和?
-
4,7 真的固定了吗?在这种情况下,可能只有 35 组点,检查那些蛮力是绝对可行的。只有更高的
n才会变成噩梦。 -
@Cameron - 如果您在窗口中可视化点,您会注意到包含四个点的区域的点密度更大,而集合中的其余点总是远离这个密集点地区。
-
@AlexanderGessler - 7 不是固定的,但在可视化时,其中四个总是靠得更近
-
您可能想要研究计算拓扑和数据可视化。我隐约记得与此相关的一件事是在图中找到 Betti 数的问题,如果两点之间的距离小于一定距离,则它们是相邻的。
标签: c++ k-means nearest-neighbor