我正在寻找一个 Python 模块或代码来将不对称矩阵排列成三角形



我有一个非对称矩阵。

    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

最新更新