2009 개정 교육과정에서부터 수학의 어려움을 줄이기 위해 행렬이 교육과정에서 제외되어 왔다
하지만 인공지능 분야 등 컴퓨터의 다양한 계산을 위해서는 행렬이 필수적으로 필요하므로 행렬에 대해서도 알아보도록 하겠다.
우리는 이미 행렬과 유사한 것을 프로그래밍에서 배워왔다. 그것은 2차원 배열이다.
행렬의 연산 방법은 수학을 공부하면서 배우도록 하고 이번 글에서는 행렬의 전치에 대해서 알아보도록 하겠다.
행렬의 구현
3X3 행렬은 2차원 배열에서 아래와 같이 구현할 수 있다.
int matrix[3][3] = {
{1, 2, 3},
{4, 5, 6},
{7, 8, 9}
};
행렬의 전치
행렬의 전치란 주어진 행렬에서 행과 열의 위치를 바꾸어 새로운 행렬을 만드는 과정이다.
void transpose_mat(int mat[ROW][COL], int trans[COL][ROW]){
int i, j;
for(i=0;i<ROW;i++){
for(j=0;j<COL;j++)
trans[j][i] = mat[i][j];
}
}
그럼 행렬을 전치하여 새로운 행렬을 만드는 이유는 무엇일까?
행렬의 연산을 편리하게 하기 위해서 이다. 예를 들어 행렬 A와 행렬 B의 곱셈을 하게 될 경우 A는 행의 각 값, B는 열의 각 값을 곱한 뒤 모두 더하게 된다. 이 과정에서 행과 열을 각각 접근하는 것보다 전치를 통해 모두 행으로 접근하여 계산을 간편하게 할 수 있다.
'컴퓨터 이론 > C언어 & 자료구조 & 알고리즘' 카테고리의 다른 글
18. 희소행렬의 전치 (Fast Transpose) (0) | 2023.03.31 |
---|---|
17. 희소행렬 (0) | 2023.03.31 |
15. 큐 (0) | 2023.03.30 |
14. 스택 (0) | 2023.03.30 |
13. 이중 연결리스트 (0) | 2023.03.28 |
댓글