我有一个二进制矩阵n * m(0和1)。问题是覆盖所有1的非重叠框,其元素都是1。
示例:
1111
0110
0110
Box可以用每个坐标(x,y,lx,ly)
中的坐标和长度表示。此示例包含2个框{ (0,0,1,4), (1,1,2,2) }
。
我正在寻找如何用最少的盒子找到封面。
由于
答案 0 :(得分:1)
我的问题领域是计算化学,我们解决了巨大的多变量问题。这里可以应用两种通用案例全局优化算法,这些算法也已成功应用于包含数万个原子的系统:
a)遗传算法
http://en.wikipedia.org/wiki/Genetic_algorithm
这两种算法都具有良好的公共领域实施和良好的最优性属性。
答案 1 :(得分:0)
此问题称为直线多面体的分区。在评论中发布的类似问题biziclop上有一个很好的answer。
算法的思想是将问题减少到二分图的最大匹配(顶点是可能的削减。)
<强> 3D 强>
我原来的问题是3D中的同一主题。该版本显示为NP-complete: - /
经过一些研究,我在Anuj Jain的论文中描述了基于启发式的解决方案: