给定一个包含P点的矩形R,与轴正交,点是自然数。
包裹是一个矩形:
找到一个算法,在R中找到所有可能的地块,这样它们的总面积就会最小(最大化荒地面积)。
示例:分割方式中的一种,5分(*),2个包裹
R
|-----------------------------------------------|
| | | |
| | | * |
| * | |
| | * |
| | * | |
| | | |
| | | |
| |-----------*-------| |
| wastelands | |
| | |
| | |
|-----------------------------------------------|
首先,让我们跳过优化(最大/最小)。有没有什么好方法来划分矩形?
看起来它可能是NP难的。我从这个问题的发起人那里得到了一些反馈,找到所有可能的包裹是毫无意义的。 我认为唯一的方法是使用一些启发式方法(例如找到包含大部分点的最大包裹或包裹)并检查结果。
答案 0 :(得分:0)
对于初学者来说,我可以想到一种回溯和指数难的方法。您可以按某种顺序选择积分,每次都执行以下任一操作:
1-决定通过垂直线 2-决定通过水平线 3-决定忽略
直到你最终得到3 ^ n个不同的案例。
对于您自己的应用程序,您可以考虑在每次迭代时应用一些边界条件,例如,验证您是否最终得到了一个没有内部点的包裹,然后回溯。
答案 1 :(得分:0)
蛮力是为每个点找到包含该点(内部)的所有可能的矩形,并在所有矩形的集合上求解exact cover set problem。
要查找包含给定点的所有矩形“相对”简单: - )
从一个最大一边的矩形开始。例如。对于点(a,b),具有最大y侧的矩形是在x坐标最接近a(从两侧)并且水平边界在R上的点上具有垂直边界的矩形。如果存在其他点则不是这种情况(s) )x坐标等于a,但只能将水平边界移动到y方向的最近点。
下一个矩形必须具有较小的y侧,这意味着用于较短矩形中的垂直边界的边界点(B)用于水平边界。垂直边界的点是从B的同一侧选择,以支持矩形约束(创建矩形,矩形区域中没有其他点。)