如果矩阵只有0或1,则可以制作方阵1的对角元素

时间:2013-10-26 04:12:55

标签: algorithm matrix

M为n x n矩阵,每个条目等于0或1.让m[i][j] 表示行i和列j中的条目。对角线入口是其中之一 对某些人来说m[i][i]。交换矩阵i的行jM表示以下操作:

我们将值m[i][k]m[j][k]换成k = 1, 2 ..... n。交换两列 类似地定义我们说M是可以重新排列的,如果可以交换一些行对和一些列对(以任何顺序),这样, 在所有交换之后,M的所有对角线条目都等于1.

(a)举一个不可重新排列的矩阵M的例子,但是 每行和每列中至少有一个条目等于!。

(b)给出一个确定矩阵是否的多项式时间算法 具有M条目的0-1可以重新安排。

我尝试了很多,但无法得出任何结论,请为我建议算法。

1 个答案:

答案 0 :(得分:0)

我认为此帖是关于此主题的,因为我认为答案是http://en.wikipedia.org/wiki/Assignment_problem。考虑为每个i在第i列中放置1的工作。每一行都可以完成这些工作的一些子集。如果你可以找到一个行的赋值,这样就有一个不同的行能够在每一列中放一个1,那么你可以通过重新排列行来使矩阵对角线,这样我就可以在第i列上放一个1。

假设有一个解决问题的任务。将溶液保持1s的细胞涂成红色溶液。请注意,置换行会在每行和每列中留下一个红色单元格。类似地,置换列在每行和每列中留下一个红色单元格。因此,无论您将多少行和列置换,我都可以通过置换行来恢复对角线。因此,如果有任何解决方案在所有对角线上放置1,无论你试图通过置换行和列来伪装它多少,我都可以通过仅排列行来恢复对角线。因此,当没有解决方案时,分配算法无法准确解决此问题,例如,如果只有1s位于顶行和最左列。