设M
为n x n矩阵,每个条目等于0或1.让m[i][j]
表示行i
和列j
中的条目。对角线入口是其中之一
对某些人来说m[i][i]
。交换矩阵i
的行j
和M
表示以下操作:
我们将值m[i][k]
和m[j][k]
换成k = 1, 2 ..... n
。交换两列
类似地定义我们说M
是可以重新排列的,如果可以交换一些行对和一些列对(以任何顺序),这样,
在所有交换之后,M
的所有对角线条目都等于1.
(a)举一个不可重新排列的矩阵M
的例子,但是
每行和每列中至少有一个条目等于!。
(b)给出一个确定矩阵是否的多项式时间算法
具有M
条目的0-1
可以重新安排。
我尝试了很多,但无法得出任何结论,请为我建议算法。
答案 0 :(得分:0)
我认为此帖是关于此主题的,因为我认为答案是http://en.wikipedia.org/wiki/Assignment_problem。考虑为每个i在第i列中放置1的工作。每一行都可以完成这些工作的一些子集。如果你可以找到一个行的赋值,这样就有一个不同的行能够在每一列中放一个1,那么你可以通过重新排列行来使矩阵对角线,这样我就可以在第i列上放一个1。
假设有一个解决问题的任务。将溶液保持1s的细胞涂成红色溶液。请注意,置换行会在每行和每列中留下一个红色单元格。类似地,置换列在每行和每列中留下一个红色单元格。因此,无论您将多少行和列置换,我都可以通过置换行来恢复对角线。因此,如果有任何解决方案在所有对角线上放置1,无论你试图通过置换行和列来伪装它多少,我都可以通过仅排列行来恢复对角线。因此,当没有解决方案时,分配算法无法准确解决此问题,例如,如果只有1s位于顶行和最左列。