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

标签 algorithm computational-geometry

给定地球表面一组 n 个位置的 (lat, lon) 坐标,找到一个 (lat, lon) 点 c,以及r> 0 的值使得 我们最大化每平方位置的密度 d 英里,比方说,在由 cr 定义的圆所描述和包含的表面积中。

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

是否有解决此类问题的已知方法?假设您将问题简化为笛卡尔平面上的 (x, y) 坐标。这样会更容易吗?

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

最佳答案

步骤:

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

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

enter image description here


对于像这样形状笨拙的簇,该算法将失败,因为正如您所看到的,即使在计算 donut 形状的密度时三角形放置得最密集,它们也会报告以 [ 为中心的圆的密度要低得多0, 0]:

enter image description here


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

关于algorithm - 从给定的集合中找到具有最大点密度的最小圆,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45616217/

相关文章:

java - java计算回弹角度

javascript - 算法:生成小马移动到所有棋盘格的路径

algorithm - 使用后缀树/数组的最长非重叠重复子串(仅算法)

java - 我如何计算文本中的单词和表达?

algorithm - 评分系统建议-加权机制?

math - 查找垂直点与直线相交处的 x 和 y 坐标

algorithm - 通过多个元素进行二分查找

c++ - 搜索具有最小矩形长度和的一组点。算法是什么?

algorithm - 近似最近对算法

math - 检测钻石点击