找到具有给定集合中最大点密度的最小圆

时间:2017-08-10 14:14:08

标签: algorithm computational-geometry

给定地球表面上一组 n 位置的(lat,lon)坐标,找到(lat,lon)点 c ,和值 r > 0这样 我们最大化每平方位置的密度 d 例如,在由 c r 定义的圆圈描述和包含的表面区域中的英里。

起初我想也许你可以用线性编程来解决这个问题。但是,密度取决于面积取决于r的平方。二次项。所以,我认为问题不适合线性编程。

有没有一种已知的解决此类问题的方法?假设您将问题简化为笛卡尔平面上的(x,y)坐标。这会让事情变得更容易吗?

你有两个变量 c r ,你试图找到它们以最大化密度,这是 c <的函数/ em>和 r (以及位置,这是一个常量)。那么爬山,梯度下降或模拟退火方法可能有用吗?你可以对你的第一个值做出很好的猜测。只需使用位置的质心。我认为从那里到达的局部最大值将是全局最大值。

1 个答案:

答案 0 :(得分:1)

步骤:

  • 使用基于密度的聚类算法 1 聚类您的点;
  • 计算每个群集的密度;
  • 递归(或迭代)子聚类最密集的聚类中的点;
    • 算法必须忽略异常值并使它们成为自己的集群。这样,所有高密度的异常值都将被保留,低密度的异常值将被淘汰。
  • 跟踪迄今为止观察到的密度最高的群集。当你最终到达由单点构成的集群时返回。

此算法仅在您拥有如下所示的群集时才有效,因为递归探索将产生类似形状的群集:

enter image description here

算法会因为像这样形状笨拙的簇而失败,因为你可以看到,即使在你计算甜甜圈形状的密度时三角形的位置最密集,它们也会报告密度远低于圆形的圆[ 0,0]:

enter image description here

1。一个适合您的基于密度的聚类算法是DBSCAN