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

问题描述 投票:0回答:1

我有一个不对称矩阵。

    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但我没有找到这样的功能。我想知道在某些包中是否有现成的模块来完成这个过程。非常感谢。

python-3.x matrix permutation symmetric triangular
1个回答
0
投票

顺便说一下,我没有看到三角形矩阵的例子。

问题是NP-complete,因此您可以生成行和列的所有排列,直到达到三角矩阵。 (或尝试从链接文章中实现算法)


文章名称记录

Obtaining a Triangular Matrix by Independent Row-Column Permutations
Guillaume Fertin, Irena Rusu, Stéphane Vialette
© www.soinside.com 2019 - 2024. All rights reserved.