Перестановка разреженного столбца на основе ненулевого числа
j = colperm(S)
j = colperm(S) генерирует вектор перестановки j таким, чтобы столбцы S(:,j) упорядочены по возрастающему количеству ненулевых записей. Иногда это полезно в качестве предварительного порядка для факторизации логической единицы; в этом случае использование lu(S(:,j)).
Если S симметричен, затем j = colperm(S) генерирует перестановку j так, что и строки, и столбцы S(j,j) упорядочены по возрастающему количеству ненулевых записей. Если S является положительным определенным, это иногда полезно в качестве предварительного заказа для факторизации Холеского; в этом случае использование chol(S(j,j)).
nоколо-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) является перестановкой тождества и вовсе не является подспорьем для уменьшения заполнения с последующими факторизациями.
Алгоритм включает сортировку по количеству ненулевых значений в каждом столбце.