我有一个非对称矩阵。
A B C D
A 0 0 1 0
B 1 0 0 1
C 0 0 0 0
D 1 1 1 0
我正在尝试切换行和列以使其变成三角形形式。
喜欢:
C A D B
C 0 1 1 0
A 0 0 1 1
D 0 0 0 1
B 0 0 1 0
有人提供了一些由VBA制定并在Microsoft Excel中使用的代码。根据这些代码中的注释,我发现了1978年发表的论文("算法529:阻止三角形形式的排列"),该论文是在Fortran中发表的。我还找到了一篇论文(用于矩阵的块三角形的塔琳的算法实施),该论文可能描述了概念。
我看着numpy,但没有找到这样的功能。我想知道某些软件包中是否有一个现成的模块来完成此过程。非常感谢。
btw,我看不到示例中的三角矩阵。
问题是NP完整的,因此您只能生成所有行排列的行排列,直到达到三角形矩阵为止。(或尝试从链接的文章中实现算法)
记录的文章名称
Obtaining a Triangular Matrix by Independent Row-Column Permutations
Guillaume Fertin, Irena Rusu, Stéphane Vialette