我对大型稀疏矩阵的 Cholesky 分解很感兴趣。我遇到的问题是 Cholesky 因子不一定是稀疏的(就像两个稀疏矩阵的乘积不一定是稀疏的)。
例如,对于仅沿第一行、第一列和对角线具有非零值的矩阵,Cholesky 因子具有 100% 填充(下三角形和上三角形是 100% 密集的)。在下图中,灰色非零,白色为零。
我知道的一种解决方案是找到一个排列P矩阵并对 P T AP进行 Cholesky 分解。例如,对于相同的矩阵,通过应用将第一行移动到最后一行并将第一列移动到最后一列的置换矩阵,Cholesky 因子是稀疏的。
我的问题是一般如何确定P?
要从更真实的矩阵中了解A和P T AP的 Cholesky 分解的差异,请参见下图。我从http://www.seas.ucla.edu/~vandenbe/103/lectures/chol.pdf拍摄了所有这些图片
根据讲义
存在许多用于选择好的置换矩阵 P 的启发式方法(我们没有介绍)。
我想知道其中一些方法是什么(C、C++ 甚至 Java 中的代码是理想的)。