Algorithm 用n个重叠圆覆盖正方形

Algorithm 用n个重叠圆覆盖正方形,algorithm,cover,Algorithm,Cover,有n个相同的圆和一个正方形。我如何将圆随机放置在正方形内,使正方形完全覆盖? PS:所有的圆圈都应该与其他圆圈重叠。你可以尝试一种随机的方法,例如某种类型的。以最简单的形式: 在正方形中随机放置半径为r的n个圆 测量正方形上这些圆的覆盖范围,例如,通过采样一些(或更多)点,并测试它们是否在任何圆的r范围内 重复此步骤,直到正方形完全覆盖(或直到X代已过去): 通过随机移动一个或多个圆圈,稍微改变覆盖范围 测量新变体的覆盖范围 如果新变体的覆盖率优于原始变体,则保留该变体,否则保留原始变体以供

有n个相同的圆和一个正方形。我如何将圆随机放置在正方形内,使正方形完全覆盖?
PS:所有的圆圈都应该与其他圆圈重叠。

你可以尝试一种随机的方法,例如某种类型的。以最简单的形式:

  • 在正方形中随机放置半径为r的n个圆
  • 测量正方形上这些圆的覆盖范围,例如,通过采样一些(或更多)点,并测试它们是否在任何圆的r范围内
  • 重复此步骤,直到正方形完全覆盖(或直到X代已过去):
    • 通过随机移动一个或多个圆圈,稍微改变覆盖范围
    • 测量新变体的覆盖范围
    • 如果新变体的覆盖率优于原始变体,则保留该变体,否则保留原始变体以供下一次迭代使用
请注意,这并不能保证始终找到最佳解决方案(如果有),但在一般情况下,它应该工作得相当好。此外,您可能需要对相当多的点进行采样,以防止提前终止(或找到更好的确定性方法),或者您可以在覆盖率相当高时动态增加要采样的点的数量


PS:您的PS不需要检查。如果圆不重叠,它们就无法覆盖矩形的整个区域而不留间隙。

想想六边形瓷砖-其余部分是对齐。