找出随机以正方形为中心的圆正好包含K个点的概率

时间:2019-05-05 20:12:35

标签: algorithm geometry probability computational-geometry

我正在解决一个减少到以下方面的问题:

  1. 给出一个正方形,其顶点分别为(0,0),(0,1),(1,0)和(1,1)。
  2. 给出一个严格的非空的K点集(x,y),严格地在这个正方形内且数字为0
  3. 找到一个概率P,该半径为R且正方形为中心(可以在侧面)的圆包含所有K个点。

我认为这是一个几何概率,要计算答案,我们需要将包含所有K个点的所有圆的总面积除以正方形的面积,显然为1。
令K = 1,那么就很容易计算P,我们取这个点并围绕它旋转一个圆,这样它将绘制一个半径为2R的圆,其中包括所有包含该点的半径R的圆;剪掉正方形外的零件,并计算剩余的面积。
如果K = 2,则首先我们检查点之间的距离是否不大于2R,以便存在包含两个点的圆。但是我不太了解如何计算总面积,因为如果可以的话,最终的数字将是4叶花。以此类推,以获得更大的K ...

我觉得这可能是一个简单的解决方案,并且想知道是否有更优雅的解决方案。

2 个答案:

答案 0 :(得分:2)

给定K个点,半径为R的圆盘如果覆盖了它们的凸包,则将其覆盖。如果尝试磁盘的所有位置,则最极端的情况是圆周穿过一两个船体顶点。如果考虑通过给定顶点的所有位置,则可以在与船体上两个相邻顶点的接触之间的角度内旋转磁盘。在旋转过程中,圆心描绘出半径为R的圆弧。

因此,圆盘中心的位置是由半径为R的圆弧构成的凸曲线多边形。要获得所需的概率,请将此多边形与单位正方形相交并计算出公共面积。

在该图中,K = 6点的凸包为绿色。红色圆圈是具有两个触点的极限位置。磁盘中心的位置以蓝色定界。

enter image description here

一旦有了凸包,构建曲线多边形就不那么困难了,要获得其面积,可以将其分解为标准多边形和一组圆形线段。

但是在单元格内修剪会使其颈部疼痛。

答案 1 :(得分:-1)

我认为可以对这个问题进行几何解决。但是,我也认为这可能是“蒙特卡洛法”的一个很好的应用领域。

通常,您可以使用monte carlo方法来计算数字PI。参见:

Animated calculation of the number PI using Monte Carlo method

现在,您的问题将需要进行额外的修改。您需要随机移动中心,并且需要随机选择R。

一种可能的算法如下:

  1. 随机选择一个中心
  2. 随机选择R
  3. 申请蒙特卡洛积分1000-10000点
  4. 将概率分布放入数组中
  5. 重新执行上述步骤,直到中心选择和R选择概率分布均匀(即,您为每个可能的中心(x,y)选择了大约每个可能的R

加快上述操作速度的一种方法可能是这样的:

  • 创建一个中心点数组,每个中心点将初始正方形划分为.05正方形网格。
  • 对于每个中心,将R分为0.05个点间隔。
  • 为每个中心和每个R值应用蒙特卡洛。

此方法的一个优点是,如果您的问题有所改变,则不必每次都提出不同的分析解决方案。您只需稍作更改即可重新运行上述算法,然后等待。