I am interested in the Cholesky decomposition of large sparse matrices. The problem I'm having is that the Cholesky factors are not necessarily sparse (just like the product of two sparse matrices is not necessarily sparse).
For example for a matrix with non-zeros only along the first row, first column, and diagonal the Cholesky factors have 100% fill-in (the lower and upper triangles are 100% dense). In the image below the gray is non zero and the white is zero.
One solution I'm aware is to find a permutation P matrix and do the Cholesky decomposition of PTAP. For example with the same matrix by applying a permutation matrix which moves the first row to the last row and the first column to the last column the Cholesky factors are sparse.
My question is how to determine P in general?
To get an idea of the difference of the Cholesky decomposition of A and PTAP from a more realistic matrix see the image below. I took all these images from http://www.seas.ucla.edu/~vandenbe/103/lectures/chol.pdf
According to the lecture notes
many heuristic methods (that we don’t cover) exist for selecting good permutation matrices P.
I would like to know what some of these methods are (code in C, C++, or even Java would be ideal).
symamd
. – Cruciblen
for annxn
matrix. See cholesky-decomposition-of-large-sparse-matrices-in-java – Crucible