Разреженное сочетание столбца на основе ненулевого счета
j = colperm(S)
j = colperm(S)
генерирует вектор сочетания j
таким образом, что столбцы S(:,j)
упорядочены в соответствии с увеличением количества ненулевых записей. Это иногда полезно в качестве предварительного упорядоченного расположения для LU-факторизации; в этом случае используйте lu(S(:,j))
.
Если S
симметрично, тогда j
=
colperm(S)
генерирует сочетание j
так что и строки, и столбцы S(j,j)
упорядочены в соответствии с увеличением количества ненулевых записей. Если S
положительно определено, это иногда полезно в качестве предварительного упорядоченного расположения для факторизации Холесского; в этом случае используйте chol(S(j,j))
.
The n
-by- n
матрица стрелок
A = [ones(1,n); ones(n-1,1) speye(n-1,n-1)]
имеет полную первую строку и столбец. Его LU-факторизация, lu(A)
, почти полностью полно. Оператор
j = colperm(A)
возвращает j
=
[2:n
1]
. Итак A(j,j)
отправляет полную строку и столбец внизу и сзади, и lu(A(j,j))
имеет ту же ненулевую структуру, что и A
сам.
С другой стороны, пример мяча Баки,
B = bucky
имеет в точности три ненулевых элемента в каждой строке и столбце, так что j = colperm(B)
являются тождества сочетания и вообще не помогает уменьшить заполнение с последующими факторизациями.
Алгоритм включает сортировку по счетам ненули в каждом столбце.