algorithm - 查找其他用户附近的用户

标签 algorithm

我应该探索什么算法来实现让用户找到位于他附近的其他用户的功​​能,所有用户的纬度和经度都是预先知道的并且是固定的[不是动态的]。 此外,我相信应该有更好的方法来存储此类数据,然后简单地将用户的经纬度与他的用户 ID 存储在数据库中。处理此问题的有效方法是什么?

最佳答案

如果您只是寻找接近的点,您所需要的只是一个简单的圆形边界半径,您可以对其进行调整或以对数方式向中心倾斜。当然,您会希望避免对每个查询的整个数据集执行此操作。通常,除了纬度/经度之外,您还会将 map 分解为您知道可以立即忽略的象限。 -- 只要确保您感兴趣的区域是边缘的,也可以查询相邻的象限。那就是有一个链接表,用于仅获取该象限中的行。

按象限缩小后。使用最基本的几何图形:

1) 使用简单的边界框消除大部分数据。

伪代码:

 DistanceLat = abs( P2lat - P1lat);
 DistanceLon = abs( P2lon - P1lat)

2) 做勾股定理看点是否落在半径范围内。缩减后的数据集内(a2+b2 =c2)

Distance = Sqrt( DistanceLat * DistanceLat + DisanceLon * DistanceLon)
if ( Distance < radius) keep the data

关于algorithm - 查找其他用户附近的用户,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9827073/

相关文章:

algorithm - 在给定段落中搜索单词

java - 获得两组点之间最近对的最佳组合

algorithm - 两条边相连的最小生成树

algorithm - 在 N 维矩阵中找到大于 x 的值,其中 x 是索引之和

algorithm - 具有 O(n * log(n)) 时间复杂度和 O(1) 空间复杂度的稳定比较排序

c++ - 遍历树

algorithm - 重复有序序列搜索算法

c++ - 我的 mandelbrot 集输出有线图像

c++ - 在不修改集合的情况下按排序顺序遍历集合的算法?

javascript - 如何基于 Javascript 中的两个键构造查找