我为这个令人费解的头衔道歉。毋庸置疑,我的搜索关键词已经用完了,但还没有找到任何我可以研究的主题。
我正在建立一个用户选择多个POI标准的系统(显示“餐馆”,“加油站”等的复选框)。然后,我想返回地图上的位置,该位置在用户选择的每个POI的x距离内。
假设我有地图上每个POI的信息,那么算法会找到包含所有指定点的点群集?
描述这个的抽象方式是: 假设我有几组网格点。 什么算法可以在网格上找到一个半径为r(固定)的圆,其中包含每组中至少一个点?
我很感激我可以遵循的任何帮助或指示。
答案 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个点的点将是更好的竞争者,你也可以修改它。