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일 때 인접행렬 AAn×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] AAii번째 행BBjj번째 열을 나란히 놓고, 같은 위치끼리 곱한 뒤 모두 더한다.

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

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

(1234)(5678)C[1,1]=15+27=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]=16+28=6+16=22(1행×2열)C[2,1]=35+47=15+28=43(2행×1열)C[2,2]=36+48=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^2AA 두 개를 나란히 놓고 곱하는 것이다. (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]=00+10+11+00+11=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]={1ik 지명이 있고 그리고  kj 지명도 있다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]=00+10+11+00+11=2 (A^2)[1,1] = 0\cdot0 + 1\cdot0 + 1\cdot1 + 0\cdot0 + 1\cdot1 = \mathbf{2}

"자기 자신으로 돌아오는 2단계 경로"란 곧 상호 지명이다. 내가 지명한 kk가 나를 되지명해야만 ikii\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)

01+10+10+00+10=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)

01+11k=2+10+00+10=1경로 M1M2M3 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)

00+10+11k=3+00+10=1경로 M1M3M4 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)

01+10+10+00+10=0 0\cdot1 + 1\cdot0 + 1\cdot0 + 0\cdot0 + 1\cdot0 = \mathbf{0}

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

6. 지름길: A2A^2ii행 = 내가 지명한 사람들의 행을 합친 것 (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{가 맺은 상호 지명의 수} 한 쌍의 상호 지명(iki\leftrightarrow k)은 ii의 대각선과 kk의 대각선에 한 번씩, 총 두 번 세어지므로 학급 전체 상호 지명 쌍 수  =  12i(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]=11+01+00+00+00=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]=20+00+11+10+01=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]=1M3→M1을 이어 붙인다:

M1M2M3(A2)[1,3]=1    M1A[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걸음 걷기"의 수인데, 자기 지명이 없는 네트워크에서 iabii\to a\to b\to iaba\neq b, aia\neq i, bib\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