【问题标题】:Possibility of making diagonal elements of a square matrix 1,if matrix has only 0 or 1如果矩阵只有 0 或 1,则使方阵的对角元素为 1 的可能性
【发布时间】:2013-11-05 07:58:10
【问题描述】:

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

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

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

(b) 给出一个多项式时间算法,确定一个矩阵是否 M0-1 条目可重新排列。

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

【问题讨论】:

  • 如果措辞正确,这可能是 math.stackexchange 上的一篇不错的帖子;那边的线性代数书呆子可能会给它一个很好的理论背景。
  • 如果我理解正确,我们可以交换同一列中的元素。所以这是计算每列中 1 的数量的问题。如果 n 为奇数,则除中心列外,每一列必须至少有两个 1。中心柱可以有一个。如果 n 是偶数,则每列应至少有两个 1。因此算法甚至是线性的。我可能错过了一些重要的东西。
  • 如果将矩阵解释为有向图邻接矩阵,那么可以证明这个问题等价于确定图是否可以分解为强连通分量。希望这已经足够暗示了。玩转转换本身(并尝试将它们视为只是移动行和列标签)。至于 (a) 部分,尝试矩阵 [0,1,1;1,0,0;1,0,0] 并将其解释为图形。有没有定向循环?如果图确实有一个有向环,你能排列矩阵,使对角线元素成为环的边吗?
  • @Nirk 恐怕我无法按照您的提示进行操作 - 看起来像是进行拓扑排序以获得上三角矩阵,但这不是这里需要的。由 1 的单个对角线组成的矩阵不对应于循环,但可以解决问题。一个完全 1s 的矩阵解决了这个问题并且是一个循环。顶部和左侧 1 的矩阵是一个循环,但不能解决问题。空矩阵既不是循环也不能解决问题,所以我想我有所有四种组合。
  • @mcdowella 通过将最后一列冒泡到前面,您有一个循环(如果您将该矩阵的第一列解释为与第一行相同的节点)。因此,将列移回末尾只会将第一列的标签移到末尾

标签: algorithm matrix


【解决方案1】:

我认为这篇文章是这里的主题,因为我认为答案是http://en.wikipedia.org/wiki/Assignment_problem。考虑在第 i 列中为每个 i 放置 1 的工作。每行都可以完成这些工作的一部分。如果您可以找到行的分配,使得有不同的行能够在每列中放置 1,那么您可以通过重新排列行来使矩阵对角线,以便第 i 行在第 i 列上放置 1。

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-05-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-12-24
    相关资源
    最近更新 更多