当前位置: 首页 > 知识库问答 >
问题:

如何用固定的圆数部分覆盖给定的形状?

聂琨
2023-03-14

我不确定在这里寻求算法方面的帮助是否合适,但谁能给我一些指导,或者告诉我在哪里可以找到这样的指导?多谢!

问题是这样的:给定一个固定的圆数,我需要一个算法来找到一组这些圆的位置和半径的最优集合来覆盖给定的形状,那么误差区域(圆在给定形状之外的部分+形状没有被这些圆覆盖的部分)是最小的?圆圈可能会重叠。

共有1个答案

陆啸
2023-03-14

这不是一个微不足道的问题,当然也没有简单的解析解。例如:即使是最简单的版本--一个圆和一个简单的连通区域,也不一定很容易求解,这取决于区域的形状。通常还会有许多虚假的最小值。

我会建议模拟退火将是一个合适的技术,以找到一个好的(如果不是最优的)解决方案。实际上,用n个圆来探索一个由3n个变量(每个圆为x、y和r)组成的变化很大的函数,模拟退火是探索这种环境的一种相当有效的方法。

 类似资料:
  • 在笛卡尔坐标中,我有一个知道高度h、宽度w和4个角(x, y)的矩形。如果我有一些值r,即圆的固定半径,如何计算将完全覆盖矩形的最小数量的圆的中心点?

  • 我正在使用来自第三方系统的一组DTD。我们的目标是将XML请求(符合这些DTD的请求映射到java中,然后将XML响应发送回系统)。 DTD是一成不变的(我无法控制更改它们)。 因此,为了进行映射,我使用XMLSpy将dtd转换为XML Schemas (xsd ),然后使用XJC编译器创建Jaxb绑定类。我用的是Java 7。 问题是,DTD 实际上没有命名空间。我有20个不同的DTD。10 表

  • 由于在数字世界中几乎不会发生真正的碰撞,我们总会出现“碰撞”的圆圈与矩形重叠的情况。 在与矩形完美碰撞而不重叠的情况下,如何将圆形放回原处? 假设矩形停止(零速度)并对轴。

  • 将求解第一个点的第一个圆放置在适当位置。 通过检查这两个点之间的距离是否小于2*r来求解最小圈数中的第二个点。并继续处理所有n个点。我认为是贪婪算法,但它是最优的,线性的吗?

  • 我有一个格式像这个 的 文件。下面是一个示例: 现在,假设我想编辑< code>goodbyeMessage的文本部分,即< code >一些新的更改文本,以< code>See you later 生成的<code>csv</code>应该如下所示: 我有可以写入文件的代码,但是当代码完成执行时,这是生成的文件: 我知道这种情况正在发生,因为我将文件编写器的值设置为 。如果我不这样做,一切都会被

  • 我试图画一个圆弧,基于两个给定的点和一个给定的高度来描述一个圆段。为了实现这一点,我将使用java.awt.graphics中的以下方法。 首先,我观察到x、y、width和height值描述了一个包含圆的矩形。 圆弧的中心是原点为(x,y)的矩形的中心,其大小由width和height参数指定。(http://docs.oracle.com/javase/7/docs/api/java/awt/