用最少数量的矩形覆盖凹面


11

我试图用一个最小的矩形覆盖一个简单的凹多边形。我的矩形可以是任意长度,但是它们具有最大宽度,并且多边形永远不会具有锐角。

我考虑过尝试将凹面多边形分解为三角形,以产生一组最小重叠的矩形,这些矩形将每个三角形的边界最小化,然后将这些矩形合并为更大的矩形。但是,我认为这不适用于多边形边缘的小缺口。这些凹口上的反射顶点创建的三角形将创建错误的矩形。我正在寻找将跨越/忽略缺口的矩形。

我对计算几何学一无所知,所以我不确定如何开始提出这个问题。

我发现其他类似的帖子,但不是我需要的:

一些示例:黑色是输入。红色是可接受的输出。

在此处输入图片说明

另一个例子:首选第二个输出。但是,生成两个输出并使用另一个因素确定偏好可能是必要的,而不是此算法的责任。

在此处输入图片说明

在此处输入图片说明

模仿曲线的多边形极为罕见。在这种情况下,矩形的大部分面积都被浪费了。但是,这是可以接受的,因为每个矩形都遵守最大宽度约束。

在此处输入图片说明

另外,我发现本文与我的需要很接近:

也许更好的问题是“如何识别凹多边形的矩形部分?” 在此处输入图片说明

这是显示所需实现的图像: 在此处输入图片说明

绿色是实际的材料用量。红色矩形是布局。蓝色是整个多边形的MBR。我想我应该尝试获取少量MBR并将其填充。在左上角终止于多边形中间的2-3个绿色矩形非常昂贵。那就是我要最小化的。绿色矩形具有最小和最大宽度和高度,但是我可以使用足够多的行和列来覆盖一个区域。同样,我必须最小化不跨越输入的矩形的数量。我还可以修改绿色矩形的形状以适合在很小的地方,这也是非常昂贵的。换句话说,获得尽可能多的矩形以尽可能地跨度是理想的。


3
您的标题是凸多边形,但问题是凹多边形。也许您需要进行一些更正?
ANKUR

1
@JukkaSuomela,在前两张图片中,多边形的大小大致相同,在第一张图片中,我可以像在第二张图片中那样垂直放置三个矩形。但是,这不是很理想。我认为技巧与矩形的周长有关。也许我想做的是最小化多边形内部矩形的边界量,并最大化与多边形边缘共线的边界量。但是,有时矩形必须从多边形中溢出才能完全覆盖多边形。
Josh C.

1
@JohnMoeller,我了解。这是一个人们可以轻松识别解决方案的问题,但是正确说明问题却非常困难。问题类似于铺设地毯或墙纸,实际问题是结构/建筑问题。我正在尝试确定矩形布局的区域,这些区域以后将填充另一种镶嵌形式。问题是找到那些矩形并处理非矩形区域。让我知道是否可以解释更多。
Josh C.

2
我认为我们应该首先将其作为建模问题:目标不是提出解决明确定义的优化问题的算法,而是目标是定义优化问题。
Jukka Suomela 2012年

3
@JoshC .:如果您尝试向我们介绍更多有关实际应用程序的信息,也许也会有所帮助。我从您的描述中得知,例如,切割相当昂贵-理想情况下,矩形块将需要尽可能少的切割。这个对吗?
Jukka Suomela 2012年

Answers:


3

这是几何固定套的一种变体。根据确切的设置,您可能可以进行一些近似计算。问题当然是NP-Hard。自然的狂喜是使用贪婪算法(总是选择覆盖尚未覆盖的大部分区域的矩形/条。替代技术是使用重新称量。有一些有趣的理论结果,但坦率地说,没有什么在实践中应该有用)您可能想尝试的一种有趣的尝试是,首先将多边形分解为最少数量的凸形(使用Keil动态编程算法),然后分别覆盖每个凸形多边形...


我对Keil动态编程算法不熟悉。但是,我确实找到了一种方法,可以结合使用最大内接矩形算法和最小边界矩形算法以及基于启发式方法的一些变体。
Josh C.

2

我认为本文可能会有所帮助。显然这不是一个相同的问题-实际上是相反的问题,用多边形覆盖一个矩形-但是某些想法可能是一个起点。特别是,这种反向问题是NP难题,我怀疑您的问题也是如此(尽管据我所知,减少的幅度并没有明显的扩展)。

E. Arkin,A。Efrat,G。Hart,I。Kostitsyna,A。Kroller,J。Mitchell和V. Polishchuk。斯堪的纳维亚薄饼上的蛋糕:在最小的一种尺寸适合所有的盒子上。 算法的乐趣。第16-27页。2012年


1
谢谢您的建议。我一直在与公司的工程和制造部门合作,以进一步澄清该问题。我仍在等待确认,但是我现在正在考虑一种可以返回最大内接矩形集的算法。尽管它不能完全覆盖形状,但它会优先考虑正交区域,而将非正交区域留给某些启发式方法。唯一的技巧是最大化那些正交区域。看我最后一张带有9个类似lamda的数字的图像。
Josh C.
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.