Algorithm 稀疏矩阵的Cholesky置换分解

Algorithm 稀疏矩阵的Cholesky置换分解,algorithm,math,matrix,linear-algebra,matrix-factorization,Algorithm,Math,Matrix,Linear Algebra,Matrix Factorization,我对大型稀疏矩阵的Cholesky分解感兴趣。我遇到的问题是,Cholesky因子不一定是稀疏的(就像两个稀疏矩阵的乘积不一定是稀疏的) 例如,对于仅沿第一行、第一列和对角线具有非零的矩阵,Cholesky因子具有100%填充(上下三角形为100%密集)。在下图中,灰色为非零,白色为零 我知道的一个解决方案是找到一个置换p矩阵,然后对PTAP进行Cholesky分解。例如,对于相同的矩阵,通过应用排列矩阵,将第一行移动到最后一行,将第一列移动到最后一列,Cholesky因子是稀疏的 我的问题

我对大型稀疏矩阵的Cholesky分解感兴趣。我遇到的问题是,Cholesky因子不一定是稀疏的(就像两个稀疏矩阵的乘积不一定是稀疏的)

例如,对于仅沿第一行、第一列和对角线具有非零的矩阵,Cholesky因子具有100%填充(上下三角形为100%密集)。在下图中,灰色为非零,白色为零

我知道的一个解决方案是找到一个置换p矩阵,然后对PTAP进行Cholesky分解。例如,对于相同的矩阵,通过应用排列矩阵,将第一行移动到最后一行,将第一列移动到最后一列,Cholesky因子是稀疏的

我的问题是一般如何确定p?

要从更真实的矩阵中了解A和PTAP的Cholesky分解的差异,请参见下图。这些照片都是我从

根据

有许多启发式方法(我们没有介绍)用于选择好的产品 置换矩阵P


我想知道这些方法中的一些(C、C++、甚至java都是理想的代码)。< /P> < P>找到矩阵的行和列的最佳排列以进行最小填充矩阵分解的问题不是一个琐碎的TRAGASE(如注释中所指出的)。因此,启发式算法在实践中得到了应用

有些库实现启发式重新编号/排序策略,通常基于矩阵邻接图的图形算法。人们试图减少相应邻接矩阵的带宽。一种易于实现的算法是or算法。关于这个问题的更多信息可以在这本书中找到

许多库实现启发式算法,如

  • 大型稀疏线性系统直接求解器的库集合。在AMD、CAMD、COLAMD和CCOLAMD库中实现的排序方法
  • 一个用于图分区的库,但也提供了矩阵重新排序算法
  • 直接处理邻接图,并提供一些排序算法,如前面提到的Cuthill-McKee和最小度排序
  • 用于图划分和稀疏矩阵重排序

其中一些库还提供了稀疏的Cholesky分解方法,可以直接使用。

好人把整本书都放在了网上,特别是第3章。在谷歌上试试“稀疏重排序”,可能会把“hypergraph”作为额外的关键字。@LutzL,你知道有这样做的库吗?例如,Eigen或MKL?还是一个?[Patrick R.Amestoy et al.:线性代数和稀疏直接方法]()章节“重新排列稀疏矩阵”,以及他页面上的其他文本libsparse,现在是“SuiteSparse:UMFPACK、CHOLMOD和许多其他”。此外,还有netlib.org/sparse,它是一个祖先或表亲,…使用google imagesearch查找许多引人入胜的图像(通常是它们背后的理论),很抱歉延迟接受。我已经暂时搁置了这个项目,今年晚些时候会回来。如果你感兴趣,我最终“解决”了我的问题。