매개 중심성 — 최단경로를 몇 번 지나는가
SNA 이론 · 단계별 학습 차례

단원 2-3Betweenness Centrality

매개 중심성 — 최단경로를 몇 번 지나는가

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

1. 오늘의 질문 (Today's Question)

단원 2-1과 2-2에서 같은 7명 네트워크에 두 가지 답이 나왔다. 연결정도는 S3·S5를 1위로, 근접은 S4를 1위(0.6)로 뽑았다. 그런데 근접 중심성이 준 답에는 불만이 남았다 — S4(0.6)와 S3(0.5455)의 차이가 0.0545밖에 안 된다.

우리가 알고 있는 사실은 훨씬 극적이다(단원 2-1 §5):

S4가 빠지면 학급이 3명 · 3명으로 정확히 두 조각이 난다. 왼쪽 모둠 {S1,S2,S3}과 오른쪽 모둠 {S5,S6,S7} 사이의 모든 왕래가 S4 한 명을 지난다.

이 "반드시 나를 거쳐야 한다"는 사실을 숫자로 세는 지표가 오늘의 매개 중심성이다. 질문은 이렇게 바뀐다:

"두 학생이 서로에게 가장 빠른 길로 말을 전할 때, 내 자리를 지나가는 일이 몇 번이나 생기는가?"

2. 정의 — 최단경로 위의 통행료 (Definition)

기호. jjkk 두 학생에 대해

  • gjkg_{jk} = jj에서 kk로 가는 최단경로의 개수
  • gjk(i)g_{jk}(i) = 그중 ii를 지나는 최단경로의 개수

정의 (매개 중심성).

bi  =  j<kji,kigjk(i)gjk b_i \;=\; \sum_{\substack{j < k \\ j \neq i,\; k \neq i}} \frac{g_{jk}(i)}{g_{jk}}

세 부분을 하나씩 뜯어 읽는다.

부분읽는 법왜 그렇게 하는가
j<kj < k같은 쌍을 한 번만 센다무방향이므로 {j,k}\{j,k\}{k,j}\{k,j\}는 같은 쌍이다
ji,  kij \neq i,\; k \neq i나 자신이 출발점이나 도착점인 쌍은 뺀다"내가 남을 중개한다"를 재는 것이지 내 통신량을 재는 게 아니다
gjk(i)gjk\dfrac{g_{jk}(i)}{g_{jk}}최단경로가 여러 개면 나눠 갖는다우회로가 있으면 내 중개 권력이 그만큼 약해진다

분수 부분을 예로 보자. 어떤 쌍 (j,k)(j,k)에 대해

상황gjkg_{jk}gjk(i)g_{jk}(i)기여
내가 유일한 통로111독점 — 나를 반드시 거친다
최단길이 둘, 내가 그중 하나210.5절반 — 우회로가 하나 있다
최단길이 둘, 내가 둘 다에 있음221독점 — 길이 갈라져도 내 자리는 거친다
내 자리를 안 지난다100이 쌍에서 나는 없어도 그만

bib_i"내가 받는 통행료의 총합"이다. 최댓값은 모든 쌍에서 1을 받을 때, 즉 내가 빠진 모든 쌍의 개수다.

정규화. ii를 뺀 나머지 n1n-1명 중에서 두 명을 고르는 경우의 수가 최댓값이다:

(n12)=(n1)(n2)2CB(i)=bi(n1)(n2)2 \binom{n-1}{2} = \frac{(n-1)(n-2)}{2} \qquad\Rightarrow\qquad C_B(i) = \frac{b_i}{\dfrac{(n-1)(n-2)}{2}}

n=7n=7이면 (62)=6×52=15\dbinom{6}{2} = \dfrac{6 \times 5}{2} = \mathbf{15} — 우리는 쌍 15개를 세면 된다.

연결정도·근접과 결정적으로 다른 점. CDC_DCCC_C절대로 0이 될 수 없다(연결이 되어 있는 한 이웃도 있고 거리도 유한하다). 그런데 CBC_B0이 아주 흔하다. "아무도 나를 거쳐 가지 않는다"는 학생이 학급에 다수일 수 있다 — 실제로 우리 예제에서 7명 중 4명이 0이다(§6).

3. 준비 — 21개 쌍의 최단경로가 모두 유일하다 (All Geodesics Are Unique)

손으로 계산하기 전에 gjkg_{jk}부터 확인한다. 다행히 이 네트워크는 아주 깨끗하다.

7명 무방향 네트워크
두 삼각형 {S1,S2,S3} · {S5,S6,S7}과 다리 사슬 S3–S4–S5
ddgjkg_{jk}최단경로ddgjkg_{jk}최단경로
S1–S211S1-S2S2–S741S2-S3-S4-S5-S7
S1–S311S1-S3S3–S411S3-S4
S1–S421S1-S3-S4S3–S521S3-S4-S5
S1–S531S1-S3-S4-S5S3–S631S3-S4-S5-S6
S1–S641S1-S3-S4-S5-S6S3–S731S3-S4-S5-S7
S1–S741S1-S3-S4-S5-S7S4–S511S4-S5
S2–S311S2-S3S4–S621S4-S5-S6
S2–S421S2-S3-S4S4–S721S4-S5-S7
S2–S531S2-S3-S4-S5S5–S611S5-S6
S2–S641S2-S3-S4-S5-S6S5–S711S5-S7
S6–S711S6-S7

21개 쌍 전부 gjk=1g_{jk} = 1이다. 최단경로가 하나뿐이므로 분수가 전혀 나오지 않는다gjk(i)gjk\frac{g_{jk}(i)}{g_{jk}}는 항상 0 아니면 1이다. 그래서 오늘의 손 계산은 "지나간다/안 지나간다"를 세는 일로 단순해진다.

왜 유일한가. 이 네트워크에는 짝수 길이 순환이 없다. 삼각형(길이 3) 두 개와 사슬뿐이라 "같은 길이의 다른 길"이 만들어지지 않는다. 단원 2-3 연습 1에서는 이 성질이 깨지고 실제로 0.50.5가 등장한다 — 그때 분수를 제대로 다룬다.

4. 손 계산 ① S4 — 15개 쌍 전부 (Hand Calculation: S4)

S4를 뺀 6명 {S1,S2,S3,S5,S6,S7}\{S1,S2,S3,S5,S6,S7\}에서 두 명을 고르는 15개 쌍을 하나도 빠뜨리지 않고 검사한다.

#(j,k)(j,k)유일한 최단경로gjkg_{jk}gjk(S4)g_{jk}(\text{S4})기여왜 그 값인가
1S1–S2S1-S2100같은 삼각형 안 — 직접 연결
2S1–S3S1-S3100직접 연결
3S1–S5S1-S3-S4-S5111왼쪽 → 오른쪽 — S4를 통과
4S1–S6S1-S3-S4-S5-S6111왼쪽 → 오른쪽 — S4를 통과
5S1–S7S1-S3-S4-S5-S7111왼쪽 → 오른쪽 — S4를 통과
6S2–S3S2-S3100직접 연결
7S2–S5S2-S3-S4-S5111왼쪽 → 오른쪽 — S4를 통과
8S2–S6S2-S3-S4-S5-S6111왼쪽 → 오른쪽 — S4를 통과
9S2–S7S2-S3-S4-S5-S7111왼쪽 → 오른쪽 — S4를 통과
10S3–S5S3-S4-S5111왼쪽 → 오른쪽 — S4를 통과
11S3–S6S3-S4-S5-S6111왼쪽 → 오른쪽 — S4를 통과
12S3–S7S3-S4-S5-S7111왼쪽 → 오른쪽 — S4를 통과
13S5–S6S5-S6100같은 삼각형 안 — 직접 연결
14S5–S7S5-S7100직접 연결
15S6–S7S6-S7100직접 연결
bS4b_{\text{S4}} 합계9

합을 항별로 전부 쓰면:

bS4=0+01,2+1+1+13,4,5+06+1+1+17,8,9+1+1+110,11,12+0+0+013,14,15=9 b_{\text{S4}} = \underbrace{0+0}_{\text{1,2}} + \underbrace{1+1+1}_{\text{3,4,5}} + \underbrace{0}_{6} + \underbrace{1+1+1}_{\text{7,8,9}} + \underbrace{1+1+1}_{\text{10,11,12}} + \underbrace{0+0+0}_{\text{13,14,15}} = \mathbf{9}

9라는 수의 구조가 보인다. 기여가 1인 쌍은 정확히 "왼쪽 {S1,S2,S3} 한 명 × 오른쪽 {S5,S6,S7} 한 명" 꼴이다.

{S1,S2,S3}×{S5,S6,S7}=3×3=9 |\{S1,S2,S3\}| \times |\{S5,S6,S7\}| = 3 \times 3 = \mathbf{9}

그리고 이것은 단원 2-1 §5에서 확인한 "S4를 지우면 3·3으로 갈라진다"와 같은 숫자다. 절단점의 매개 중심성 = 갈라지는 두 조각 크기의 곱이다 — S4의 구조적 역할이 드디어 정확한 숫자가 되었다.

5. 손 계산 ② S3와 S1 (Hand Calculation: S3 and S1)

5-1. S3 — 왼쪽 삼각형의 문지기 (The Gatekeeper of the Left Triangle)

S3을 뺀 6명 {S1,S2,S4,S5,S6,S7}\{S1,S2,S4,S5,S6,S7\}의 15개 쌍:

#최단경로기여#최단경로기여
1S1–S2S1-S209S2–S7S2-S3-S4-S5-S71
2S1–S4S1-S3-S4110S4–S5S4-S50
3S1–S5S1-S3-S4-S5111S4–S6S4-S5-S60
4S1–S6S1-S3-S4-S5-S6112S4–S7S4-S5-S70
5S1–S7S1-S3-S4-S5-S7113S5–S6S5-S60
6S2–S4S2-S3-S4114S5–S7S5-S70
7S2–S5S2-S3-S4-S5115S6–S7S6-S70
8S2–S6S2-S3-S4-S5-S61합 8
bS3=0+1+1+1+1S1과 짝+1+1+1+1S2와 짝+0+0+0+0+0+0나머지 6쌍=8 b_{\text{S3}} = 0 + \underbrace{1+1+1+1}_{\text{S1과 짝}} + \underbrace{1+1+1+1}_{\text{S2와 짝}} + \underbrace{0+0+0+0+0+0}_{\text{나머지 6쌍}} = \mathbf{8}

여기서도 구조가 보인다. 기여가 1인 쌍은 {S1,S2}\{S1,S2\} 한 명 × {S4,S5,S6,S7}\{S4,S5,S6,S7\} 한 명이다:

2×4=8 2 \times 4 = \mathbf{8}

단원 2-1 §5에서 S3을 지우면 2·4로 갈라진다고 확인한 바로 그 숫자다.

S3도 절단점이다 — 그런데 S4보다 값이 작다. S3을 지우면 2명·4명, S4를 지우면 3·3으로 갈라진다. 곱하면 2×4=82 \times 4 = 8이고 3×3=93 \times 3 = 9다. 같은 넓이의 울타리로 가장 넓은 땅을 만드는 것은 정사각형이라는 것과 같은 이치로, 절단점은 학급을 정확히 반으로 가를 때 매개 중심성이 가장 높다. "몇 명을 끊느냐"가 아니라 "얼마나 고르게 끊느냐"가 중요하다.

5-2. S1 — 삼각형 안쪽 (전부 0) (Inside the Triangle: All Zeros)

S1을 뺀 15개 쌍을 전부 검사하면 단 하나도 S1을 지나지 않는다.

#최단경로기여#최단경로기여
1S2–S3S2-S309S3–S7S3-S4-S5-S70
2S2–S4S2-S3-S4010S4–S5S4-S50
3S2–S5S2-S3-S4-S5011S4–S6S4-S5-S60
4S2–S6S2-S3-S4-S5-S6012S4–S7S4-S5-S70
5S2–S7S2-S3-S4-S5-S7013S5–S6S5-S60
6S3–S4S3-S4014S5–S7S5-S70
7S3–S5S3-S4-S5015S6–S7S6-S70
8S3–S6S3-S4-S5-S60합 0
bS1=0+0+0+0+0+0+0+0+0+0+0+0+0+0+0=0 b_{\text{S1}} = 0+0+0+0+0+0+0+0+0+0+0+0+0+0+0 = \mathbf{0}

왜 0인가. S1의 이웃은 S2와 S3 둘뿐인데, 그 둘은 서로 직접 이어져 있다. 그래서 "S2에서 S3으로 갈 때 S1을 경유한다"는 일이 절대 없다. S1은 삼각형 안에 갇혀 있어서 바깥으로 나가는 유일한 문이 S3인데, S1 자신은 그 문의 안쪽에 있다. 이웃들이 서로 다 아는 사이라면 나는 중개할 것이 없다 — 이것이 매개 중심성 0의 의미다.

6. 일곱 명 전부와 정규화 (All Seven & Normalization)

S2·S6·S7도 같은 방식으로 계산하면 모두 0이고(S5는 S3과 대칭이라 8), S5는 오른쪽 삼각형의 문지기로 4×2=84 \times 2 = 8이다.

학생bib_i지우면 갈라지는 크기CB=bi/15C_B = b_i/15소수순위
S10안 갈라짐 (6명 하나로)0/150/150.00004위
S20안 갈라짐0/150/150.00004위
S382 · 488/158/150.53332위
S493 · 399/15=3/59/15 = 3/50.60001위
S584 · 288/158/150.53332위
S60안 갈라짐0/150/150.00004위
S70안 갈라짐0/150/150.00004위
25

절단점 세 명이 정확히 매개 중심성 상위 세 명이다. 단원 2-1 §5에서 articulation_points(g)S3, S4, S5를 돌려주었는데, 매개 중심성이 0이 아닌 학생도 정확히 그 셋이다. 절단점이면 반드시 bi>0b_i > 0이다 — 갈라지는 두 조각 사이의 모든 왕래가 나를 지나야 하니 당연하다.

다만 역은 성립하지 않는다. bi>0b_i > 0인데 절단점이 아닌 경우는 얼마든지 있다 (우회로가 있어서 없어도 안 갈라지지만, 최단경로는 나를 지나는 경우). 연습 1에서 정확히 그런 학생이 등장한다.

7. 검산 — 거리행렬로 다시 확인 (Cross-check with D)

15개 쌍씩 7번을 세었으니 실수했을 가능성이 있다. 전혀 다른 경로로 검산해 보자.

착상. 최단경로가 모두 유일할 때, 길이 dd인 경로의 중간 지점 개수d1d-1이다 (S1-S3-S4-S5는 길이 3, 중간이 S3·S4 두 개). 그 쌍은 중간에 있는 학생들에게 1씩 통행료를 준다. 따라서 모든 학생의 통행료를 다 더하면:

i=1nbi  =  j<k(d(j,k)1)  =  (j<kd(j,k))(n2) \sum_{i=1}^{n} b_i \;=\; \sum_{j\,<\,k} \bigl(d(j,k) - 1\bigr) \;=\; \Bigl(\textstyle\sum_{j\,<\,k} d(j,k)\Bigr) - \binom{n}{2}

단원 2-2 §3에서 거리 총합 46, 쌍의 개수 (72)=21\binom{7}{2} = \mathbf{21}을 이미 구했다. 거리별로 나눠 쓰면:

거리 dd쌍의 개수중간 지점 d1d-1기여 = 개수 × (d1)(d-1)해당 쌍
1808×0=08 \times 0 = 0직접 연결된 8쌍 — 중개자 없음
2515×1=55 \times 1 = 5S1S4, S2S4, S3S5, S4S6, S4S7
3424×2=84 \times 2 = 8S1S5, S2S5, S3S6, S3S7
4434×3=124 \times 3 = 12S1S6, S1S7, S2S6, S2S7
2125= 거리 총합 46 − 쌍 21
ibi=0+5+8+12=25그리고 §6의 합=0+0+8+9+8+0+0=25   \sum_i b_i = 0 + 5 + 8 + 12 = \mathbf{25} \qquad\text{그리고 §6의 합} = 0+0+8+9+8+0+0 = \mathbf{25} \;✓

두 경로가 만났다. 쌍을 하나씩 세어 얻은 25와 거리행렬에서 바로 계산한 25가 일치한다. 손 계산이 옳다는 독립적 증거다. (주의: 이 검산은 모든 최단경로가 유일할 때만 성립한다. 경로가 여러 개면 통행료가 쪼개져서 합이 달라진다.)

8. 세 지표의 대결 (Three Measures Compared)

2단계에서 지금까지 구한 세 지표를 같은 표에 놓는다. 오늘의 핵심 장면이다.

학생CDC_D순위CCC_C순위CBC_B순위한 줄 해석
S4.33333위.60001위.60001위친구는 가장 적은데 없으면 안 되는 학생
S3.50001위.54552위.53332위인기도 있고 중개도 하는 모범적 위치
S5.50001위.54552위.53332위S3과 완전 대칭
S1.33333위.40004위.00004위삼각형 안쪽 — 중개 역할 전무
S2.33333위.40004위.00004위S1과 동일
S6.33333위.40004위.00004위S1·S2와 동일
S7.33333위.40004위.00004위S1·S2와 동일

세 지표를 읽는 법.

지표묻는 질문보는 범위이 학급의 답
연결정도 CDC_D"내 옆에 몇 명 있나"거리 1까지 — 국소S3, S5 (인기)
근접 CCC_C"내가 전체에 얼마나 가깝나"모든 거리 — 전역S4 (빠른 전파)
매개 CBC_B"남들이 나를 얼마나 거치나"모든 구조S4 (없으면 안 됨)

근접과 매개가 둘 다 S4를 1위로 뽑았지만 성격이 다르다. 근접에서 S4와 S3의 차이는 0.6 vs 0.5455 — 겨우 10% 차이였다. 매개에서도 0.6 vs 0.5333이지만, 하위 네 명이 전부 0이라 분포가 완전히 다르다. 매개 중심성은 "있는 사람"과 "없는 사람"을 갈라 놓는 지표다.

9. 매개 중심화 (Betweenness Centralization)

Freeman 중심화 틀을 세 번째로 적용한다 — 1등과의 격차의 합 ÷ 별 그래프의 값. 이번에는 정규화하지 않은 bib_i로 계산한다(교재와 igraph의 관례).

CB=i=1n(bmaxbi)(n1)2(n2)2 C_B = \frac{\displaystyle\sum_{i=1}^{n}\bigl(b_{\max} - b_i\bigr)}{\dfrac{(n-1)^2(n-2)}{2}}

9-1. 분모 유도 — 별 그래프 (Deriving the Denominator: The Star Graph)

역할중개하는 쌍bib_ibmaxbib_{\max}-b_i
허브 (1명)잎끼리의 모든 쌍 — 잎 두 명은 반드시 허브를 거친다(62)=15\binom{6}{2} = 150
잎 (6명)없음 — 잎을 거쳐 갈 일이 없다015
i(bmaxbi)=0+6×15=90 \sum_i (b_{\max}-b_i) = 0 + 6 \times 15 = \mathbf{90}

일반화하면 허브의 b=(n12)=(n1)(n2)2b = \dbinom{n-1}{2} = \dfrac{(n-1)(n-2)}{2}이고 잎이 n1n-1명이므로

(n1)×(n1)(n2)2=(n1)2(n2)2n=736×52=90   (n-1) \times \frac{(n-1)(n-2)}{2} = \frac{(n-1)^2(n-2)}{2} \qquad n=7 \Rightarrow \frac{36 \times 5}{2} = \mathbf{90} \;✓

9-2. 우리 학급의 값 (The Value for Our Class)

bmax=9b_{\max} = 9(S4)다. 일곱 항 전부 전개한다.

iiS1S2S3S4S5S6S7
bib_i008980025
9bi9 - b_i991019938
i(9bi)=9+9+1+0+1+9+9=38CB=3890=1945=0.4222 \sum_i (9 - b_i) = 9+9+1+0+1+9+9 = \mathbf{38} \qquad C_B = \frac{38}{90} = \frac{19}{45} = \mathbf{0.4222}

세 중심화를 나란히 놓으면 놀랍다 — 같은 학급, 같은 데이터다.

중심화분자분모읽는 법
연결정도5300.1667인기는 매우 고르게 퍼져 있다
근접10/1130/110.3333접근성은 조금 쏠려 있다
매개38900.4222중개 권력은 크게 쏠려 있다

0.17 → 0.33 → 0.42로 계속 올라간다. "우리 반은 평등한가?"라는 질문에 친구 수로 보면 매우 평등하고, 정보 통제력으로 보면 상당히 불평등하다는 답이다. 겉으로는 아무도 특별히 인기 있지 않은데, 정보의 흐름은 세 명(S3·S4·S5)이 완전히 장악하고 있다. 이것이 연결정도만 봐서는 절대 보이지 않는 학급의 실상이다.

9-3. 네 그래프의 눈금 (A Scale from Four Graphs)

그래프bib_i(bmaxbi)\sum(b_{\max}-b_i)매개 중심화해석
완전 그래프0 0 0 0 0 0 000전원이 직접 연결 — 중개할 것이 없다
고리(ring)3 3 3 3 3 3 300전원이 똑같이 중개 — 완벽히 평등
우리 학급0 0 8 9 8 0 0380.4222세 명이 중개 독점
별(star)15 0 0 0 0 0 0901한 명이 모든 중개 독점

단원 2-1의 함정이 여기서도 반복된다. 완전 그래프와 고리 그래프가 둘 다 중심화 0인데, bib_i는 전자가 전부 0, 후자가 전부 3이다. 중심화가 0이라는 말은 "모두가 똑같다"일 뿐 "모두가 0이다"가 아니다. 중심화 값 하나만 보고하면 안 된다 — 개인 값의 분포(최댓값·0인 사람 수)를 반드시 함께 볼 것.

10. R 검증과 함정 (R Verification & Traps)

library(igraph)
nm <- paste0("S", 1:7)
U  <- matrix(0, 7, 7, dimnames = list(nm, nm))
el <- rbind(c("S1","S2"), c("S1","S3"), c("S2","S3"), c("S3","S4"),
            c("S4","S5"), c("S5","S6"), c("S5","S7"), c("S6","S7"))
for (i in 1:nrow(el)) { U[el[i,1], el[i,2]] <- 1; U[el[i,2], el[i,1]] <- 1 }
g <- graph_from_adjacency_matrix(U, mode = "undirected")

# ① 매개 중심성
igraph::betweenness(g)                    # 0 0 8 9 8 0 0        ← 손 계산과 일치 ✓
igraph::betweenness(g, normalized = TRUE) # 0 0 .5333 .6 .5333 0 0
igraph::betweenness(g) / 15               # 같은 값 (분모 (n-1)(n-2)/2 = 15)

# ② 최단경로가 정말 전부 유일한가 (§3)
sna::geodist(U)$counts                    # 전부 1 — 모든 쌍의 최단경로가 하나뿐 ✓
all_shortest_paths(g, from = "S1", to = "S7")$res   # 경로 1개: S1 S3 S4 S5 S7

# ③ §7의 검산 — 거리행렬에서 곧바로
D <- distances(g)
sum(D[upper.tri(D)])                      # 46   거리 총합
sum(D[upper.tri(D)]) - choose(7, 2)       # 25   = sum(betweenness) ✓
sum(igraph::betweenness(g))               # 25

# ④ 매개 중심화
b <- igraph::betweenness(g)
sum(max(b) - b)                           # 38
(7-1)^2 * (7-2) / 2                       # 90
sum(max(b) - b) / 90                      # 0.4222222
centr_betw(g)$centralization              # 0.4222222  ✓ 일치
centr_betw(g)$theoretical_max             # 90         ✓ 분모 확인

# ⑤ 절단점과의 관계 (§6)
names(articulation_points(g))             # "S5" "S4" "S3"  = b > 0 인 학생과 정확히 일치
igraph::components(delete_vertices(g, "S4"))$csize   # 3 3  → 3*3 = 9 = b_S4 ✓
igraph::components(delete_vertices(g, "S3"))$csize   # 2 4  → 2*4 = 8 = b_S3 ✓
igraph::components(delete_vertices(g, "S5"))$csize   # 4 2  → 4*2 = 8 = b_S5 ✓

함정 ① — sna::betweenness(rescale=TRUE)는 igraph의 정규화와 다른 뜻이다.

sna::betweenness(U, gmode = "graph")                  # 0 0 8 9 8 0 0     ← 원값은 같다 ✓
sna::betweenness(U, gmode = "graph", rescale = TRUE)  # 0 0 .32 .36 .32 0 0
igraph::betweenness(g, normalized = TRUE)             # 0 0 .5333 .6 .5333 0 0
함수무엇으로 나누는가S4의 값
igraph normalized=TRUE가능한 최댓값 (n12)=15\binom{n-1}{2} = 159/15=0.69/15 = 0.6"S4는 이론상 최대의 60%를 중개한다"
sna rescale=TRUE모두의 합 bi=25\sum b_i = 259/25=0.369/25 = 0.36"학급 전체 중개량의 36%가 S4 몫이다"

둘 다 유용하지만 절대 섞어 쓰면 안 된다. rescale=TRUE합이 항상 1이 되므로(0.32+0.36+0.32 = 1.0) "점유율"로 읽어야 하고, 학급 간 비교에는 igraph 쪽이 맞다. 보고할 때 어느 분모를 썼는지 반드시 밝힐 것.

함정 ② — snabetweenness도 가린다. 단원 1-7의 components·degree, 단원 2-2의 closeness에 이어 네 번째다.

library(igraph); library(sna)
environmentName(environment(betweenness))   # "sna"   ← sna 것이 먼저 잡힌다
environmentName(environment(closeness))     # "sna"
betweenness(g)                              # 에러 또는 엉뚱한 결과
igraph::betweenness(g)                      # 이렇게 써야 안전 ✓

습관으로 굳힐 것: 두 패키지를 함께 불러왔다면 중심성 함수는 예외 없이 igraph:: 또는 sna::를 붙여 쓴다.

참고 — 방향 네트워크에서는 분모가 두 배다. 방향이 있으면 (jk)(j \to k)(kj)(k \to j)다른 쌍이므로 가능한 쌍이 (n1)(n2)(n-1)(n-2)개(2로 안 나눈다)가 된다. 단원 2-6에서 Knoke 데이터(방향 네트워크)를 다룰 때 이 차이가 실제로 나타난다.

11. 교실 적용 (Classroom Application)

① 매개 중심성은 "전학 가면 위험한 학생"을 짚어 준다. 학기 중 전학·장기 결석·모둠 재편이 예정되어 있다면 연결정도가 아니라 매개 중심성을 봐야 한다. 우리 예제에서 인기 1위 S3이 빠져도 학급은 2·4로 갈라지지만, 친구가 가장 적은 S4가 빠지면 3·3으로 정확히 두 동강 난다. 담임의 눈에 가장 안 띄는 학생이 구조적으로 가장 중요할 수 있다.

② 매개 중심성이 0인 학생이 많은 것은 정상이다 — 나쁜 신호가 아니다. 우리 학급도 7명 중 4명이 0이다. CB=0C_B = 0은 "친구가 없다"가 아니라 "내 친구들끼리도 이미 서로 안다"는 뜻이다(§5-2). 오히려 촘촘한 모둠 안에 잘 소속되어 있다는 긍정적 신호일 수 있다. CB=0C_B = 0을 소외 지표로 오해하지 말 것 — 소외는 연결정도와 근접 중심성으로 본다.

③ 매개 중심성이 높은 학생은 부담을 진다. S4는 왼쪽·오른쪽 모둠 사이의 모든 소통을 혼자 감당한다. 현실에서 이런 학생은 양쪽에서 정보 전달을 요구받고, 양쪽 모둠 갈등 상황에서 중간에 끼어 곤란해지기 쉽다. "중요한 위치 = 좋은 위치"가 아니다. 중개 부담이 한 명에게 쏠려 있으면 다리를 하나 더 놓아 주는 것이 개입 방향이다 (연습 1에서 그 효과를 계산한다).

④ 학급 진단에는 세 지표를 함께 본다. §8의 표가 진단표의 표준 형태다. 지표 하나로는 늘 반쪽이다:

  • CDC_D 낮음 + CCC_C 낮음 + CB=0C_B = 0진짜 주변부 학생. 개입 1순위
  • CDC_D 낮음 + CCC_C 높음 + CBC_B 높음 → 다리 학생(S4형). 부담 점검
  • CDC_D 높음 + CB=0C_B = 0모둠 안의 인기 학생. 모둠 밖과는 단절
  • CDC_D 높음 + CBC_B 높음 → 진짜 학급 리더(S3·S5형)

⑤ 매개 중심화 0.42는 "중개 권력의 집중"을 경고한다. 연결정도 중심화 0.17만 보고 "우리 반은 평등하다"고 결론지었다면 틀렸다. 친구 관계는 고르게 퍼져 있는데 정보의 통로는 세 명이 쥐고 있다. 소문의 확산, 모둠 간 오해, 담임 전달 사항의 왜곡이 모두 이 세 명을 통해 일어난다는 뜻이다. 학급 전체 지표는 반드시 세 종류를 다 계산해 비교해야 한다.

12. 연습문제 (Exercises)

문제 1. 세 단원 연속으로 다룬 S4–S6 관계 추가를 매개 중심성으로 본다. ① 이 변화로 최단경로가 두 개가 되는 쌍이 생긴다. 어떤 쌍인지 찾고 두 경로를 모두 쓰시오. ② S5의 매개 중심성을 15개 쌍 전부 전개해 구하시오 (분수 gjk(i)/gjkg_{jk}(i)/g_{jk}가 실제로 필요하다). ③ 일곱 명의 bib_i를 모두 구하고, 이전 (0,0,8,9,8,0,0)(0,0,8,9,8,0,0)과 비교하시오. S5에게 무슨 일이 일어났는가? ④ 매개 중심화를 구하시오. 단원 2-1 연습 1에서 연결정도 중심화는 0.1667에서 0.1로 내려갔다. 매개 중심화는 어떻게 되는가? 왜 그런가?

문제 2. 허브 시나리오(S3–S5, S3–S6, S3–S7 추가)를 매개 중심성으로 본다. ① S3의 매개 중심성을 구하시오(15개 쌍 전부). ② S4의 매개 중심성은 얼마인가? 15개 쌍을 전부 확인하시오. ③ 단원 2-1 연습 2에서 S4의 연결정도는 2로 그대로였고, 단원 2-2 연습 2에서 근접 중심성도 0.6으로 그대로였다. 매개 중심성은 어떻게 되었는가? 세 지표 중 무엇이 S4의 처지 변화를 가장 정확히 잡아냈는가? ④ 매개 중심화를 구하시오.

먼저 스스로 풀고 §13 해설과 맞춰 볼 것.

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

13-1. 문제 1 — 다리를 하나 더 놓으면 누가 권력을 잃는가 (Who Loses Power)

바뀐 인접행렬(빨간 두 칸):

U=S1S2S3S4S5S6S7S10110000S21010000S31101000S40010110S50001011S60001101S70000110 U'=\begin{array}{c|ccccccc} & \text{S1} & \text{S2} & \text{S3} & \text{S4} & \text{S5} & \text{S6} & \text{S7}\\ \hline \text{S1} & 0&1&1&0&0&0&0\\ \text{S2} & 1&0&1&0&0&0&0\\ \text{S3} & 1&1&0&1&0&0&0\\ \text{S4} & 0&0&1&0&1&\color{#b91c1c}{1}&0\\ \text{S5} & 0&0&0&1&0&1&1\\ \text{S6} & 0&0&0&\color{#b91c1c}{1}&1&0&1\\ \text{S7} & 0&0&0&0&1&1&0 \end{array}

① 최단경로가 두 개가 되는 쌍. S4–S5–S6–S4가 삼각형을 이루므로 S4에서 오른쪽으로 가는 길이 로 갈라진다. S7에 닿는 쌍에서 이 갈림이 살아남는다:

ddgjkg_{jk}최단경로 1최단경로 2
S4–S722S4-S5-S7S4-S6-S7
S3–S732S3-S4-S5-S7S3-S4-S6-S7
S1–S742S1-S3-S4-S5-S7S1-S3-S4-S6-S7
S2–S742S2-S3-S4-S5-S7S2-S3-S4-S6-S7

답 ① S4–S7, S3–S7, S1–S7, S2–S7의 네 쌍에서 최단경로가 2개다. 공통점은 도착점이 모두 S7이라는 것 — S7에 가려면 S5를 거치거나 S6을 거치거나, 어느 쪽이든 같은 걸음 수이기 때문이다. (S6에 가는 쌍은 왜 안 갈라지는가? S4-S6이 직접 연결이라 유일하다.)

② S5의 15개 쌍 전부.

#최단경로 전부gjkg_{jk}gjk(S5)g_{jk}(\text{S5})기여왜 그 값인가
1S1–S2S1-S2100직접 연결
2S1–S3S1-S3100직접 연결
3S1–S4S1-S3-S4100S3만 거친다
4S1–S6S1-S3-S4-S6100이제 S4에서 S6으로 직행 — S5 불필요
5S1–S7S1-S3-S4-S5-S7 | S1-S3-S4-S6-S72112\tfrac12둘 중 하나만 S5를 지난다
6S2–S3S2-S3100직접 연결
7S2–S4S2-S3-S4100S3만 거친다
8S2–S6S2-S3-S4-S6100S4→S6 직행 — S5 불필요
9S2–S7S2-S3-S4-S5-S7 | S2-S3-S4-S6-S72112\tfrac12절반만 S5를 지난다
10S3–S4S3-S4100직접 연결
11S3–S6S3-S4-S6100S4→S6 직행 — S5 불필요
12S3–S7S3-S4-S5-S7 | S3-S4-S6-S72112\tfrac12절반만 S5를 지난다
13S4–S6S4-S6100새로 생긴 직접 연결
14S4–S7S4-S5-S7 | S4-S6-S72112\tfrac12절반만 S5를 지난다
15S6–S7S6-S7100직접 연결
bS5b_{\text{S5}} 합계2
bS5=0+0+0+0+12+0+0+0+12+0+0+12+0+12+0=4×12=2 b_{\text{S5}} = 0+0+0+0+\tfrac12+0+0+0+\tfrac12+0+0+\tfrac12+0+\tfrac12+0 = 4 \times \tfrac12 = \mathbf{2}

③ 일곱 명 전부. S6은 S5와 완전히 대칭이므로 같은 논리로 2다.

학생이전 bib_i이후 bib_i변화이후 CB=b/15C_B = b/15이유
S1000여전히 삼각형 안쪽
S2000여전히 삼각형 안쪽
S3880.5333{S1,S2}가 바깥으로 나가는 유일한 문 — 그대로
S4990.6000여전히 절단점. 새 다리도 S4가 쥐고 있다
S582−60.1333독점 상실 — S6이 우회로가 되었다
S602+20.1333새 다리를 얻어 중개자로 데뷔
S7000여전히 삼각형 안쪽
2521−4

답 ③ b=(0,0,8,9,2,2,0)b = (0,\,0,\,8,\,\mathbf{9},\,2,\,2,\,0). S5에게 일어난 일: 8에서 2로 폭락(−75%)했다. S5는 관계를 하나도 잃지 않았는데(연결정도 3 그대로) 중개 권력만 사라졌다. 이전에는 오른쪽 모둠으로 들어가는 문이 S5뿐이었지만, 이제 S6이라는 대체 통로가 생겨 네 쌍에서 권력을 반씩 나눠 갖게 되었다.

그리고 S5는 절단점에서도 탈락했다. articulation_points()가 이제 S4, S3 둘만 돌려준다. S5를 지워도 S4-S6-S7이 남아 학급이 갈라지지 않는다. 반면 S6은 b=2>0b = 2 > 0이면서도 절단점이 아니다 — §6에서 예고한 "bi>0b_i > 0이지만 절단점은 아닌" 경우가 바로 이것이다.

④ 매개 중심화. bmax=9b_{\max} = 9 그대로다.

iiS1S2S3S4S5S6S7
bib_i008922021
9bi9-b_i991077942
i(9bi)=9+9+1+0+7+7+9=42CB=4290=715=0.4667 \sum_i (9-b_i) = 9+9+1+0+7+7+9 = \mathbf{42} \qquad C_B = \frac{42}{90} = \frac{7}{15} = \mathbf{0.4667}

답 ④ 매개 중심화는 0.4222에서 0.4667로 올라갔다 — 같은 개입에서 연결정도 중심화는 0.1667 → 0.1로 내려갔는데 정반대다.

지표이전이후방향읽는 법
밀도0.38100.4286관계가 늘었다
연결정도 중심화0.16670.1000인기가 더 고르게
근접 중심성 (S4)0.60.6667전체가 더 가까워졌다
매개 중심화0.42220.4667중개 권력은 더 쏠렸다

왜 그런가. 중심화는 1등과의 격차의 합이다. 1등 S4는 9로 그대로인데 2등이던 S5가 8에서 2로 떨어졌으니, S5와 1등의 격차가 171 \to 76이나 벌어졌다. S6이 0에서 2로 올라 격차를 2 줄였지만(9→7), 순손실은 +62=+4+6-2 = +4다. 2등을 끌어내리는 것도 "1등에게 쏠림"으로 계산된다는 뜻이다.

교실 해석. 이 개입은 세 단원에 걸쳐 매번 다른 평가를 받았다. 연결정도로 보면 성공(중심화 ↓), 근접으로 보면 성공(전원 접근성 ↑, 단 S7만 제외), 매개로 보면 절반의 성공이다. 좋은 소식은 S5의 중개 부담이 8에서 2로 줄어 과부하가 해소되었다는 것이고 (§11③에서 말한 "다리를 하나 더 놓아 주기"가 정확히 작동했다), 나쁜 소식진짜 병목인 S4는 전혀 건드리지 못했다는 것이다. S4는 여전히 9를 혼자 지고 있고 여전히 유일한 3·3 절단점이다. 다리를 놓을 때는 "누구의 부담을 덜 것인가"를 정하고 놓아야 한다 — 이 개입은 S5를 도왔지 S4를 돕지 않았다. S4의 부담을 덜려면 왼쪽 모둠과 오른쪽 모둠을 S4를 거치지 않고 잇는 관계 (예: S3–S5 또는 S1–S6)가 필요하다.

13-2. 문제 2 — 허브가 생기면 다리 학생은 (When a Hub Appears)

바뀐 인접행렬(S3의 행·열에 세 칸씩):

U=S1S2S3S4S5S6S7S10110000S21010000S31101111S40010100S50011011S60010101S70010110 U''=\begin{array}{c|ccccccc} & \text{S1} & \text{S2} & \text{S3} & \text{S4} & \text{S5} & \text{S6} & \text{S7}\\ \hline \text{S1} & 0&1&1&0&0&0&0\\ \text{S2} & 1&0&1&0&0&0&0\\ \text{S3} & 1&1&0&1&\color{#b91c1c}{1}&\color{#b91c1c}{1}&\color{#b91c1c}{1}\\ \text{S4} & 0&0&1&0&1&0&0\\ \text{S5} & 0&0&\color{#b91c1c}{1}&1&0&1&1\\ \text{S6} & 0&0&\color{#b91c1c}{1}&0&1&0&1\\ \text{S7} & 0&0&\color{#b91c1c}{1}&0&1&1&0 \end{array}

① S3의 15개 쌍. S3이 전원과 직접 연결되므로 어떤 쌍이든 S3을 거치면 2걸음이다.

#최단경로 전부gjkg_{jk}gjk(S3)g_{jk}(\text{S3})기여왜 그 값인가
1S1–S2S1-S2100직접 연결
2S1–S4S1-S3-S4111S1이 바깥으로 나가는 유일한 문
3S1–S5S1-S3-S5111같은 이유
4S1–S6S1-S3-S6111같은 이유
5S1–S7S1-S3-S7111같은 이유
6S2–S4S2-S3-S4111S2도 마찬가지
7S2–S5S2-S3-S5111같은 이유
8S2–S6S2-S3-S6111같은 이유
9S2–S7S2-S3-S7111같은 이유
10S4–S5S4-S5100직접 연결
11S4–S6S4-S5-S6 | S4-S3-S62112\tfrac12S5 경유와 S3 경유가 동률
12S4–S7S4-S5-S7 | S4-S3-S72112\tfrac12같은 이유
13S5–S6S5-S6100직접 연결
14S5–S7S5-S7100직접 연결
15S6–S7S6-S7100직접 연결
bS3b_{\text{S3}} 합계9
bS3=0+1+1+1+1S1과 짝+1+1+1+1S2와 짝+0+12+12+0+0+0=8+1=9 b_{\text{S3}} = 0 + \underbrace{1+1+1+1}_{\text{S1과 짝}} + \underbrace{1+1+1+1}_{\text{S2와 짝}} + 0 + \tfrac12 + \tfrac12 + 0+0+0 = 8 + 1 = \mathbf{9}

② S4의 15개 쌍 — 전부 0이다.

#최단경로기여#최단경로기여
1S1–S2S1-S209S2–S7S2-S3-S70
2S1–S3S1-S3010S3–S5S3-S50
3S1–S5S1-S3-S5011S3–S6S3-S60
4S1–S6S1-S3-S6012S3–S7S3-S70
5S1–S7S1-S3-S7013S5–S6S5-S60
6S2–S3S2-S3014S5–S7S5-S70
7S2–S5S2-S3-S5015S6–S7S6-S70
8S2–S6S2-S3-S60합 0

답 ①② b=(0,0,9,0,1,0,0)b = (0,\,0,\,\mathbf{9},\,\mathbf{0},\,1,\,0,\,0), CB=(0,0,0.6,0,0.0667,0,0)C_B = (0,\,0,\,0.6,\,\mathbf{0},\,0.0667,\,0,\,0).

S4의 매개 중심성이 9에서 0으로 완전히 사라졌다. 15개 쌍 중 단 하나도 S4를 지나지 않는다. 이유는 명확하다 — S4의 이웃은 S3과 S5 둘뿐인데, 이제 S3과 S5가 직접 연결되어 있다. S1의 사례(§5-2)와 정확히 같은 구조다: 내 이웃들이 서로 아는 사이가 되면 나는 중개할 것이 없어진다. S4는 1위(9)에서 꼴찌(0)가 되었다.

답 ③ 매개 중심성이 S4의 처지 변화를 압도적으로 정확하게 잡아냈다.

지표이전 값이후 값값 변화순위 변화진단
연결정도 CDC_D0.33330.33330%최하위 → 최하위아무것도 못 잡음
근접 CCC_C0.60000.60000%1위 → 공동 최하위순위로만 잡음
매개 CBC_B0.60000.0000−100%1위 → 꼴찌값으로 정확히 잡음

세 지표가 같은 사건을 세 가지로 보고한다. 연결정도는 "변화 없음"이라 하고, 근접은 "값은 같은데 순위가 떨어졌다"고 하고, 매개는 "가진 것을 전부 잃었다"고 한다. S4가 실제로 잃은 것은 "없으면 안 되는 자리"였으므로 매개의 진단이 맞다. 구조적 역할의 변화를 재려면 매개 중심성을 봐야 한다.

④ 매개 중심화. bmax=9b_{\max} = 9(S3)다.

iiS1S2S3S4S5S6S7
bib_i009010010
9bi9-b_i990989953
i(9bi)=9+9+0+9+8+9+9=53CB=5390=0.5889 \sum_i (9-b_i) = 9+9+0+9+8+9+9 = \mathbf{53} \qquad C_B = \frac{53}{90} = \mathbf{0.5889}

답 ④ 매개 중심화 0.4222 → 0.5889. 세 중심화를 모두 모으면:

중심화원래허브 시나리오배율
연결정도0.16670.6667×4.0
근접0.33330.7761×2.33
매개0.42220.5889×1.39

세 중심화가 모두 올라갔다 — 이번에는 모든 지표가 같은 방향을 가리킨다. 그리고 articulation_points()는 이제 S3 하나만 돌려준다. 원래 셋(S3·S4·S5)이던 절단점이 한 명으로 줄었다 — 학급 전체가 S3 한 명에게 완전히 의존하게 되었다는 뜻이다.

배율에 속지 말 것. 연결정도의 배율(×4.0)이 가장 커 보이지만 이는 원래 값이 0.1667로 매우 낮았던 탓이다. 절대값으로 보면 근접 0.7761이 가장 높고, 그다음이 연결정도 0.6667, 매개 0.5889다. 셋 중 어느 것도 "이 학급의 중심화"를 혼자 대표하지 못한다 — 항상 어떤 중심성 기준인지 밝히고 세 개를 함께 보고할 것(단원 2-2 §7).

# 문제 1 — S4-S6 추가
U1 <- U; U1["S4","S6"] <- 1; U1["S6","S4"] <- 1
g1 <- graph_from_adjacency_matrix(U1, mode = "undirected")
igraph::betweenness(g1)                  # 0 0 8 9 2 2 0     ← S5가 8에서 2로
round(igraph::betweenness(g1)/15, 4)     # 0 0 .5333 .6 .1333 .1333 0
sum(max(igraph::betweenness(g1)) - igraph::betweenness(g1))   # 42
centr_betw(g1)$centralization            # 0.4666667  ← 올라갔다
names(articulation_points(g1))           # "S4" "S3"   ← S5가 빠졌다
# 최단경로가 2개인 쌍 확인
length(all_shortest_paths(g1, "S4", "S7")$res)   # 2
length(all_shortest_paths(g1, "S4", "S6")$res)   # 1
sna::geodist(U1)$counts                  # S7 열/행에 2가 나타난다

# 문제 2 — S3를 허브로
U2 <- U
for (v in c("S5","S6","S7")) { U2["S3",v] <- 1; U2[v,"S3"] <- 1 }
g2 <- graph_from_adjacency_matrix(U2, mode = "undirected")
igraph::betweenness(g2)                  # 0 0 9 0 1 0 0     ← S4가 0으로
round(igraph::betweenness(g2)/15, 4)     # 0 0 .6 0 .0667 0 0
centr_betw(g2)$centralization            # 0.5888889
names(articulation_points(g2))           # "S3"        ← 절단점이 하나만 남았다
# S4가 정말 아무 경로에도 없는지
all_shortest_paths(g2, "S1", "S5")$res   # S1 S3 S5   ← S4를 안 지난다

오늘의 요약. 매개 중심성 bi=j<kgjk(i)/gjkb_i = \sum_{j\,<\,k} g_{jk}(i)/g_{jk} — 최단경로 위에서 받는 통행료다. 우리 학급은 21개 쌍의 최단경로가 전부 유일해서 계산이 깨끗하다: b=(0,0,8,9,8,0,0)b = (0,0,8,\mathbf{9},8,0,0), CB=b/15=(0,0,.5333,.6,.5333,0,0)C_B = b/15 = (0,0,.5333,\mathbf{.6},.5333,0,0). 절단점의 매개 중심성 = 갈라지는 두 조각 크기의 곱이라 S4는 3×3=93 \times 3 = 9, S3·S5는 2×4=82 \times 4 = 8이다. 검산: bi=4621=25\sum b_i = 46 - 21 = 25 ✓. 매개 중심화 38/90=0.422238/90 = 0.4222로 연결정도(0.1667)·근접(0.3333)보다 훨씬 높다친구 관계는 평등한데 정보 통로는 세 명이 장악하고 있다는 뜻이다.

다음 단원 — 2-4: 고유벡터 중심성과 페이지랭크. 지금까지의 세 지표는 모두 "몇 명"을 세었다. 네 번째 지표는 질문을 바꾼다 — "내 친구가 얼마나 중요한가". 중요한 친구를 둔 학생이 중요해지는 순환 정의를 고윳값 방정식 Ax=λxA\mathbf{x} = \lambda \mathbf{x}로 푼다. 단원 1-2의 A2A^2appendix 스크립트의 고윳값이 여기서 만난다. · 이 문서: notes/12_단원2-3_매개_중심성_최단경로_통행료.html