728x90
반응형
행렬에 0이 많이 포함된 경우에 희소행렬이라고 한다.
배열에 희소행렬을 그대로 표현할 경우 공간낭비가 심하게 된다.
낭비되는 공간을 줄이기 위한 방법은 어떤게 있을까?
이차원 배열에 표현된 희소행렬을
(행,열,값)으로 묶어 표현하는 방법이 있다
1 | 0 | 0 |
0 | 0 | 5 |
0 | 0 | 0 |
이런 배열일 있다고 하자.
이 때 (행,열,값)으로 묶어 표현하면
[(0,0,1),(1,2,5)] 로 적을 수 있겠다.
근데 이 방법이 항상 효율적인건 아니다.
n*n의 행렬이 있을 때, 0이 아닌 값이 k개 있다고 하자
2차원 배열로 행렬을 그대로 표현하면 n^2의 공간이 필요할 것이며
(행,열,값)으로 묶어 표현하면 3*k의 공간이 필요할 것이다.
이 방법이 효율적일 때는 k<(n^2)/3 이 된다.
그건그렇고..
(행,열,값)으로 표현하면
연산은 어떻게 하지? ==> 다음시간에 계속..
728x90
반응형
'2022-2 > 자료구조' 카테고리의 다른 글
2장 - 희소행렬의 곱 C언어 구현 (0) | 2022.09.28 |
---|---|
2장- 희소행렬의 전치 C언어 구현 (2) | 2022.09.28 |
2장 - 다항식의 덧셈 구현하기 (1) | 2022.09.25 |
배열과 구조체, 공용체, 순서리스트 (2) | 2022.09.21 |
마방진 그리기(홀수형) (0) | 2022.09.18 |
댓글