Matrix 复杂性:一个矩阵是另一个矩阵的行/列排列

Matrix 复杂性:一个矩阵是另一个矩阵的行/列排列,matrix,complexity-theory,permutation,Matrix,Complexity Theory,Permutation,给定元素属于集合S的两个m x n矩阵A和B。 问题:可以将A的行和列排列为B吗? 解决这个问题的算法复杂度是多少? 行列式部分有帮助(当m=n时):一个必要条件是det(a)=+/-det(B) 还允许A包含与B的任何元素匹配的“不在乎” 此外,如果S是有限的,则允许A的元素置换 这不是家庭作业-它与已解决的17x17难题有关。请参见下面排列矩阵行和列的示例: 观察开始矩阵和结束矩阵。行或列中的所有元素都将保留,只是它们的顺序已更改。此外,行和列之间的相对位置变化是一致的 参见开始矩阵和结束

给定元素属于集合S的两个m x n矩阵A和B。 问题:可以将A的行和列排列为B吗? 解决这个问题的算法复杂度是多少? 行列式部分有帮助(当m=n时):一个必要条件是det(a)=+/-det(B)

  • 还允许A包含与B的任何元素匹配的“不在乎”

  • 此外,如果S是有限的,则允许A的元素置换


  • 这不是家庭作业-它与已解决的17x17难题有关。

    请参见下面排列矩阵行和列的示例:

    观察开始矩阵和结束矩阵。行或列中的所有元素都将保留,只是它们的顺序已更改。此外,行和列之间的相对位置变化是一致的

    参见开始矩阵和结束矩阵中的1。它的行包含元素12、3和14。它的列也有5、9和2。这在整个转换中都得到了维护

    基于这一事实,我提出了一个基本的算法来寻找一个给定的矩阵a,它的行和列a可以被排列成矩阵B

     1. For each row in A, sort all elements in the row. Do same for B.
     2. Sort all rows of A (and B) based on its columns. ie. if row1 is {5,7,16,18} and row2 is {2,4,13,15}, then put row2 above row1
     3. Compare resultant matrix A' and B'. 
     4. If both equal, then do (1) and (2) but for columns on ORIGINAL matrix A & B instead of rows.
     5. Now compare resultant matrix A'' and B''
    

    您不能单独对行进行排序,否则{1,2},{3,4}}将等价于{1,2},{4,3}。如果您使用数组表示矩阵,则很容易进行就地排序。我同意在对行{{1,2}排序之后,{3,4}}将等同于{1,2},{4,3},但它们的差异将在稍后比较排序的列时被捕获。您可以试运行逻辑并进行检查。请注意,在第4点中,列的排序是在原始矩阵A和B上进行的。排序后的行不会再进行处理。是的,这似乎是合理的!现在,为了证明(或反例?)这里有一个反例。A={0,0,1},{0,0,1},{1,1,0}和B={0,1,0},{1,1,0},{0,0,1}。