1. 오늘의 네트워크 (Today's Network)
학생 5명(M 1 , … , M 5 M_1,\dots,M_5 M 1 , … , M 5 )에게 "친하게 지내는 친구"를 지명하게 한 방향 네트워크.
지명 목록은 다음 7건이다:
M1→M2 M1→M3 M1→M5
M2→M3 M3→M1 M3→M4
M5→M1
양방향 화살표(M1↔M3, M1↔M5)는 상호 지명, 단방향은 일방 지명
2. 단원 1-1: 인접행렬의 정의와 표기 (Adjacency Matrix: Definition & Notation)
정의. 학생 수가
n n n 일 때 인접행렬
A A A 는
n × n n\times n n × n 행렬이고,
A [ i , j ] = { 1 학생 i 가 학생 j 를 지명 0 지명하지 않음
A[i,j] \;=\;
\begin{cases}
1 & \text{학생 } i \text{가 학생 } j \text{를 지명} \\[2pt]
0 & \text{지명하지 않음}
\end{cases}
A [ i , j ] = { 1 0 학생 i 가 학생 j 를 지명 지명하지 않음
행 i i i = 지명하는 사람, 열 j j j = 지명받는 사람. 자기 지명은 없다고 약속:
A [ i , i ] = 0 A[i,i]=0 A [ i , i ] = 0 .
위 7건의 지명을 행렬로 옮기면:
A = M 1 M 2 M 3 M 4 M 5 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
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}
A = M 1 M 2 M 3 M 4 M 5 M 1 0 0 1 0 1 M 2 1 0 0 0 0 M 3 1 1 0 0 0 M 4 0 0 1 0 0 M 5 1 0 0 0 0
행과 열을 읽는 법 (Reading Rows and Columns)
i i i 번째 행 A [ i , ] A[i,\,] A [ i , ] = "i i i 가 지명한 사람 목록".
예: A [ 1 , ] = ( 0 , 1 , 1 , 0 , 1 ) A[1,\,]=(0,1,1,0,1) A [ 1 , ] = ( 0 , 1 , 1 , 0 , 1 ) → M1은 M2, M3, M5를 지명.
j j j 번째 열 A [ , j ] A[\,,j] A [ , j ] = "j j j 를 지명한 사람 목록".
예: A [ , 1 ] = ( 0 , 0 , 1 , 0 , 1 ) A[\,,1]=(0,0,1,0,1) A [ , 1 ] = ( 0 , 0 , 1 , 0 , 1 ) → M1을 지명한 사람은 M3, M5.
비대칭 : A [ 1 , 2 ] = 1 A[1,2]=1 A [ 1 , 2 ] = 1 이지만 A [ 2 , 1 ] = 0 A[2,1]=0 A [ 2 , 1 ] = 0 . 방향 네트워크에서는 A [ i , j ] ≠ A [ j , i ] A[i,j]\ne A[j,i] A [ i , j ] = A [ j , i ] 일 수 있고,
이 어긋남 자체가 정보다(일방 지명 = 관계 인식의 불일치).
3. 행렬 곱셈의 일반 정의 — "행 × 열" (Matrix Multiplication: Row × Column)
정의. 두 행렬의 곱
C = A B C = AB C = A B 의
( i , j ) (i,j) ( i , j ) 원소는
C [ i , j ] = ∑ k = 1 n A [ 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]
C [ i , j ] = k = 1 ∑ n A [ i , k ] ⋅ B [ k , j ] = A [ i , 1 ] B [ 1 , j ] + A [ i , 2 ] B [ 2 , j ] + ⋯ + A [ i , n ] B [ n , j ]
즉
A A A 의 i i i 번째 행과
B B B 의 j j j 번째 열을 나란히 놓고,
같은 위치끼리 곱한 뒤 모두 더한다.
3-1. 먼저 보통 숫자로 — 2×2 곱셈을 사람이 푸는 과정 (A Worked Example with Ordinary Numbers)
규칙은 하나뿐이다: 왼쪽 행렬에서 i i i 행을 가로로 ,
오른쪽 행렬에서 j j j 열을 세로로 읽어서,
첫째끼리·둘째끼리 곱한 뒤 더한다. 결과의 [ 1 , 1 ] [1,1] [ 1 , 1 ] 자리를 구해 보자:
( 1 2 3 4 ) ( 5 6 7 8 ) ⟹ 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
( 1 3 2 4 ) ( 5 7 6 8 ) ⟹ C [ 1 , 1 ] = 1 ⋅ 5 + 2 ⋅ 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열 ) ⟹ ( 1 2 3 4 ) ( 5 6 7 8 ) = ( 19 22 43 50 )
\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}
C [ 1 , 2 ] C [ 2 , 1 ] C [ 2 , 2 ] = 1 ⋅ 6 + 2 ⋅ 8 = 6 + 16 = 22 = 3 ⋅ 5 + 4 ⋅ 7 = 15 + 28 = 43 = 3 ⋅ 6 + 4 ⋅ 8 = 18 + 32 = 50 ( 1 행 × 2 열 ) ( 2 행 × 1 열 ) ( 2 행 × 2 열 ) ⟹ ( 1 3 2 4 ) ( 5 7 6 8 ) = ( 19 43 22 50 )
3-2. 같은 요령을 A × A A\times A A × A 에 — 행렬을 실제로 나란히 놓고 (The Same Method Applied to A × A A\times A A × A )
A 2 A^2 A 2 은 A A A 두 개를 나란히 놓고 곱하는 것이다. ( A 2 ) [ 1 , 1 ] (A^2)[1,1] ( A 2 ) [ 1 , 1 ] 을 구하려면
왼쪽 A A A 에서 M1의 행 ,
오른쪽 A A A 에서 M1의 열 만 보면 된다:
M 1 M 2 M 3 M 4 M 5 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 × M 1 M 2 M 3 M 4 M 5 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
\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}
M 1 M 2 M 3 M 4 M 5 M 1 0 0 1 0 1 M 2 1 0 0 0 0 M 3 1 1 0 0 0 M 4 0 0 1 0 0 M 5 1 0 0 0 0 × M 1 M 2 M 3 M 4 M 5 M 1 0 0 1 0 1 M 2 1 0 0 0 0 M 3 1 1 0 0 0 M 4 0 0 1 0 0 M 5 1 0 0 0 0
파란 행 을 가로로,
주황 열 을 세로로 꺼내 짝을 맞추면:
( A 2 ) [ 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}
( A 2 ) [ 1 , 1 ] = 0 ⋅ 0 + 1 ⋅ 0 + 1 ⋅ 1 + 0 ⋅ 0 + 1 ⋅ 1 = 2
이 2가 결과 행렬의 (1행, 1열) 자리에 들어간다. A 2 A^2 A 2 의 나머지 24칸도 전부
"행 하나, 열 하나 골라 짝 곱을 더한다"는 같은 동작의 반복일 뿐이다.
3-3. 일반식과 0·1의 논리 (General Formula & Boolean Logic)
지금 한 손 계산을 일반식으로 쓰면 (B B B 자리에 A A A ):
( A 2 ) [ i , j ] = ∑ k = 1 5 A [ i , k ] ⋅ A [ k , j ]
(A^2)[i,j] \;=\; \sum_{k=1}^{5} A[i,k]\cdot A[k,j]
( A 2 ) [ i , j ] = k = 1 ∑ 5 A [ i , k ] ⋅ A [ k , j ]
0과 1로만 이루어진 행렬에서는 항 하나하나가 논리 판정이 된다:
A [ i , k ] ⋅ A [ k , j ] = { 1 i → 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}
A [ i , k ] ⋅ A [ k , j ] = { 1 0 i → k 지명이 있고 그리고 k → j 지명도 있다 둘 중 하나라도 없다
곱셈이 AND 역할 을 하는 것이다. 그리고 k = 1 , … , 5 k=1,\dots,5 k = 1 , … , 5 에 대한 합은
"중간에 거칠 수 있는 사람 k k k 를 모두 시험해 본 개수"이므로:
( A 2 ) [ i , j ] = i 에서 j 로 가는 2단계 경로의 개수
(A^2)[i,j] \;=\; i\text{에서 } j\text{로 가는 } \textbf{2단계 경로의 개수}
( A 2 ) [ i , j ] = i 에서 j 로 가는 2 단계 경로의 개수
행렬 곱셈이라는 기계적 연산 = "친구의 친구 세기"라는 관계 연산.
4. ( A 2 ) [ 1 , 1 ] (A^2)[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)
A [ 1 , ] = ( 0 , 1 , 1 , 0 , 1 ) , A [ , 1 ] = ( 0 , 0 , 1 , 0 , 1 )
( A 2 ) [ 1 , 1 ] = ∑ k = 1 5 A [ 1 , k ] ⋅ A [ k , 1 ]
(A^2)[1,1]=\sum_{k=1}^{5} A[1,k]\cdot A[k,1]
( A 2 ) [ 1 , 1 ] = k = 1 ∑ 5 A [ 1 , k ] ⋅ A [ k , 1 ]
( A 2 ) [ 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}
( A 2 ) [ 1 , 1 ] = 0 ⋅ 0 + 1 ⋅ 0 + 1 ⋅ 1 + 0 ⋅ 0 + 1 ⋅ 1 = 2
"자기 자신으로 돌아오는 2단계 경로"란 곧 상호 지명 이다.
내가 지명한 k k k 가 나를 되지명해야만 i → k → i i\to k\to i i → k → 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) A [ 1 , ] = ( 0 , 1 , 1 , 0 , 1 ) 을 각 열과 곱한다. 0이 되는 항은 생략하지 않고 모두 쓴다.
( A 2 ) [ 1 , 2 ] (A^2)[1,2] ( A 2 ) [ 1 , 2 ] — 열 A [ , 2 ] = ( 1 , 0 , 0 , 0 , 0 ) 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}
0 ⋅ 1 + 1 ⋅ 0 + 1 ⋅ 0 + 0 ⋅ 0 + 1 ⋅ 0 = 0
M2를 지명하는 사람은 M1뿐인데(A [ 1 , 2 ] = 1 A[1,2]=1 A [ 1 , 2 ] = 1 이 열에서 유일한 1),
정작 M1 자신은 자기를 지명할 수 없다. 그래서 M2로 가는 2단계 길은 없다 — M1→M2는 직접 지명 하나뿐 .
( A 2 ) [ 1 , 3 ] (A^2)[1,3] ( A 2 ) [ 1 , 3 ] — 열 A [ , 3 ] = ( 1 , 1 , 0 , 0 , 0 ) 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 경로 M 1 → M 2 → M 3
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}
0 ⋅ 1 + k = 2 1 ⋅ 1 + 1 ⋅ 0 + 0 ⋅ 0 + 1 ⋅ 0 = 1 경로 M 1 → M 2 → M 3
M1은 M3을 직접 지명하면서(1단계), M2를 거치는 2단계 길도 갖고 있다 — 연결이 이중으로 든든한 관계.
( A 2 ) [ 1 , 4 ] (A^2)[1,4] ( A 2 ) [ 1 , 4 ] — 열 A [ , 4 ] = ( 0 , 0 , 1 , 0 , 0 ) 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 경로 M 1 → M 3 → M 4
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}
0 ⋅ 0 + 1 ⋅ 0 + k = 3 1 ⋅ 1 + 0 ⋅ 0 + 1 ⋅ 0 = 1 경로 M 1 → M 3 → M 4
M1은 M4를 직접 지명하지 않지만 M3을 거치면 닿는다 — 직접 관계 없이 존재하는 간접 채널 .
( A 2 ) [ 1 , 5 ] (A^2)[1,5] ( A 2 ) [ 1 , 5 ] — 열 A [ , 5 ] = ( 1 , 0 , 0 , 0 , 0 ) 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}
0 ⋅ 1 + 1 ⋅ 0 + 1 ⋅ 0 + 0 ⋅ 0 + 1 ⋅ 0 = 0
M5를 지명하는 사람 역시 M1뿐이라, [1,2]와 같은 이유로 0.
6. 지름길: A 2 A^2 A 2 의 i i i 행 = 내가 지명한 사람들의 행을 합친 것 (Shortcut: Sum of Out-Neighbors' Rows)
행 단위로 보면 계산이 훨씬 빨라진다. i i i 행에서 1인 위치(= i i i 가 지명한 사람들)만 살아남으므로:
( A 2 ) [ i , ] = ∑ k : A [ i , k ] = 1 A [ k , ]
(A^2)[i,\,] \;=\; \sum_{k:\,A[i,k]=1} A[k,\,]
( A 2 ) [ i , ] = k : A [ i , k ] = 1 ∑ A [ k , ]
M2는 M3만 지명 → ( A 2 ) [ 2 , ] = A [ 3 , ] = ( 1 , 0 , 0 , 1 , 0 ) (A^2)[2,\,] = A[3,\,] = (1,0,0,1,0) ( A 2 ) [ 2 , ] = A [ 3 , ] = ( 1 , 0 , 0 , 1 , 0 ) .
M2의 2단계 세계는 M3의 1단계 세계와 같다.
M5는 M1만 지명 → ( A 2 ) [ 5 , ] = A [ 1 , ] = ( 0 , 1 , 1 , 0 , 1 ) (A^2)[5,\,] = A[1,\,] = (0,1,1,0,1) ( A 2 ) [ 5 , ] = A [ 1 , ] = ( 0 , 1 , 1 , 0 , 1 ) .
M1은 M2, M3, M5를 지명 → ( 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 ) (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) ( 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. A 2 A^2 A 2 전체와 모든 경로 (The Full A 2 A^2 A 2 & All 2-Step Paths)
A 2 = M 1 M 2 M 3 M 4 M 5 M 1 2 0 1 1 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
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}
A 2 = M 1 M 2 M 3 M 4 M 5 M 1 2 1 0 0 0 M 2 0 0 1 0 1 M 3 1 0 1 0 1 M 4 1 1 0 0 0 M 5 0 0 1 0 1
0이 아닌 모든 원소의 경로:
M4의 행이 전부 0인 이유: A [ 4 , ] = ( 0 , 0 , 0 , 0 , 0 ) A[4,\,]=(0,0,0,0,0) A [ 4 , ] = ( 0 , 0 , 0 , 0 , 0 ) — 지명이 하나도 없으니
어떤 2단계 경로의 출발점도 될 수 없다.
8. 대각선과 상호 지명 (Diagonal & Reciprocated Ties)
diag ( A 2 ) = ( 2 , 0 , 1 , 0 , 1 )
\operatorname{diag}(A^2) = (2,\,0,\,1,\,0,\,1)
diag ( A 2 ) = ( 2 , 0 , 1 , 0 , 1 )
( A 2 ) [ i , i ] = ∑ k A [ i , k ] ⋅ A [ k , i ] = i 가 맺은 상호 지명의 수
(A^2)[i,i] = \sum_k A[i,k]\cdot A[k,i] = i\text{가 맺은 상호 지명의 수}
( A 2 ) [ i , i ] = k ∑ A [ i , k ] ⋅ A [ k , i ] = i 가 맺은 상호 지명의 수
한 쌍의 상호 지명(
i ↔ k i\leftrightarrow k i ↔ k )은
i i i 의 대각선과
k k k 의 대각선에 한 번씩, 총 두 번 세어지므로
학급 전체 상호 지명 쌍 수 = 1 2 ∑ i ( A 2 ) [ i , i ] = 2 + 0 + 1 + 0 + 1 2 = 2 쌍
\text{학급 전체 상호 지명 쌍 수} \;=\; \frac{1}{2}\sum_{i}(A^2)[i,i] \;=\; \frac{2+0+1+0+1}{2} \;=\; \mathbf{2}\text{쌍}
학급 전체 상호 지명 쌍 수 = 2 1 i ∑ ( A 2 ) [ i , i ] = 2 2 + 0 + 1 + 0 + 1 = 2 쌍
(M1–M3, M1–M5). 행렬 곱 한 번으로 "서로 친한 쌍의 수"가 나온다.
9. 주의: A k A^k A k 가 세는 것은 '걷기(walk)' (Caution: Walks, Not Paths)
A k A^k A k 의 원소는 길이 k k k 의 걷기 의 수다. 걷기는 같은 사람을 다시 지나도 된다.
2단계까지는 중간에 한 명뿐이라 문제가 없지만, 3단계부터는 재방문이 섞인다.
예: ( A 3 ) [ 1 , 3 ] = 2 (A^3)[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)
( A 2 ) [ i , i ] (A^2)[i,i] ( A 2 ) [ i , i ] = 상호 지명 수 → 관계의 안정성 지표.
지명을 해도 대각선이 0인 학생(M2형)은 관계가 전부 일방향 — "다가가지만 받아들여지지 않는" 신호.
직접 지명 없이 ( A 2 ) [ i , j ] > 0 (A^2)[i,j]>0 ( A 2 ) [ i , j ] > 0 → "친구의 친구" 채널. 소문과 정보가 흐르는 간접 통로이고,
새 친구 관계가 생겨나기 가장 쉬운 자리이기도 하다(3단계 전이성 개념으로 이어짐).
한 명만 지명한 학생(M2, M5형) → §6에서 본 대로 간접 인맥 전체가 그 한 명에게 의존.
그 친구의 부재가 곧 관계망 단절로 이어질 수 있는 취약 구조.
M4형(행 전체 0) → 스스로 지명하지 않는 학생은 어떤 간접 경로의 출발점도 될 수 없다.
받는 지명이 있어도 관계의 '흐름'에서는 종착지일 뿐.
12. 연습문제 (다음 세션 시작 때 확인) (Exercises)
문제 1. ( A 2 ) [ 5 , 3 ] (A^2)[5,3] ( A 2 ) [ 5 , 3 ] 을 §4처럼 표로 완전 전개하시오.
다섯 항 A [ 5 , k ] ⋅ A [ k , 3 ] A[5,k]\cdot A[k,3] A [ 5 , k ] ⋅ A [ k , 3 ] 을 모두 쓰고, 0이 아닌 항이 나타내는 경로를 말로 설명할 것.
R 확인: sum(A[5,]*A[,3])
문제 2. ( A 3 ) [ 1 , 1 ] = ∑ k ( A 2 ) [ 1 , k ] ⋅ A [ k , 1 ] (A^3)[1,1]=\sum_k (A^2)[1,k]\cdot A[k,1] ( A 3 ) [ 1 , 1 ] = ∑ k ( A 2 ) [ 1 , k ] ⋅ A [ k , 1 ] 을 계산하시오.
§4~5에서 구한 ( A 2 ) [ 1 , ] = ( 2 , 0 , 1 , 1 , 0 ) (A^2)[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) A [ , 1 ] = ( 0 , 0 , 1 , 0 , 1 ) 을 그대로 쓰면 된다.
나온 값이 나타내는 3단계 순환 경로는 무엇인가? 그 경로에 참여하는 세 학생의 관계를 교실 언어로 해석해 보시오.
먼저 스스로 풀어 본 뒤 §13 해설 과 맞춰 볼 것.
13. 연습문제 해설과 답 (Solutions)
13-1. 문제 1 — ( A 2 ) [ 5 , 3 ] (A^2)[5,3] ( A 2 ) [ 5 , 3 ] (Two-Step Paths from M5 to M3)
무엇을 곱하는가. ( A 2 ) [ 5 , 3 ] (A^2)[5,3] ( A 2 ) [ 5 , 3 ] 이니 왼쪽 A A A 에서
M5의 행 (=M5가 지명한 사람),
오른쪽 A A A 에서 M3의 열 (=M3을 지명한 사람)을 꺼낸다.
§3-2와 똑같은 동작이고 고르는 행·열만 바뀐다:
M 1 M 2 M 3 M 4 M 5 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 × M 1 M 2 M 3 M 4 M 5 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
\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}
M 1 M 2 M 3 M 4 M 5 M 1 0 0 1 0 1 M 2 1 0 0 0 0 M 3 1 1 0 0 0 M 4 0 0 1 0 0 M 5 1 0 0 0 0 × M 1 M 2 M 3 M 4 M 5 M 1 0 0 1 0 1 M 2 1 0 0 0 0 M 3 1 1 0 0 0 M 4 0 0 1 0 0 M 5 1 0 0 0 0
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}\,)
A [ 5 , ] = ( 1 , 0 , 0 , 0 , 0 ) , A [ , 3 ] = ( 1 , 1 , 0 , 0 , 0 )
다섯 항 완전 전개. 0이 되는 항도 하나도 빼지 않고 쓴다.
( A 2 ) [ 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}
( A 2 ) [ 5 , 3 ] = 1 ⋅ 1 + 0 ⋅ 1 + 0 ⋅ 0 + 0 ⋅ 0 + 0 ⋅ 0 = 1
답: ( A 2 ) [ 5 , 3 ] = 1 (A^2)[5,3]=1 ( A 2 ) [ 5 , 3 ] = 1 — 살아남은 항은 k = 1 k=1 k = 1 , 경로는
M5→M1→M3 하나다.
M5의 행에 1이 단 하나 (M1)뿐이라, 애초에 검사할 후보가 k = 1 k=1 k = 1 하나였다.
지명이 적은 학생의 행은 이렇게 계산이 짧아진다.
왜 이 값이 중요한가. 원래 행렬에서 A [ 5 , 3 ] = 0 A[5,3]=0 A [ 5 , 3 ] = 0 이다 — M5는 M3을 직접 지명하지 않았다 .
그런데 ( A 2 ) [ 5 , 3 ] = 1 (A^2)[5,3]=1 ( A 2 ) [ 5 , 3 ] = 1 이다. 즉 0에서 1로 바뀐 자리 이고, 이것이 A 2 A^2 A 2 을 계산하는 이유다.
교실 해석. M5와 M3은 서로 이름도 잘 모르는 사이일 수 있다(직접 관계 0).
하지만 M1을 통하면 한 다리로 연결된다. 모둠을 짤 때 M5와 M3을 같은 조에 넣으려면
M1을 함께 넣는 것 이 안전하다 — 둘을 이어 줄 유일한 연결고리이기 때문이다.
반대로 M1이 전학을 가면 M5는 M3 쪽 관계망에서 완전히 끊긴다.
13-2. 문제 2 — ( A 3 ) [ 1 , 1 ] (A^3)[1,1] ( A 3 ) [ 1 , 1 ] (Three-Step Closed Walks from M1)
먼저 막히는 지점부터. 문제 2가 어려운 이유는 k k k 의 정체가 바뀌기 때문이다.
A 3 = A 2 × A A^3 = A^2\times A A 3 = A 2 × A 이므로 곱셈 규칙("행 × 열")은 그대로인데 왼쪽 행렬이 A A A 가 아니라 A 2 A^2 A 2 다.
그러니 이번에 꺼낼 두 벡터는 A 2 A^2 A 2 의 M1 행 과 A A A 의 M1 열 이다.
A 2 A^2 A 2 은 §7에서 이미 다 구해 놓았으므로 새로 계산할 것이 없다:
A 2 M 1 M 2 M 3 M 4 M 5 M 1 2 0 1 1 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 × A M 1 M 2 M 3 M 4 M 5 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
\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}
A 2 M 1 M 2 M 3 M 4 M 5 M 1 2 1 0 0 0 M 2 0 0 1 0 1 M 3 1 0 1 0 1 M 4 1 1 0 0 0 M 5 0 0 1 0 1 × A M 1 M 2 M 3 M 4 M 5 M 1 0 0 1 0 1 M 2 1 0 0 0 0 M 3 1 1 0 0 0 M 4 0 0 1 0 0 M 5 1 0 0 0 0
( A 3 ) [ 1 , 1 ] = ∑ k = 1 5 ( A 2 ) [ 1 , k ] ⋅ A [ k , 1 ]
(A^3)[1,1]=\sum_{k=1}^{5} (A^2)[1,k]\cdot A[k,1]
( A 3 ) [ 1 , 1 ] = k = 1 ∑ 5 ( A 2 ) [ 1 , k ] ⋅ A [ k , 1 ]
( A 3 ) [ 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}
( A 3 ) [ 1 , 1 ] = 2 ⋅ 0 + 0 ⋅ 0 + 1 ⋅ 1 + 1 ⋅ 0 + 0 ⋅ 1 = 1
경로 복원. 살아남은 항 k = 3 k=3 k = 3 을 두 조각으로 되짚으면 경로가 완성된다.
( A 2 ) [ 1 , 3 ] = 1 (A^2)[1,3]=1 ( A 2 ) [ 1 , 3 ] = 1 이 어떤 경로였는지는 §5·§7에 있다 — M1→M2→M3 .
여기에 마지막 걸음 A [ 3 , 1 ] = 1 A[3,1]=1 A [ 3 , 1 ] = 1 인 M3→M1 을 이어 붙인다:
M 1 → M 2 → M 3 ⏟ ( A 2 ) [ 1 , 3 ] = 1 → M 1 ⏟ 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}
( A 2 ) [ 1 , 3 ] = 1 M 1 → M 2 → M 3 → A [ 3 , 1 ] = 1 M 1
답: ( A 3 ) [ 1 , 1 ] = 1 (A^3)[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 ( A 2 ) \operatorname{diag}(A^2) diag ( A 2 ) 로는 이 고리가
보이지 않는다 (§8에서 M1의 값 2는 M3, M5와의 상호 지명일 뿐).
일방 지명의 순환은
A 3 A^3 A 3 의 대각선에서만 드러난다.
단원 1-3 예고 — 여기서는 운이 좋았다.
( A 3 ) [ 1 , 1 ] (A^3)[1,1] ( A 3 ) [ 1 , 1 ] 은 "3걸음 걷기"의 수인데, 자기 지명이 없는 네트워크에서 i → a → b → i i\to a\to b\to i i → a → b → i 는
a ≠ b a\neq b a = b , a ≠ i a\neq i a = i , b ≠ i b\neq i b = i 가 자동으로 강제되므로 대각선의 3걸음 걷기는 항상 진짜 삼각 순환 이다.
그래서 이번엔 걷기와 경로가 일치했다.
하지만 대각선을 벗어나면 깨진다. §9의 ( A 3 ) [ 1 , 3 ] = 2 (A^3)[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 ( A 3 ) = ( 1 , 1 , 1 , 0 , 0 ) \operatorname{diag}(A^3)=(1,1,1,0,0) diag ( A 3 ) = ( 1 , 1 , 1 , 0 , 0 ) 을 보면 답이 한눈에 검증된다. 값이 1인 학생은 M1, M2, M3 —
정확히 그 삼각 순환에 참여하는 세 명이고, M4·M5는 0이다.
같은 고리가 세 학생의 대각선에 한 번씩 세어지므로 학급 전체 삼각 순환 수는 3 / 3 = 1 3/3=1 3/3 = 1 개다.
(§8에서 상호 지명 쌍을 ÷ 2 \div 2 ÷ 2 로 셌던 것과 같은 논리, 이번엔 ÷ 3 \div 3 ÷ 3 .)
다음 단원 — 1-3: A 3 A^3 A 3 와 걷기(walk) vs 경로(path), 삼각 순환.
연습문제 2가 그 예고편이다.
→ 단원 1-3 노트 열기
· 이 문서: notes/02_단원1-2_행렬곱셈과_2단계경로.html