n × n G n n G 는 대칭 양수 한정 (SPD) 희소 행렬입니다. 는 희소 대각선 행렬입니다. 은 크고 ( > 10000) 이 아닌 숫자 는 일반적으로 100 ~ 1000입니다.
L D L T 는 cholesky 형식에서 로 인수 분해되었습니다 .
가 가 될 때 과 효율적 으로 업데이트하는 방법은 무엇입니까?
n × n G n n G 는 대칭 양수 한정 (SPD) 희소 행렬입니다. 는 희소 대각선 행렬입니다. 은 크고 ( > 10000) 이 아닌 숫자 는 일반적으로 100 ~ 1000입니다.
L D L T 는 cholesky 형식에서 로 인수 분해되었습니다 .
가 가 될 때 과 효율적 으로 업데이트하는 방법은 무엇입니까?
답변:
최신 버전의 CHOLMOD SuiteSparse 패키지 (베타 4.4.5)는 MATLAB (및 C) API를 사용하여 분해에 대한 대칭 행 / 열 (rank2 업데이트) 수정을 지원합니다 . 내 프로젝트 중 하나에서 성공적으로 사용했습니다.
이를 사용 하여 인수 분해에 대한 업데이트를 수행 할 수 있습니다 . 이 백서를 기반으로 합니다 .
따라서 복잡도는 입니다. 여기서 사용하여 A 때 상당히 감소 될 수 순열을 줄여 충전 희소위한A
패키지는 여기 에서 다운로드 할 수 있습니다
다음은 패키지 소유자가 제공 한 메모입니다 (팀 데이비스 교수).
API :
LD = ldlrowmod (LD, k)는 A (:, k) 및 A (k, :)를 k 번째 행 / 식별로 설정하여 행 / 열 k를 삭제합니다.
LD = ldlrowmod (LD, k, C)는 A의 k 번째 행 / 열 (k 번째 행 / 동일한 열이어야 함)을 스파 스 열 C로 바꿉니다.
복잡성:
행 추가 / 삭제는 최대 시간이 이 이면 시간은 최대 입니다.
순열 감소 채우기 :
드물게이 같이 사용자의 행렬을 인수 분해하는 좋은 아이디어입니다 = A. 오히려 우리를 뒤 바꿔 = 그래서 훨씬 적은 nonzeros 있습니다.