二进制矩阵的覆盖框数量最少

时间:2011-03-16 10:24:22

标签: algorithm matrix compression cover

我有一个二进制矩阵n * m(0和1)。问题是覆盖所有1的非重叠框,其元素都是1。

示例:

1111
0110
0110

Box可以用每个坐标(x,y,lx,ly)中的坐标和长度表示。此示例包含2个框{ (0,0,1,4), (1,1,2,2) }

我正在寻找如何用最少的盒子找到封面。

由于

2 个答案:

答案 0 :(得分:1)

我的问题领域是计算化学,我们解决了巨大的多变量问题。这里可以应用两种通用案例全局优化算法,这些算法也已成功应用于包含数万个原子的系统:

a)遗传算法
http://en.wikipedia.org/wiki/Genetic_algorithm

b)模拟退火
http://www.gnu.org/software/gsl/
ftp://ftp.alumni.caltech.edu/pub/ingber
http://www.taygeta.com/annealing/simanneal.html
http://www2.cs.uni-paderborn.de/cs/ag-monien/SOFTWARE/PARSA/
http://www.codeproject.com/KB/recipes/SimulatedAnnealing.aspx

这两种算法都具有良好的公共领域实施和良好的最优性属性。

答案 1 :(得分:0)

此问题称为直线多面体的分区。在评论中发布的类似问题biziclop上有一个很好的answer

算法的思想是将问题减少到二分图的最大匹配(顶点是可能的削减。)

<强> 3D

我原来的问题是3D中的同一主题。该版本显示为NP-complete: - /

经过一些研究,我在Anuj Jain的论文中描述了基于启发式的解决方案: