一种贪心算法,用于通过翻转单元格将二进制矩阵转换为零矩阵

时间:2014-11-10 16:38:38

标签: algorithm matrix greedy

我们有一个带有1和0的M * N矩阵,我们希望使用2 * 2平方使所有这些单元格为零。当这个方块被推到4个单元格时,它们的内容将被翻转。我们想要找到给定矩阵的任何答案,以便将所有单元格完全转换为零。

这有什么贪心的答案吗?

1 个答案:

答案 0 :(得分:1)

调用较大的矩阵M和小的矩阵(2x2)P

从左到右扫描P,从上到下扫描M.每次M上P的单元格的左上角为1时,应用P。

当你到达M的右下角时,每个单元除了右边的列和M的底行都保证为0。

如果最后一列不为零则没有解决方案。

您可以证明并非每个矩阵都可以通过此过程清除。例如,如果M是2x2非零矩阵,则永远不能使用此过程清除它。

任何尺寸的1至3个单元格的矩阵M都不能设置为1。

我怀疑有一个更普遍的无法解决的案例 - 例如可能是因为没有4位的倍数设置为1的矩阵不能以这种方式解决。

考虑更多 - 我认为你不能在任何行或列上解决任何奇数1的矩阵。