【问题标题】:Cholesky decomposition of sparse matrices using permutation matrices使用置换矩阵对稀疏矩阵进行 Cholesky 分解
【发布时间】:2015-06-18 16:25:16
【问题描述】:

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

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

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

我的问题是一般如何确定P

要从更真实的矩阵中了解 APTAP 的 Cholesky 分解的差异,请参见下图.我从http://www.seas.ucla.edu/~vandenbe/103/lectures/chol.pdf拍摄了所有这些图片

根据lecture notes

存在许多启发式方法(我们没有介绍)来选择好的 置换矩阵 P.

我想知道其中一些方法是什么(C、C++ 甚至 Java 中的代码是理想的)。

【问题讨论】:

标签: algorithm math matrix linear-algebra matrix-factorization


【解决方案1】:

为最小填充矩阵分解找到矩阵的行和列的最佳排列并不是一件容易的事(如 cmets 中所指出的那样)。因此,启发式算法被用于实践。

有些库实现了启发式重新编号/排序策略,通常基于矩阵邻接图的图算法。一种尝试减少相应邻接矩阵的带宽。一个易于实现的算法是Cuthill-McKee AlgorithmMinimum-Degree Ordering 算法。有关此问题的更多信息,请参阅书籍 Yousef Saad: Iterative Methods for Sparse Linear Systems (2003),以及其他许多书籍。

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

  • Suitesparse 用于大型稀疏线性系统的直接求解器的库集合。在 AMD、CAMD、COLAMD 和 CCOLAMD 库中实现的排序方法
  • (Par-)Metis 图形分区库,但也提供矩阵重新排序算法
  • Boost.Graph 直接处理邻接图并提供一些排序算法,如提到的 Cuthill-McKee 和最小度排序
  • (PT-)Scotch 用于图形分区和稀疏矩阵重新排序

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

【讨论】:

  • 很抱歉延迟接受。我已将这个项目搁置了一段时间,并将在今年晚些时候恢复。
  • 如果你有兴趣,我最终“解决”了我的问题by using Eigen
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-07-28
  • 1970-01-01
  • 2012-01-10
  • 2012-11-15
  • 1970-01-01
相关资源
最近更新 更多