Остання версія пакету CHOLMOD SuiteSparse (бета-версія 4.4.5) підтримує зміну симетричного рядка / стовпця (оновлення rank2) для розкладання L D LТ , використовуючи API matlab (і C). Я успішно використовував це в одному зі своїх проектів.
Ви можете використовувати його для того, щоб робити n n z( G ) оновлення факторизації. Він заснований на цій роботі.
Тому складність буде О( n n z( G ) ∗ n n z( L )) . Де n nz( L ) може бути значно зменшено при використанні наповнення, що зменшує перестановку для розрідженого А
Пакет можна завантажити тут
Нижче наведено кілька записок, які дав власник пакету (професор Тім Девіс):
API:
LD = ldlrowmod (LD, k) видаляє рядок / стовпець k, встановлюючи A (:, k) та A (k, :) до k-го рядка / стовпчика ідентичності.
LD = ldlrowmod (LD, k, C) замінює k-й рядок / стовпчик A (який повинен бути k-м рядком / стовпчиком тотожності) на рідкий стовпчик C.
Складність:
O ( n n z( L ) )n n z( L )O ( n )O ( n )
Заповніть зменшення перестановки:
L D LТL D LТПА ПТL