我有一个不对称矩阵。
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中使用的代码。根据这些代码中的注释,我找到了一篇由Fortran在1978年发表的论文(“算法529:阻止三角形的排列”)。我还发现了一篇论文(Tarjan的矩阵块三角化算法的实现),它可以描述这个概念。
我看看numpy但我没有找到这样的功能。我想知道在某些包中是否有现成的模块来完成这个过程。非常感谢。
顺便说一下,我没有看到三角形矩阵的例子。
问题是NP-complete,因此您可以生成行和列的所有排列,直到达到三角矩阵。 (或尝试从链接文章中实现算法)
文章名称记录
Obtaining a Triangular Matrix by Independent Row-Column Permutations
Guillaume Fertin, Irena Rusu, Stéphane Vialette