Cập nhật đường chéo của ma trận xác định dương đối xứng


19

làma trận thưa thớt xác định đối xứng dương tính (SPD) n × n . G là một ma trận đường chéo thưa thớt. n lớn ( n > 10000) và số lượng khác không trong G thường là 100 ~ 1000.An×nGnnG

đã được factorized theo hình thức Cholesky như L D L T .ALDLT

Làm cách nào để cập nhật D hiệu quả khi A trở thành A + G ?LDAA+G


G chỉ có yếu tố tích cực? Nếu vậy, đây là một giới hạn trên tầm thường: xem cập nhật đường chéo là tổng của các cập nhật xếp hạng một. Có tồn tại các phương thức O (n ^ 2) để tính hệ số LDL ^ t của bản cập nhật cấp một (tìm kiếm google cung cấp các ví dụ). Sau đó, cập nhật đường chéo của bạn sẽ chạy trong O (rn ^ 2) trong đó r là số phần tử đường chéo khác không của G. Với tính chất cụ thể của các cập nhật này, có các phím tắt để lưu một số tính toán, nhưng không rõ liệu có thể giảm thứ tự dưới O (rn ^ 2).

3
Tôi đồng ý - Tôi không tin có bất kỳ cách nào để thực hiện cập nhật đường chéo cho hệ số nhân Cholesky nhanh hơn là chỉ lặp lại hệ số hóa, nhưng có thể thực hiện cập nhật một lần trong và bạn chỉ phải thực hiện một lần cho mỗi lần nonzero trên đường chéo của G . O(m2)G
Brian Borchers

10
Đối với n n z ( G ) trong hàng trăm, nó sẽ được khó khăn để đánh bại refactoring Một . Nếu kích thước của A trở nên lớn hơn nhiều và G rất thưa thớt, nó có thể trả hết. Trong mọi trường hợp, các cập nhật và xấp xỉ có thể được bao phủ theo chiều sâu bởi các đường chéo cộng với các hệ tuyến tính đối xứng cố định có thể được giải quyết trong thời gian bậc hai sau khi tính toán trước không? . n104nnz(G)AAG
Jed Brown

5
Jed, tôi nghĩ bạn nên quảng bá bình luận của mình để trả lời ở đây.
Michael Grant

Câu trả lời:


3

LDLT

nnz(G)

O(nnz(G)nnz(L))nnz(L)A

Có thể tải gói từ đây

Dưới đây là một số lưu ý mà chủ sở hữu gói đã đưa ra (Giáo sư Tim Davis):

API:

LD = ldlrowmod (LD, k) xóa hàng / cột k, bằng cách đặt A (:, k) và A (k, :) vào hàng thứ k / col của danh tính.

LD = ldlrowmod (LD, k, C) thay thế hàng thứ k / col của A (phải là hàng thứ k / col của danh tính) bằng cột C.

Phức tạp:

O(nnz(L))nnz(L)O(n)O(n)

Điền giảm hoán vị:

LDLTLDLTPAPTL

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.