01. 첫 번째 수업: 데이터베이스 격자 타일링, 행렬의 구조
행렬(Matrix) 의 겉모습은 그냥 엑셀 스프레드시트 칸막이 구조와 $100\%$ 똑같습니다.
어떤 마법사 상점 카탈로그에 ‘포션 3개 수량, 단가 150골드’ 라고 텍스트로 치는 것보다 표로 정리하는 게 훨씬 컴팩트합니다. 수학자들은 그 표에서 의미 없는 테이블 바깥 제목과 텍스트 스킨을 다 벗겨 버리고, 오로지 이빨(숫자 데이터) 들만 남겨 대괄호 $\left[ \quad \right]$ 안에 가뒀습니다!
1. 행(Row) 과 열(Column)
행렬의 레이아웃 코딩을 긁어보죠. 가로줄 타일 라인을 행(Row) 이라고 부르며, 위에서부터 아래로 1행, 2행 순차 배치됩니다. 세로줄 기둥 라인을 열(Column) 이라 부르며, 왼쪽에서부터 오른쪽으로 쭉 1열, 2열 병렬됩니다.
$A \ = \ \begin{bmatrix} \mathbf{3} & \mathbf{5} & 1 \ 4 & \mathbf{-2} & 0 \end{bmatrix}$
위 파이프라인에서:
- $\mathbf{1행}$ 데이터 세트: $\left[ \ 3 \quad 5 \quad 1 \ \right]$ (가로 윗줄)
- $\mathbf{2열}$ 데이터 세트: $\begin{bmatrix} 5 \ -2 \end{bmatrix}$ (세로 정중앙 기둥 줄)
이 두 스크립트 격자가 겹쳐서 충돌하는 십자선 교차점의 코어 픽셀 값은?
바로 1행 2열의 원소, ”$\mathbf{5}$” 라는 숫자가 인덱싱(Indexing) 되어 튀어나옵니다! 배열 A[0][1] 이라고 코딩하는 것과 같습니다!
2. 행렬의 덩치 사이즈, “차원(Dimension)”
이 행렬 박스가 몇 평짜리 격자인지 파이프라인의 덩어리 크기를 표현할 때 수학자들은 “행 $\times$ 열” 로 호명합니다. 우리말로 “가로 3칸, 세로 2줄” 이 아니라 무조건 “(세로의 줄 수) 바이(by) (가로의 칸 수)” 로 거꾸로 불립니다.
아까 위의 행렬 $\mathbf{A}$ 를 볼까요? 위아래로 가로줄이 $2$개 깔려있고(2행), 좌우로 세로기둥이 $3$개가 있습니다(3열). 따라서 저 표의 사이즈 모델 규격명은 “$2 \times 3$ 행렬 (Two by Three Matrix)” 이라고 호명합니다.
3. 영행렬 (Zero Matrix)
게임 서버를 처음 부팅했을 때 유저의 인벤토리는 완전히 텅텅 비어있어야 합니다.
이 “비어있음” 의 더미 데이터를 공간 행렬에 덮어 씌울 땐, 모든 칸구석 요소가 0 으로 박제된 영행렬 (Zero Matrix, 기호 아웃라인 $O$) 을 도출해 깔아 놓습니다.
$O \ = \ \begin{bmatrix} 0 & 0 \ 0 & 0 \end{bmatrix}$
1장에서는 그저 표를 그리고 칸을 세는 노가다를 했습니다만, 2장에서 이 행렬 두 개를 허공에서 서로 충돌시켜 박치기 합체(Merge) 시키는 순간부터 기괴한 스칼라 연산의 스퍼트 폭풍이 시작됩니다!