假设我有一组由查询产生的地理位置(纬度、lng)。这些位置有某种内部排名,我的集合按这个数字降序排列。
现在我试图通过消除彼此一定距离内的所有位置来插入这些数据。例如,从排名最高的点开始,A 点的相邻点不得小于 300 米,因此 B 点的距离必须至少为 300 米。
首先想到的是创建某种国际象棋桌,其中包含所有距离和奇怪的低距离。这可能适用于 5、10 甚至 100 点,但显然不能很好地扩展。我预计平均会定期处理 10000 个点。所以我必须为每个存在的点查询和后处理 9999 次(我知道这可以进行最低限度的优化,但你明白了)。
第二个想法是像一棵树一样处理数据,从排名最高的点开始,一路向下。就像创建增量搜索“地图”一样,每个“允许”点添加一个半径为 300m 的圆作为“不允许”区域,用作下一层的模板。我以前使用过半正弦公式并了解如何实现这一点,但我不确定性能方面,并且害怕从我的集合中消除太多点。
所以我的问题是,如何以最小化成本为目标来解决这个问题?是否有针对我还不知道的这个问题的算法?帮助表示赞赏。