Разреженное сочетание столбца на основе ненулевого счета
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) являются тождества сочетания и вообще не помогает уменьшить заполнение с последующими факторизациями.
Алгоритм включает сортировку по счетам ненули в каждом столбце.