给定二维坐标平面上的一些矩形,我想找到一种算法来找到由不重叠矩形形成的最大区域。
我的第一个想法是:
检查所有i,j之间的矩形Ri,Rj是否重叠
将矩形Ri表示为节点构建一个边,连接任何不重叠的矩形Ri和Rj
我们现在有了一个无向图
找出所有完全图的子图
计算节点权值的总和并找到最大值
然而,这种暴力方法已经是NP完全问题了。我也没有看到简单的贪心算法可行。我想知道是否有任何多项式时间的方法来解决这个问题。谢谢!
给定二维坐标平面上的一些矩形,我想找到一种算法来找到由不重叠矩形形成的最大区域。
我的第一个想法是:
检查所有i,j之间的矩形Ri,Rj是否重叠
将矩形Ri表示为节点构建一个边,连接任何不重叠的矩形Ri和Rj
我们现在有了一个无向图
找出所有完全图的子图
计算节点权值的总和并找到最大值
然而,这种暴力方法已经是NP完全问题了。我也没有看到简单的贪心算法可行。我想知道是否有任何多项式时间的方法来解决这个问题。谢谢!
maximize sum_{rectangles R} area(R) x_R
subject to
for each pair of overlapping rectangles R1, R2:
x_R1 + x_R2 <= 1
variables x_R in {0, 1} for each rectangle R
x_R = 1
。