본문 바로가기
알고리즘

[Algorithm] 행렬 저장 방법 (COO, CSR, CSC)

728x90
반응형

Normal Matrix

    - 기본적인 행렬 저장 방식입니다. 행렬값들을 순차적으로 저장하기 때문에 행렬의 사이즈만 따로 저장해주고 행렬의 인덱스값은 저장하지 않아도 됩니다. 행렬의 데이터 사이즈가 1byte라고 할 때, 아래의 행렬은 36bytes를 차지합니다.

 

COO(COOrdinate matrix)

    - COO 행렬은 기존 행렬처럼 각각의 값을 위치에 맞게 나열하여 저장하는 것이 아닌, (행, 열, 값)을 하나의 묶음으로 저장하는 방식입니다. 때문에 값이 비어있는 칸(값이 0인)이 많으면 많을 수록 효율적인 저장 방식입니다. 행열의 인덱스가 1byte라고 가정할 때 24bytes를 차지합니다.

CSR(Compressed Sparse Row)

    - COO 행렬의 Row인덱스를 압축하는 방식입니다. 이때, Row인덱스가 반드시 정렬 되어있어야 합니다. 압축 방식은 각각의 행의 인덱스가 몇개씩 저장되어있는지를 저장하는 방식입니다.

CSC(Compressed Sparse Column)

    - CSC도 CSR처럼 COO행렬을 압축합니다. 다만 다른점은 Row인덱스를 압축하는것이 아닌 Col인덱스를 압축합니다.

반응형