【问题标题】:I'm looking for a Python module or codes to permutate an asymmetric matrix into triangular form我正在寻找一个 Python 模块或代码来将非对称矩阵置换为三角形形式
【发布时间】:2019-03-13 07:04:29
【问题描述】:

我有一个不对称矩阵。

    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 编写的。我还找到了一篇论文(Tarjan's Algorithm for the Block Triangularization of a Matrix),它可能描述了这个概念。

我查看了 numpy 但我没有找到这样的功能。我想知道某些包中是否有现成的模块来完成这个过程。非常感谢。

【问题讨论】:

    标签: python-3.x matrix permutation symmetric triangular


    【解决方案1】:

    顺便说一句,我在示例中没有看到三角矩阵。

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


    记录的文章名称

    Obtaining a Triangular Matrix by Independent Row-Column Permutations
    Guillaume Fertin, Irena Rusu, Stéphane Vialette
    

    【讨论】:

    • 非常感谢。实际上,我之前找到了这篇论文,但只是查看了它。我会仔细阅读的。我在本书中使用了“三角形”这个词。我只想同时更改行或列,然后在诊断上方移动尽可能多的“1”。示例中我特意设计了一个互锁的块,排列后放置在右下角。再次感谢您的信息。
    猜你喜欢
    • 2016-07-15
    • 2013-05-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-08-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多