algorithm - 在给定节点和坐标列表的情况下查找最近的节点

标签 algorithm graph-algorithm

假设我有一系列位置及其 X、Y 坐标:

L1(X1, Y1) L2(X2, Y2) L3(X3, Y3) ... L10000(X10000, Y10000)

我有一个函数返回两个位置之间的距离:distance(L1, L2) = 5 英里

对于给定位置,我如何找到 100 英里内的所有位置?或者,如果更简单的话,50 个最近的位置

我们的设置是一个包含位置及其邮政编码的 SQL Server 表。该函数采用 2 个邮政编码,查找每个邮政编码的纬度/经度并返回距离。我们可以缓存结果,因为它们不会经常更改。

最佳答案

如果您可以将所有位置存储在内存中(lat/lon/id),请使用 Kd 树。请参阅我对 another question 的回答 Kd-trees 允许高效的最近邻搜索和 k-最近邻搜索。平均时间复杂度为 O(log n)。 如果您不能将所有位置存储在内存中,请检查您的数据库是否支持空间索引。

关于algorithm - 在给定节点和坐标列表的情况下查找最近的节点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13210966/

相关文章:

algorithm - 检测图中的相互边

graph - 通过非递归 DFS 的连接点

algorithm - 最小生成树Prims算法中的π[v] ←u步是什么意思?

algorithm - 查找关节点组

objective-c - objective-c中的二进制转换算法

将二分图简化为树/森林的算法设计(有约束)

检查数字是否为完美数字的算法

algorithm - 上界不必要地相交

algorithm - 间隔顺序统计

algorithm - 遍历包含链接循环的目录树的有效方法