Symbolic Cholesky decomposition

In the mathematical subfield of numerical analysis the symbolic Cholesky decomposition is an algorithm used to determine the non-zero pattern for the $$L$$ factors of a symmetric sparse matrix when applying the Cholesky decomposition or variants.

Algorithm
Let $$A=(a_{ij}) \in \mathbb{K}^{n \times n}$$ be a sparse symmetric positive definite matrix with elements from a field $$\mathbb{K}$$, which we wish to factorize as $$A = LL^T\,$$.

In order to implement an efficient sparse factorization it has been found to be necessary to determine the non zero structure of the factors before doing any numerical work. To write the algorithm down we use the following notation:


 * Let $$\mathcal{A}_i$$ and $$\mathcal{L}_j$$ be sets representing the non-zero patterns of columns $i$ and $j$ (below the diagonal only, and including diagonal elements) of matrices $A$ and $L$ respectively.
 * Take $$\min\mathcal{L}_j$$ to mean the smallest element of $$\mathcal{L}_j$$.
 * Use a parent function $$\pi(i)\,\!$$ to define the elimination tree within the matrix.

The following algorithm gives an efficient symbolic factorization of $A$ :



\begin{align} & \pi(i):=0~\mbox{for all}~i\\ & \mbox{For}~i:=1~\mbox{to}~n\\ & \qquad \mathcal{L}_i := \mathcal{A}_i\\ & \qquad \mbox{For all}~j~\mbox{such that}~\pi(j) = i\\ & \qquad \qquad \mathcal{L}_i := (\mathcal{L}_i \cup \mathcal{L}_j)\setminus\{j\}\\ & \qquad \pi(i) := \min(\mathcal{L}_i\setminus\{i\}) \end{align} $$