如何找到包含用户选择的所有POI(在指定半径范围内)的POI群集?

时间:2016-09-29 13:34:22

标签: algorithm geometry graph-algorithm

我为这个令人费解的头衔道歉。毋庸置疑,我的搜索关键词已经用完了,但还没有找到任何我可以研究的主题。

我正在建立一个用户选择多个POI标准的系统(显示“餐馆”,“加油站”等的复选框)。然后,我想返回地图上的位置,该位置在用户选择的每个POI的x距离内。

假设我有地图上每个POI的信息,那么算法会找到包含所有指定点的点群集?

描述这个的抽象方式是: 假设我有几组网格点。 什么算法可以在网格上找到一个半径为r(固定)的圆,其中包含每组中至少一个点?

我很感激我可以遵循的任何帮助或指示。

1 个答案:

答案 0 :(得分:0)

这个问题可以通过使用梯度体面方法来解决。设n是用户选择的POI(点数)。想法是保持下降到最接近所有n点的点。

ita = 0.01; //learning rate.
i=0 ;    // weight decay rate
First start with the mean point p(x,y) of all the points.
while (p is not within from each point || no improvement in p during last iteration).
    let q(x,y) be the farthest point from p.
    update: p(x,y)+= ita*(q(x,y)-p(x,y))/(i*n*x)
return p if exist else NULL if timeout happens.

这就是你想要的。此算法可以解决您的问题。如果你认为最接近所有n个点的点将是更好的竞争者,你也可以修改它。

也可以看到http://json-schema.org/example1.html#definitions