【问题标题】:Find smallest circle with maximum density of points from a given set从给定集合中找到具有最大点密度的最小圆
【发布时间】:2018-01-18 20:25:15
【问题描述】:

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

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

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

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

【问题讨论】:

  • 这个问题在不同的 Stack Exchange 网站上更合适吗?
  • Paul,如果您在这里没有看到流量,也许数学、计算机科学或数据科学会是您的目标!祝你好运! =)
  • 认为这个问题是另一回事。梯度下降/质心作为起点将无法带您到达那里。只是我的猜测。
  • 在我能想到的任何例子中,答案是包含三个点的最小圆。我不知道是否总是如此,但这可能是搜索的一个很好的近似值/起点。
  • 非常小的圆 (r->0) 包围一个点 :-) 确保最佳密度。我想有一个要求,圆圈包含多个点。

标签: algorithm computational-geometry


【解决方案1】:

步骤:

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

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


算法会因为像这样形状笨拙的簇而失败,因为正如您所见,即使在计算甜甜圈形状中的密度时三角形最密集,但它们会报告以 [ 为中心的圆的密度要低得多0, 0]:


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

【讨论】:

  • 谢谢。我现在要尝试实现它。
猜你喜欢
  • 2016-08-14
  • 1970-01-01
  • 1970-01-01
  • 2011-01-10
  • 2015-04-19
  • 1970-01-01
  • 2010-12-03
  • 1970-01-01
  • 2010-09-06
相关资源
最近更新 更多