colperm
0이 아닌 요소의 개수에 기반한 희소 열 치환(Column Permutation)
구문
j = colperm(S)
설명
j = colperm(S)
는 치환 벡터 j
를 생성하여 S(:,j)
의 열이 0이 아닌 항목의 증가하는 개수에 따라 정렬되도록 합니다. 이는 LU 분해에 대한 전위(Preordering)로 유용할 수 있습니다. 이 경우 lu(S(:,j))
를 사용해야 합니다.
S
가 대칭인 경우 j
=
colperm(S)
는 치환 j
를 생성하여 S(j,j)
의 행과 열이 모두 0이 아닌 항목의 증가하는 개수에 따라 정렬되도록 합니다. 이는 S
가 양의 정부호인 경우 촐레스키 분해(Cholesky Factorization)에 대한 전위(Preordering)로 유용할 수 있습니다. 이 경우 chol(S(j,j))
를 사용해야 합니다.
예제
다음 100
×100
화살촉 표시 모양 행렬의 경우
n = 100; A = [ones(1,n); ones(n-1,1) speye(n-1,n-1)]
첫 번째 행과 열이 비희소(Full)입니다. LU 분해 lu(A)
는 거의 완전히 비희소(Full)입니다. 다음 명령문은
j = colperm(A)
j
=
[2:n
1]
을 반환합니다. 따라서 A(j,j)
는 비희소(Full) 행과 열을 맨 아래와 뒤쪽으로 보내고 lu(A(j,j))
는 A
자신과 동일한 0이 아닌 구조체를 가집니다.
반면에, 버키 볼(Bucky Ball) 예제에서
B = bucky
각 행과 열에 0이 아닌 요소가 정확히 3개 있으므로 j = colperm(B)
는 항등 치환(Identity Permutation)이며 그 이후의 분해로 필인(Fill-in)을 줄이는 데 전혀 도움이 되지 않습니다.
알고리즘
이 알고리즘은 각 열에서 0이 아닌 요소의 개수 정렬과 관련 있습니다.
확장 기능
버전 내역
R2006a 이전에 개발됨