인접행렬과 행렬 곱셈 A²
← SNA 이론 · 단계별 학습 차례

단원 1-1·1-2Adjacency Matrix & Matrix Multiplication

인접행렬과 행렬 곱셈 A²

SNA 이론 · 단계별 학습STAGED+ 스터디

1. 오늘의 네트워크 (Today's Network)

학생 5명(M1,…,M5M_1,\dots,M_5)에게 "친하게 지내는 친구"를 지명하게 한 방향 네트워크. 지명 목록은 다음 7건이다:

M1→M2 M1→M3 M1→M5 M2→M3 M3→M1 M3→M4 M5→M1

5명 방향 네트워크
양방향 화살표(M1↔M3, M1↔M5)는 상호 지명, 단방향은 일방 지명

2. 단원 1-1: 인접행렬의 정의와 표기 (Adjacency Matrix: Definition & Notation)

정의. 학생 수가 nn일 때 인접행렬 AA는 n×nn\times n 행렬이고, A[i,j]  =  {1학생 i가 학생 j를 지명0지명하지 않음 A[i,j] \;=\; \begin{cases} 1 & \text{학생 } i \text{가 학생 } j \text{를 지명} \\[2pt] 0 & \text{지명하지 않음} \end{cases} 행 ii = 지명하는 사람, 열 jj = 지명받는 사람. 자기 지명은 없다고 약속: A[i,i]=0A[i,i]=0.

위 7건의 지명을 행렬로 옮기면:

A=M1M2M3M4M5M101101M200100M310010M400000M510000 A=\begin{array}{c|ccccc} & M_1 & M_2 & M_3 & M_4 & M_5\\ \hline M_1 & 0 & 1 & 1 & 0 & 1\\ M_2 & 0 & 0 & 1 & 0 & 0\\ M_3 & 1 & 0 & 0 & 1 & 0\\ M_4 & 0 & 0 & 0 & 0 & 0\\ M_5 & 1 & 0 & 0 & 0 & 0 \end{array}

행과 열을 읽는 법 (Reading Rows and Columns)

  • ii번째 행 A[i, ]A[i,\,] = "ii가 지명한 사람 목록". 예: A[1, ]=(0,1,1,0,1)A[1,\,]=(0,1,1,0,1) → M1은 M2, M3, M5를 지명.
  • jj번째 열 A[ ,j]A[\,,j] = "jj를 지명한 사람 목록". 예: A[ ,1]=(0,0,1,0,1)A[\,,1]=(0,0,1,0,1) → M1을 지명한 사람은 M3, M5.
  • 비대칭: A[1,2]=1A[1,2]=1이지만 A[2,1]=0A[2,1]=0. 방향 네트워크에서는 A[i,j]≠A[j,i]A[i,j]\ne A[j,i]일 수 있고, 이 어긋남 자체가 정보다(일방 지명 = 관계 인식의 불일치).

3. 행렬 곱셈의 일반 정의 — "행 × 열" (Matrix Multiplication: Row × Column)

정의. 두 행렬의 곱 C=ABC = AB의 (i,j)(i,j) 원소는 C[i,j]  =  ∑k=1nA[i,k]⋅B[k,j]  =  A[i,1]B[1,j]+A[i,2]B[2,j]+⋯+A[i,n]B[n,j] C[i,j] \;=\; \sum_{k=1}^{n} A[i,k]\cdot B[k,j] \;=\; A[i,1]B[1,j] + A[i,2]B[2,j] + \cdots + A[i,n]B[n,j] 즉 AA의 ii번째 행과 BB의 jj번째 열을 나란히 놓고, 같은 위치끼리 곱한 뒤 모두 더한다.

3-1. 먼저 보통 숫자로 — 2×2 곱셈을 사람이 푸는 과정 (A Worked Example with Ordinary Numbers)

규칙은 하나뿐이다: 왼쪽 행렬에서 ii행을 가로로, 오른쪽 행렬에서 jj열을 세로로 읽어서, 첫째끼리·둘째끼리 곱한 뒤 더한다. 결과의 [1,1][1,1] 자리를 구해 보자:

(1234)(5678)⟹C[1,1]=1⋅5+2⋅7=5+14=19 \begin{pmatrix} \color{#2563eb}{1} & \color{#2563eb}{2} \\ 3 & 4 \end{pmatrix} \begin{pmatrix} \color{#d97706}{5} & 6 \\ \color{#d97706}{7} & 8 \end{pmatrix} \qquad\Longrightarrow\qquad C[1,1] = \textcolor{#2563eb}{1}\cdot\textcolor{#d97706}{5} + \textcolor{#2563eb}{2}\cdot\textcolor{#d97706}{7} = 5 + 14 = 19

나머지 세 자리도 전부 같은 동작의 반복이다. 행과 열만 바꿔 가면서:

C[1,2]=1⋅6+2⋅8=6+16=22(1행×2열)C[2,1]=3⋅5+4⋅7=15+28=43(2행×1열)C[2,2]=3⋅6+4⋅8=18+32=50(2행×2열)⟹(1234)(5678)=(19224350) \begin{aligned} C[1,2] &= 1\cdot 6 + 2\cdot 8 = 6+16 = 22 &(\text{1행}\times\text{2열})\\ C[2,1] &= 3\cdot 5 + 4\cdot 7 = 15+28 = 43 &(\text{2행}\times\text{1열})\\ C[2,2] &= 3\cdot 6 + 4\cdot 8 = 18+32 = 50 &(\text{2행}\times\text{2열}) \end{aligned} \qquad\Longrightarrow\qquad \begin{pmatrix} 1 & 2 \\ 3 & 4 \end{pmatrix} \begin{pmatrix} 5 & 6 \\ 7 & 8 \end{pmatrix} = \begin{pmatrix} 19 & 22 \\ 43 & 50 \end{pmatrix}

3-2. 같은 요령을 A×AA\times A에 — 행렬을 실제로 나란히 놓고 (The Same Method Applied to A×AA\times A)

A2A^2은 AA 두 개를 나란히 놓고 곱하는 것이다. (A2)[1,1](A^2)[1,1]을 구하려면 왼쪽 AA에서 M1의 행, 오른쪽 AA에서 M1의 열만 보면 된다:

M1M2M3M4M5M101101M200100M310010M400000M510000  ×  M1M2M3M4M5M101101M200100M310010M400000M510000 \begin{array}{c|ccccc} & M_1 & M_2 & M_3 & M_4 & M_5\\ \hline M_1 & \color{#2563eb}{0} & \color{#2563eb}{1} & \color{#2563eb}{1} & \color{#2563eb}{0} & \color{#2563eb}{1}\\ M_2 & 0 & 0 & 1 & 0 & 0\\ M_3 & 1 & 0 & 0 & 1 & 0\\ M_4 & 0 & 0 & 0 & 0 & 0\\ M_5 & 1 & 0 & 0 & 0 & 0 \end{array} \;\times\; \begin{array}{c|ccccc} & M_1 & M_2 & M_3 & M_4 & M_5\\ \hline M_1 & \color{#d97706}{0} & 1 & 1 & 0 & 1\\ M_2 & \color{#d97706}{0} & 0 & 1 & 0 & 0\\ M_3 & \color{#d97706}{1} & 0 & 0 & 1 & 0\\ M_4 & \color{#d97706}{0} & 0 & 0 & 0 & 0\\ M_5 & \color{#d97706}{1} & 0 & 0 & 0 & 0 \end{array}

파란 행을 가로로, 주황 열을 세로로 꺼내 짝을 맞추면:

중간 학생 kkM1M2M3M4M5합
행 A[1,k]A[1,k] (가로로 읽음)011012
열 A[k,1]A[k,1] (세로로 읽음)00101
짝끼리 곱00101
(A2)[1,1]=0⋅0+1⋅0+1⋅1+0⋅0+1⋅1=2 (A^2)[1,1] = \textcolor{#2563eb}{0}\cdot\textcolor{#d97706}{0} + \textcolor{#2563eb}{1}\cdot\textcolor{#d97706}{0} + \textcolor{#2563eb}{1}\cdot\textcolor{#d97706}{1} + \textcolor{#2563eb}{0}\cdot\textcolor{#d97706}{0} + \textcolor{#2563eb}{1}\cdot\textcolor{#d97706}{1} = \mathbf{2}

이 2가 결과 행렬의 (1행, 1열) 자리에 들어간다. A2A^2의 나머지 24칸도 전부 "행 하나, 열 하나 골라 짝 곱을 더한다"는 같은 동작의 반복일 뿐이다.

3-3. 일반식과 0·1의 논리 (General Formula & Boolean Logic)

지금 한 손 계산을 일반식으로 쓰면 (BB 자리에 AA):

(A2)[i,j]  =  ∑k=15A[i,k]⋅A[k,j] (A^2)[i,j] \;=\; \sum_{k=1}^{5} A[i,k]\cdot A[k,j]

0과 1로만 이루어진 행렬에서는 항 하나하나가 논리 판정이 된다:

A[i,k]⋅A[k,j]={1i→k 지명이 있고 그리고  k→j 지명도 있다0둘 중 하나라도 없다 A[i,k]\cdot A[k,j] = \begin{cases} 1 & i\to k \text{ 지명이 있고 } \textbf{그리고} \; k\to j \text{ 지명도 있다}\\[2pt] 0 & \text{둘 중 하나라도 없다} \end{cases}

곱셈이 AND 역할을 하는 것이다. 그리고 k=1,…,5k=1,\dots,5에 대한 합은 "중간에 거칠 수 있는 사람 kk를 모두 시험해 본 개수"이므로:

(A2)[i,j]  =  i에서 j로 가는 2단계 경로의 개수 (A^2)[i,j] \;=\; i\text{에서 } j\text{로 가는 } \textbf{2단계 경로의 개수} 행렬 곱셈이라는 기계적 연산 = "친구의 친구 세기"라는 관계 연산.

4. (A2)[1,1](A^2)[1,1] 완전 전개 (Full Expansion)

§3-2에서 기계적으로 얻은 값 2를, 이번에는 각 항이 관계에서 무엇을 뜻하는지로 다시 읽는다. 같은 행과 열을 꺼내 놓고:

A[1, ]=(0,  1,  1,  0,  1),A[ ,1]=(0,  0,  1,  0,  1) A[1,\,]=(0,\;1,\;1,\;0,\;1), \qquad A[\,,1]=(0,\;0,\;1,\;0,\;1) (A2)[1,1]=∑k=15A[1,k]⋅A[k,1] (A^2)[1,1]=\sum_{k=1}^{5} A[1,k]\cdot A[k,1]
kkA[1,k]A[1,k]
(M1→kk?)
A[k,1]A[k,1]
(kk→M1?)
곱해석
1000자기 지명 없음
2100M1→M2는 있으나 M2→M1이 없어 끊김
3111M1→M3→M1
4000어느 쪽 지명도 없음
5111M1→M5→M1
합2
(A2)[1,1]=0⋅0+1⋅0+1⋅1+0⋅0+1⋅1=2 (A^2)[1,1] = 0\cdot0 + 1\cdot0 + 1\cdot1 + 0\cdot0 + 1\cdot1 = \mathbf{2}

"자기 자신으로 돌아오는 2단계 경로"란 곧 상호 지명이다. 내가 지명한 kk가 나를 되지명해야만 i→k→ii\to k\to i가 성립하기 때문. M1은 M3, M5와 서로 지명하는 사이라 값이 2다.

5. 1행의 나머지 항 (Remaining Terms of Row 1)

같은 방법으로 A[1, ]=(0,1,1,0,1)A[1,\,]=(0,1,1,0,1)을 각 열과 곱한다. 0이 되는 항은 생략하지 않고 모두 쓴다.

(A2)[1,2](A^2)[1,2] — 열 A[ ,2]=(1,0,0,0,0)A[\,,2]=(1,0,0,0,0)

0⋅1+1⋅0+1⋅0+0⋅0+1⋅0=0 0\cdot1 + 1\cdot0 + 1\cdot0 + 0\cdot0 + 1\cdot0 = \mathbf{0}

M2를 지명하는 사람은 M1뿐인데(A[1,2]=1A[1,2]=1이 열에서 유일한 1), 정작 M1 자신은 자기를 지명할 수 없다. 그래서 M2로 가는 2단계 길은 없다 — M1→M2는 직접 지명 하나뿐.

(A2)[1,3](A^2)[1,3] — 열 A[ ,3]=(1,1,0,0,0)A[\,,3]=(1,1,0,0,0)

0⋅1+1⋅1⏟k=2+1⋅0+0⋅0+1⋅0=1경로 M1→M2→M3 0\cdot1 + \underbrace{1\cdot1}_{k=2} + 1\cdot0 + 0\cdot0 + 1\cdot0 = \mathbf{1} \qquad \text{경로 } \color{green}{M_1\to M_2\to M_3}

M1은 M3을 직접 지명하면서(1단계), M2를 거치는 2단계 길도 갖고 있다 — 연결이 이중으로 든든한 관계.

(A2)[1,4](A^2)[1,4] — 열 A[ ,4]=(0,0,1,0,0)A[\,,4]=(0,0,1,0,0)

0⋅0+1⋅0+1⋅1⏟k=3+0⋅0+1⋅0=1경로 M1→M3→M4 0\cdot0 + 1\cdot0 + \underbrace{1\cdot1}_{k=3} + 0\cdot0 + 1\cdot0 = \mathbf{1} \qquad \text{경로 } \color{green}{M_1\to M_3\to M_4}

M1은 M4를 직접 지명하지 않지만 M3을 거치면 닿는다 — 직접 관계 없이 존재하는 간접 채널.

(A2)[1,5](A^2)[1,5] — 열 A[ ,5]=(1,0,0,0,0)A[\,,5]=(1,0,0,0,0)

0⋅1+1⋅0+1⋅0+0⋅0+1⋅0=0 0\cdot1 + 1\cdot0 + 1\cdot0 + 0\cdot0 + 1\cdot0 = \mathbf{0}

M5를 지명하는 사람 역시 M1뿐이라, [1,2]와 같은 이유로 0.

6. 지름길: A2A^2의 ii행 = 내가 지명한 사람들의 행을 합친 것 (Shortcut: Sum of Out-Neighbors' Rows)

행 단위로 보면 계산이 훨씬 빨라진다. ii행에서 1인 위치(= ii가 지명한 사람들)만 살아남으므로:

(A2)[i, ]  =  ∑k: A[i,k]=1A[k, ] (A^2)[i,\,] \;=\; \sum_{k:\,A[i,k]=1} A[k,\,]
  • M2는 M3만 지명 → (A2)[2, ]=A[3, ]=(1,0,0,1,0)(A^2)[2,\,] = A[3,\,] = (1,0,0,1,0). M2의 2단계 세계는 M3의 1단계 세계와 같다.
  • M5는 M1만 지명 → (A2)[5, ]=A[1, ]=(0,1,1,0,1)(A^2)[5,\,] = A[1,\,] = (0,1,1,0,1).
  • M1은 M2, M3, M5를 지명 → (A2)[1, ]=A[2, ]+A[3, ]+A[5, ]=(0,0,1,0,0)+(1,0,0,1,0)+(1,0,0,0,0)=(2,0,1,1,0)(A^2)[1,\,] = A[2,\,]+A[3,\,]+A[5,\,] = (0,0,1,0,0)+(1,0,0,1,0)+(1,0,0,0,0) = (2,0,1,1,0). §4~5의 결과와 정확히 일치.
교실 언어로: "내 두 다리 인맥은, 내가 지명한 친구들의 한 다리 인맥을 모두 합친 것." 친구를 한 명만 지명한 학생(M2, M5)의 간접 인맥은 그 한 명에게 전적으로 의존한다 — 그 친구가 결석하거나 전학 가면 간접 채널이 통째로 사라진다.

7. A2A^2 전체와 모든 경로 (The Full A2A^2 & All 2-Step Paths)

A2=M1M2M3M4M5M120110M210010M301101M400000M501101 A^2=\begin{array}{c|ccccc} & M_1 & M_2 & M_3 & M_4 & M_5\\ \hline M_1 & \mathbf{2} & 0 & \mathbf{1} & \mathbf{1} & 0\\ M_2 & \mathbf{1} & 0 & 0 & \mathbf{1} & 0\\ M_3 & 0 & \mathbf{1} & \mathbf{1} & 0 & \mathbf{1}\\ M_4 & 0 & 0 & 0 & 0 & 0\\ M_5 & 0 & \mathbf{1} & \mathbf{1} & 0 & \mathbf{1} \end{array}

0이 아닌 모든 원소의 경로:

원소값경로비고
[1,1][1,1]2M1→M3→M1, M1→M5→M1상호 지명 2건
[1,3][1,3]1M1→M2→M3직접 지명과 병존
[1,4][1,4]1M1→M3→M4간접뿐
[2,1][2,1]1M2→M3→M1간접뿐
[2,4][2,4]1M2→M3→M4간접뿐
[3,2][3,2]1M3→M1→M2간접뿐
[3,3][3,3]1M3→M1→M3상호 지명 1건
[3,5][3,5]1M3→M1→M5간접뿐
[5,2][5,2]1M5→M1→M2간접뿐
[5,3][5,3]1M5→M1→M3연습문제 1
[5,5][5,5]1M5→M1→M5상호 지명 1건

M4의 행이 전부 0인 이유: A[4, ]=(0,0,0,0,0)A[4,\,]=(0,0,0,0,0) — 지명이 하나도 없으니 어떤 2단계 경로의 출발점도 될 수 없다.

8. 대각선과 상호 지명 (Diagonal & Reciprocated Ties)

diag⁡(A2)=(2, 0, 1, 0, 1) \operatorname{diag}(A^2) = (2,\,0,\,1,\,0,\,1)
(A2)[i,i]=∑kA[i,k]⋅A[k,i]=i가 맺은 상호 지명의 수 (A^2)[i,i] = \sum_k A[i,k]\cdot A[k,i] = i\text{가 맺은 상호 지명의 수} 한 쌍의 상호 지명(i↔ki\leftrightarrow k)은 ii의 대각선과 kk의 대각선에 한 번씩, 총 두 번 세어지므로 학급 전체 상호 지명 쌍 수  =  12∑i(A2)[i,i]  =  2+0+1+0+12  =  2쌍 \text{학급 전체 상호 지명 쌍 수} \;=\; \frac{1}{2}\sum_{i}(A^2)[i,i] \;=\; \frac{2+0+1+0+1}{2} \;=\; \mathbf{2}\text{쌍} (M1–M3, M1–M5). 행렬 곱 한 번으로 "서로 친한 쌍의 수"가 나온다.

9. 주의: AkA^k가 세는 것은 '걷기(walk)' (Caution: Walks, Not Paths)

AkA^k의 원소는 길이 kk의 걷기의 수다. 걷기는 같은 사람을 다시 지나도 된다. 2단계까지는 중간에 한 명뿐이라 문제가 없지만, 3단계부터는 재방문이 섞인다.

예: (A3)[1,3]=2(A^3)[1,3]=2인데 그 두 걷기는 M1→M3→M1→M3, M1→M5→M1→M3 — 둘 다 M1이나 M3을 다시 지난다. "서로 다른 사람만 거쳐 M3에 닿는 3단계 경로가 2개"라고 읽으면 틀린다. 정확한 구분은 단원 1-3에서.

10. R 검증 (Verification in R)

A <- matrix(c(0,1,1,0,1,
              0,0,1,0,0,
              1,0,0,1,0,
              0,0,0,0,0,
              1,0,0,0,0), byrow=TRUE, nrow=5,
            dimnames=list(paste0("M",1:5), paste0("M",1:5)))

A[1,] * A[,1]        # (A²)[1,1]의 항별 곱
## M1 M2 M3 M4 M5
##  0  0  1  0  1        ← §4 표의 '곱' 열과 일치

sum(A[1,] * A[,1])
## [1] 2

A2 <- A %*% A        # %*% : 행렬 곱 (일반 * 는 원소별 곱이므로 주의)
A2
##    M1 M2 M3 M4 M5
## M1  2  0  1  1  0
## M2  1  0  0  1  0
## M3  0  1  1  0  1
## M4  0  0  0  0  0
## M5  0  1  1  0  1

diag(A2)             # 상호 지명 수
## M1 M2 M3 M4 M5
##  2  0  1  0  1

sum(diag(A2))/2      # 학급 전체 상호 쌍 수
## [1] 2

11. 교실 해석 (Classroom Interpretation)

  • (A2)[i,i](A^2)[i,i] = 상호 지명 수 → 관계의 안정성 지표. 지명을 해도 대각선이 0인 학생(M2형)은 관계가 전부 일방향 — "다가가지만 받아들여지지 않는" 신호.
  • 직접 지명 없이 (A2)[i,j]>0(A^2)[i,j]>0 → "친구의 친구" 채널. 소문과 정보가 흐르는 간접 통로이고, 새 친구 관계가 생겨나기 가장 쉬운 자리이기도 하다(3단계 전이성 개념으로 이어짐).
  • 한 명만 지명한 학생(M2, M5형) → §6에서 본 대로 간접 인맥 전체가 그 한 명에게 의존. 그 친구의 부재가 곧 관계망 단절로 이어질 수 있는 취약 구조.
  • M4형(행 전체 0) → 스스로 지명하지 않는 학생은 어떤 간접 경로의 출발점도 될 수 없다. 받는 지명이 있어도 관계의 '흐름'에서는 종착지일 뿐.

12. 연습문제 (다음 세션 시작 때 확인) (Exercises)

문제 1. (A2)[5,3](A^2)[5,3]을 §4처럼 표로 완전 전개하시오. 다섯 항 A[5,k]⋅A[k,3]A[5,k]\cdot A[k,3]을 모두 쓰고, 0이 아닌 항이 나타내는 경로를 말로 설명할 것.
R 확인: sum(A[5,]*A[,3])

문제 2. (A3)[1,1]=∑k(A2)[1,k]⋅A[k,1](A^3)[1,1]=\sum_k (A^2)[1,k]\cdot A[k,1]을 계산하시오. §4~5에서 구한 (A2)[1, ]=(2,0,1,1,0)(A^2)[1,\,]=(2,0,1,1,0)과 열 A[ ,1]=(0,0,1,0,1)A[\,,1]=(0,0,1,0,1)을 그대로 쓰면 된다. 나온 값이 나타내는 3단계 순환 경로는 무엇인가? 그 경로에 참여하는 세 학생의 관계를 교실 언어로 해석해 보시오.

먼저 스스로 풀어 본 뒤 §13 해설과 맞춰 볼 것.

13. 연습문제 해설과 답 (Solutions)

13-1. 문제 1 — (A2)[5,3](A^2)[5,3] (Two-Step Paths from M5 to M3)

무엇을 곱하는가. (A2)[5,3](A^2)[5,3]이니 왼쪽 AA에서 M5의 행(=M5가 지명한 사람), 오른쪽 AA에서 M3의 열(=M3을 지명한 사람)을 꺼낸다. §3-2와 똑같은 동작이고 고르는 행·열만 바뀐다:

M1M2M3M4M5M101101M200100M310010M400000M510000  ×  M1M2M3M4M5M101101M200100M310010M400000M510000 \begin{array}{c|ccccc} & M_1 & M_2 & M_3 & M_4 & M_5\\ \hline M_1 & 0 & 1 & 1 & 0 & 1\\ M_2 & 0 & 0 & 1 & 0 & 0\\ M_3 & 1 & 0 & 0 & 1 & 0\\ M_4 & 0 & 0 & 0 & 0 & 0\\ M_5 & \color{#2563eb}{1} & \color{#2563eb}{0} & \color{#2563eb}{0} & \color{#2563eb}{0} & \color{#2563eb}{0} \end{array} \;\times\; \begin{array}{c|ccccc} & M_1 & M_2 & M_3 & M_4 & M_5\\ \hline M_1 & 0 & 1 & \color{#d97706}{1} & 0 & 1\\ M_2 & 0 & 0 & \color{#d97706}{1} & 0 & 0\\ M_3 & 1 & 0 & \color{#d97706}{0} & 1 & 0\\ M_4 & 0 & 0 & \color{#d97706}{0} & 0 & 0\\ M_5 & 1 & 0 & \color{#d97706}{0} & 0 & 0 \end{array} A[5, ]=( 1,  0,  0,  0,  0 ),A[ ,3]=( 1,  1,  0,  0,  0 ) A[5,\,]=(\,\textcolor{#2563eb}{1},\;\textcolor{#2563eb}{0},\;\textcolor{#2563eb}{0},\;\textcolor{#2563eb}{0},\;\textcolor{#2563eb}{0}\,), \qquad A[\,,3]=(\,\textcolor{#d97706}{1},\;\textcolor{#d97706}{1},\;\textcolor{#d97706}{0},\;\textcolor{#d97706}{0},\;\textcolor{#d97706}{0}\,)

다섯 항 완전 전개. 0이 되는 항도 하나도 빼지 않고 쓴다.

중간 학생 kkA[5,k]A[5,k]
(M5→kk?)
A[k,3]A[k,3]
(kk→M3?)
곱왜 그 값인가
1111M5→M1 있고 M1→M3 있음 → M5→M1→M3
2010M2→M3은 있지만 M5가 M2를 지명하지 않아 첫 걸음이 없다
3000M5→M3 직접 지명도 없고, M3→M3 자기 지명도 없음
4000양쪽 다 없음 (M4는 아무도 지명하지 않음)
5000M5→M5 자기 지명 없음
합1
(A2)[5,3]=1⋅1+0⋅1+0⋅0+0⋅0+0⋅0=1 (A^2)[5,3] = \textcolor{#2563eb}{1}\cdot\textcolor{#d97706}{1} + \textcolor{#2563eb}{0}\cdot\textcolor{#d97706}{1} + \textcolor{#2563eb}{0}\cdot\textcolor{#d97706}{0} + \textcolor{#2563eb}{0}\cdot\textcolor{#d97706}{0} + \textcolor{#2563eb}{0}\cdot\textcolor{#d97706}{0} = \mathbf{1}

답: (A2)[5,3]=1(A^2)[5,3]=1 — 살아남은 항은 k=1k=1, 경로는 M5→M1→M3 하나다.

M5의 행에 1이 단 하나(M1)뿐이라, 애초에 검사할 후보가 k=1k=1 하나였다. 지명이 적은 학생의 행은 이렇게 계산이 짧아진다.

왜 이 값이 중요한가. 원래 행렬에서 A[5,3]=0A[5,3]=0이다 — M5는 M3을 직접 지명하지 않았다. 그런데 (A2)[5,3]=1(A^2)[5,3]=1이다. 즉 0에서 1로 바뀐 자리이고, 이것이 A2A^2을 계산하는 이유다.

교실 해석. M5와 M3은 서로 이름도 잘 모르는 사이일 수 있다(직접 관계 0). 하지만 M1을 통하면 한 다리로 연결된다. 모둠을 짤 때 M5와 M3을 같은 조에 넣으려면 M1을 함께 넣는 것이 안전하다 — 둘을 이어 줄 유일한 연결고리이기 때문이다. 반대로 M1이 전학을 가면 M5는 M3 쪽 관계망에서 완전히 끊긴다.

13-2. 문제 2 — (A3)[1,1](A^3)[1,1] (Three-Step Closed Walks from M1)

먼저 막히는 지점부터. 문제 2가 어려운 이유는 kk의 정체가 바뀌기 때문이다. A3=A2×AA^3 = A^2\times A이므로 곱셈 규칙("행 × 열")은 그대로인데 왼쪽 행렬이 AA가 아니라 A2A^2다.

왼쪽 조각kk의 정체오른쪽 조각합계 걸음
(A2)[1,1](A^2)[1,1]A[1,k]A[1,k] = 1걸음1걸음 뒤 도착지A[k,1]A[k,1] = 1걸음1+1 = 2
(A3)[1,1](A^3)[1,1](A2)[1,k](A^2)[1,k] = 2걸음2걸음 뒤 도착지A[k,1]A[k,1] = 1걸음2+1 = 3

그러니 이번에 꺼낼 두 벡터는 A2A^2의 M1 행과 AA의 M1 열이다. A2A^2은 §7에서 이미 다 구해 놓았으므로 새로 계산할 것이 없다:

A2M1M2M3M4M5M120110M210010M301101M400000M501101  ×  AM1M2M3M4M5M101101M200100M310010M400000M510000 \begin{array}{c|ccccc} A^2 & M_1 & M_2 & M_3 & M_4 & M_5\\ \hline M_1 & \color{#2563eb}{2} & \color{#2563eb}{0} & \color{#2563eb}{1} & \color{#2563eb}{1} & \color{#2563eb}{0}\\ M_2 & 1 & 0 & 0 & 1 & 0\\ M_3 & 0 & 1 & 1 & 0 & 1\\ M_4 & 0 & 0 & 0 & 0 & 0\\ M_5 & 0 & 1 & 1 & 0 & 1 \end{array} \;\times\; \begin{array}{c|ccccc} A & M_1 & M_2 & M_3 & M_4 & M_5\\ \hline M_1 & \color{#d97706}{0} & 1 & 1 & 0 & 1\\ M_2 & \color{#d97706}{0} & 0 & 1 & 0 & 0\\ M_3 & \color{#d97706}{1} & 0 & 0 & 1 & 0\\ M_4 & \color{#d97706}{0} & 0 & 0 & 0 & 0\\ M_5 & \color{#d97706}{1} & 0 & 0 & 0 & 0 \end{array} (A3)[1,1]=∑k=15(A2)[1,k]⋅A[k,1] (A^3)[1,1]=\sum_{k=1}^{5} (A^2)[1,k]\cdot A[k,1]
kk(A2)[1,k](A^2)[1,k]
M1→…→kk 2걸음
A[k,1]A[k,1]
kk→M1 1걸음
곱왜 그 값인가
12002걸음으로 M1에 돌아오는 길은 2개 있지만, 거기서 M1→M1 자기 지명이 없어 3번째 걸음을 못 뗀다
2000M2를 지명한 사람은 M1뿐 → 2걸음으로는 M2에 도달 불가. 게다가 M2→M1도 없다
31112걸음 M1→M2→M3 + 1걸음 M3→M1 → 연결됨
41002걸음으로 M4까지는 간다(M1→M3→M4) 그러나 M4는 아무도 지명하지 않아 돌아올 길이 없다
5010M5→M1은 있지만, M5를 지명한 사람이 M1뿐이어서 2걸음으로 M5에 도달할 수 없다
합1
(A3)[1,1]=2⋅0+0⋅0+1⋅1+1⋅0+0⋅1=1 (A^3)[1,1] = \textcolor{#2563eb}{2}\cdot\textcolor{#d97706}{0} + \textcolor{#2563eb}{0}\cdot\textcolor{#d97706}{0} + \textcolor{#2563eb}{1}\cdot\textcolor{#d97706}{1} + \textcolor{#2563eb}{1}\cdot\textcolor{#d97706}{0} + \textcolor{#2563eb}{0}\cdot\textcolor{#d97706}{1} = \mathbf{1}

경로 복원. 살아남은 항 k=3k=3을 두 조각으로 되짚으면 경로가 완성된다. (A2)[1,3]=1(A^2)[1,3]=1이 어떤 경로였는지는 §5·§7에 있다 — M1→M2→M3. 여기에 마지막 걸음 A[3,1]=1A[3,1]=1인 M3→M1을 이어 붙인다:

M1→M2→M3⏟(A2)[1,3]=1  →  M1⏟A[3,1]=1 \underbrace{M_1 \to M_2 \to M_3}_{(A^2)[1,3]=1} \;\to\; \underbrace{M_1}_{A[3,1]=1}

답: (A3)[1,1]=1(A^3)[1,1]=1 — 3단계 순환 경로는 M1→M2→M3→M1 하나뿐이다. 삼각 순환(3-cycle)이다.

R 확인: sum(A2[1,]*A[,1]) → 1, 항별 곱은 0 0 1 0 0.

교실 해석. M1→M2, M2→M3, M3→M1. 세 지명이 모두 일방(짝사랑)인데도 고리가 닫힌다. 서로 지명하는 사이(M1↔M3 같은 상호 지명)가 하나도 없이도 관계가 순환할 수 있다는 뜻이다. M1이 M2에게 흘린 말이 M2→M3→M1을 돌아 자기에게 되돌아온다 — 교실에서 "누가 퍼뜨렸는지 모르겠는데 결국 내 귀에 들어온 말"의 구조가 바로 이것이다. 상호 지명만 세는 diag⁡(A2)\operatorname{diag}(A^2)로는 이 고리가 보이지 않는다(§8에서 M1의 값 2는 M3, M5와의 상호 지명일 뿐). 일방 지명의 순환은 A3A^3의 대각선에서만 드러난다.

단원 1-3 예고 — 여기서는 운이 좋았다. (A3)[1,1](A^3)[1,1]은 "3걸음 걷기"의 수인데, 자기 지명이 없는 네트워크에서 i→a→b→ii\to a\to b\to i는 a≠ba\neq b, a≠ia\neq i, b≠ib\neq i가 자동으로 강제되므로 대각선의 3걸음 걷기는 항상 진짜 삼각 순환이다. 그래서 이번엔 걷기와 경로가 일치했다.

하지만 대각선을 벗어나면 깨진다. §9의 (A3)[1,3]=2(A^3)[1,3]=2가 그 예다 — M1→M3→M1→M3, M1→M5→M1→M3 둘 다 M1을 두 번 밟는다. "3단계 경로 2개"가 아니라 "3걸음 걷기 2개, 진짜 경로는 0개"다. 이 구분이 단원 1-3의 주제다.

A2 <- A %*% A
A3 <- A2 %*% A

sum(A[5,] * A[,3])      # 1   ← 문제 1
sum(A2[1,] * A[,1])     # 1   ← 문제 2
A2[1,] * A[,1]          # 0 0 1 0 0  (k=3 항만 살아남음)

A3
#    M1 M2 M3 M4 M5
#  M1  1  2  2  1  2
#  M2  0  1  1  0  1
#  M3  2  0  1  1  0
#  M4  0  0  0  0  0
#  M5  2  0  1  1  0

diag(A3)                # 1 1 1 0 0  ← 삼각 순환에 참여하는 학생: M1, M2, M3
sum(diag(A3)) / 3       # 1  ← 삼각 순환 1개 (세 학생에서 한 번씩 세어지므로 3으로 나눔)

diag⁡(A3)=(1,1,1,0,0)\operatorname{diag}(A^3)=(1,1,1,0,0)을 보면 답이 한눈에 검증된다. 값이 1인 학생은 M1, M2, M3 — 정확히 그 삼각 순환에 참여하는 세 명이고, M4·M5는 0이다. 같은 고리가 세 학생의 대각선에 한 번씩 세어지므로 학급 전체 삼각 순환 수는 3/3=13/3=1개다. (§8에서 상호 지명 쌍을 ÷2\div 2로 셌던 것과 같은 논리, 이번엔 ÷3\div 3.)

다음 단원 — 1-3: A3A^3와 걷기(walk) vs 경로(path), 삼각 순환. 연습문제 2가 그 예고편이다. → 단원 1-3 노트 열기 · 이 문서: notes/02_단원1-2_행렬곱셈과_2단계경로.html