La última versión del paquete CHOLMOD SuiteSparse (beta 4.4.5) admite la modificación de una fila / columna simétrica (actualización de rango 2) para descomposición , utilizando una API matlab (y C). Lo usé con éxito en uno de mis proyectos.LDLT
Puede usarlo para realizar a la factorización. Se basa en este documento.nnz(G)
Por lo tanto, la complejidad será . Donde puede reducirse significativamente cuando se usa un relleno que reduce la permutación para un escasoO(nnz(G)∗nnz(L))nnz(L)AA
El paquete se puede descargar desde aquí.
A continuación hay algunas notas que dio el propietario del paquete (Prof. Tim Davis):
API:
LD = ldlrowmod (LD, k) elimina la fila / columna k, estableciendo A (:, k) y A (k, :) en la fila / columna k de identidad.
LD = ldlrowmod (LD, k, C) reemplaza la fila kth / col de A (que debe ser la fila kth / col de identidad) con la columna dispersa C.
Complejidad:
O(nnz(L))nnz(L)O(n)O(n)
Relleno que reduce la permutación:
LDLTLDLTPAPTL