我们有一个 x,y 对的列表。每对代表二维空间上的一个点。我想从这个列表中找到离特定点 xq,yq 最近的点。这个问题的最佳性能关键算法是什么?Lisp of points 不会改变;这意味着我不需要执行插入和删除。我只想找到这个集合中目标 xq,yq 点的最近邻居。
编辑1:谢谢大家!正如 Stephan202 猜对的那样,我想反复这样做;像一个函数。列表不一定是排序的(实际上我不明白它是如何排序的?就像一个具有 2 列 a 和 y 的主键的表?如果这有帮助,那么我会对其进行排序)。
我会根据列表构造一次数据结构,然后我会在函数中使用这个生成的数据结构(如果这个过程本身是相关的)。
谢谢雅各布;KD-Tree 数据结构似乎是一个很好的答案候选者(我觉得确实如此。当我得到一些相关结果时,我会更新)。
编辑2:我发现,这个问题被命名为“最近的邻居”!
编辑 3:第一个标题是“In Search of an Algorithm (for Spatial-Querying and Spatial-Indexing) (Nearest Neighbor)”;我选择了一个新标题:“解决最近邻的最佳性能关键算法”。由于我不想对我的初始数据执行插入和删除操作,而我只想要离它们最近的一个到一个新点(不会被插入),我选择(当前)在 KD-Trees 上工作。谢谢大家!