Последняя версия пакета CHOLMOD SuiteSparse (бета-версия 4.4.5) поддерживает изменение симметричной строки / столбца (обновление ранга 2) для декомпозиции LDLT с использованием API-интерфейса matlab (и C). Я успешно использовал его в одном из моих проектов.
Вы можете использовать его для обновления nnz(G) факторизации. Он основан на этой статье.
Следовательно, сложность будет O(nnz(G)∗nnz(L)) . Где nnz(L) может быть значительно уменьшено при использовании перестановки уменьшения заполнения для разреженного A
Пакет можно скачать здесь
Ниже приведены некоторые примечания, сделанные владельцем пакета (проф. Тим Дэвис):
API:
LD = ldlrowmod (LD, k) удаляет строку / столбец k, устанавливая A (:, k) и A (k, :) в k-ую строку / столбец идентичности.
LD = ldlrowmod (LD, k, C) заменяет k-ю строку / столбец A (которая должна быть k-й строкой / столбцом идентификатора) на разреженный столбец C.
Сложность:
O(nnz(L))nnz(L)O(n)O(n)
Заполнить редукционную перестановку:
LDLTLDLTPAPTL