단원 2-2Closeness Centrality & the Infinity Problem
근접 중심성과 무한 거리 문제
- 오늘의 질문 (Today's Question)
- 정의 — 거리 합의 역수 (Definition)
- 손 계산 ① 거리행렬의 행합 (Row Sums of D)
- 손 계산 ② 근접 중심성 일곱 개 (Seven Values)
- 순위가 뒤집혔다 — S4의 역전 (The Reversal)
- 왜 뒤집히는가 — 국소 대 전역 (Local vs Global)
- 근접 중심화 (Closeness Centralization)
- 평균거리와 같은 재료 (Same Ingredients as Mean Distance)
- 문제 — 정의가 무너진다 (The Infinity Problem)
- 세 가지 처방과 조화 중심성 (Three Fixes & Harmonic Centrality)
- R 검증 — 패키지가 서로 다른 답을 준다 (R Verification)
- 교실 적용 (Classroom Application)
- 연습문제 (Exercises)
- 연습문제 해설과 답 (Solutions)
1. 오늘의 질문 (Today's Question)
단원 2-1에서 연결정도 중심성은 우리 학급을 2등급으로만 나눴다 — S3·S5가 0.5, 나머지 다섯 명이 0.3333. 그리고 가장 중요한 S4를 최하위로 매겼다. 연결정도는 거리 1까지만 보기 때문이다.
이 질문에는 거리 1이 아니라 모든 거리가 필요하다. 내 옆에 몇 명이 있느냐가 아니라, 내가 전원에게 평균 몇 걸음인가가 답이다. 단원 1-6에서 구한 거리행렬이 그대로 재료가 된다.
2. 정의 — 거리 합의 역수 (Definition)
발상은 두 단계다. ① 내가 전원까지 가는 거리를 모두 더한다(작을수록 가깝다). ② 그런데 "중심성"은 클수록 중심이어야 하니 역수를 취한다.
정의. 노드 의 거리 합을 라 하면
이므로 자기 자신 항은 합에 아무 영향이 없다 — 그래서 를 1부터 까지 다 돌려도 되고 만 돌려도 같다.
분자 은 어디서 왔는가. 가 가장 작아지는 경우를 생각한다. 가 전원과 직접 연결되어 있으면 모든 거리가 1이므로
따라서 는 0과 1 사이이고, 1이면 "전원과 직접 연결"이다. 와 상한이 같아 두 지표를 나란히 놓고 비교할 수 있다(§5에서 그렇게 한다). 값을 뒤집으면 더 직관적인 해석도 나온다:
오른쪽은 "에서 다른 학생까지의 거리를 다 더해 인원수로 나눈 것" — 곧 의 평균 거리다. 즉 근접 중심성은 평균 거리의 역수다. 면 평균 2걸음, 면 평균 4걸음이다.
정규화하지 않은 는 학급 간 비교에 쓸 수 없다. 는 학생 수가 늘면 자동으로 커지므로(더 많은 항을 더한다) 는 큰 학급에서 무조건 작아진다. 같은 학급 안에서 순위만 볼 때는 로 충분하지만, 값을 보고할 때는 반드시 을 곱한 정규화 값을 쓸 것.
3. 손 계산 ① 거리행렬의 행합 (Row Sums of D)
단원 1-8에서 구한 7명 무방향 네트워크의 거리행렬이다. 연결이 하나로 이어져 있으므로 가 없다(§9에서 이 조건이 깨지는 경우를 다룬다).
행합을 일곱 항 전부 전개한다. 세 학생을 대표로 보자.
3-1. S4 — 다리 학생 (가장 작다) (The Bridging Student: Smallest Sum)
| S1 | S2 | S3 | S4 | S5 | S6 | S7 | 합 | |
|---|---|---|---|---|---|---|---|---|
| 2 | 2 | 1 | 0 | 1 | 2 | 2 | 10 | |
| 경로 | S4–S3–S1 | S4–S3–S2 | S4–S3 | 자기 | S4–S5 | S4–S5–S6 | S4–S5–S7 | |
| 왜 그 값인가 | 이웃 S3을 거쳐 2걸음 | 직접 이웃 | 직접 이웃 | 이웃 S5를 거쳐 2걸음 | ||||
S4는 3걸음 이상 떨어진 학생이 한 명도 없다. 최대 거리가 2다. 이웃이 둘밖에 없는데도 전원에 2걸음 안에 닿는다 — 양쪽 모둠의 문 앞에 서 있기 때문이다.
3-2. S3 — 연결정도 1위 (Top by Degree)
| S1 | S2 | S3 | S4 | S5 | S6 | S7 | 합 | |
|---|---|---|---|---|---|---|---|---|
| 1 | 1 | 0 | 1 | 2 | 3 | 3 | 11 | |
| 왜 그 값인가 | 같은 삼각형 — 직접 | 자기 | 다리 — 직접 | S4 거쳐 | S4·S5 둘 다 거쳐야 3걸음 | |||
S3은 이웃이 셋이라 가까운 학생이 많지만, 반대편 모둠 끝(S6, S7)이 3걸음이라 손해를 본다.
3-3. S1 — 삼각형 안쪽 (Inside the Triangle)
| S1 | S2 | S3 | S4 | S5 | S6 | S7 | 합 | |
|---|---|---|---|---|---|---|---|---|
| 0 | 1 | 1 | 2 | 3 | 4 | 4 | 15 | |
| 경로 | 자기 | S1–S2 | S1–S3 | S1–S3–S4 | S1–S3–S4–S5 | …–S5–S6 | …–S5–S7 |
S1은 지름의 한쪽 끝이다. S6·S7까지 4걸음 — 이 학급에서 가장 먼 거리(지름 4)다.
3-4. 전체 행합 (All Row Sums)
| 학생 | S1 | S2 | S3 | S4 | S5 | S6 | S7 | 합 |
|---|---|---|---|---|---|---|---|---|
| (행합) | 15 | 15 | 11 | 10 | 11 | 15 | 15 | 92 |
| 최대 거리 | 4 | 4 | 3 | 2 | 3 | 4 | 4 |
검산: 는 대칭이므로 모든 행합의 합은 모든 쌍 거리의 두 배다. 상삼각 합이 46이므로 ✓ (단원 1-8 §9의 평균거리 계산에 썼던 46이다.)
4. 손 계산 ② 근접 중심성 일곱 개 (Seven Values)
을 각 행합으로 나눈다.
| 학생 | 소수 | 평균 거리 | 순위 | |||
|---|---|---|---|---|---|---|
| S1 | 15 | 0.4000 | 2.50 | 4위 | ||
| S2 | 15 | 0.4000 | 2.50 | 4위 | ||
| S3 | 11 | 0.5455 | 1.83 | 2위 | ||
| S4 | 10 | 0.6000 | 1.67 | 1위 | ||
| S5 | 11 | 0.5455 | 1.83 | 2위 | ||
| S6 | 15 | 0.4000 | 2.50 | 4위 | ||
| S7 | 15 | 0.4000 | 2.50 | 4위 |
S4의 값을 검산해 보자: 이고 그 역수 은 "S4에서 다른 학생까지 평균 1.67걸음"이다. 실제로 S4는 이웃 2명이 1걸음, 나머지 4명이 2걸음이므로
5. 순위가 뒤집혔다 — S4의 역전 (The Reversal)
단원 2-1의 결과와 나란히 놓는다. 같은 데이터, 같은 학생, 다른 답이다.
| 학생 | 연결정도 순위 | 근접 순위 | 변화 | ||||
|---|---|---|---|---|---|---|---|
| S4 | 2 | 0.3333 | 3위 (공동 최하위) | 10 | 0.6000 | 1위 | 최하위 → 1위 ⬆⬆ |
| S3 | 3 | 0.5000 | 1위 | 11 | 0.5455 | 2위 | 1위 → 2위 ⬇ |
| S5 | 3 | 0.5000 | 1위 | 11 | 0.5455 | 2위 | 1위 → 2위 ⬇ |
| S1 | 2 | 0.3333 | 3위 | 15 | 0.4000 | 4위 | 3위 → 4위 ⬇ |
| S2 | 2 | 0.3333 | 3위 | 15 | 0.4000 | 4위 | 3위 → 4위 ⬇ |
| S6 | 2 | 0.3333 | 3위 | 15 | 0.4000 | 4위 | 3위 → 4위 ⬇ |
| S7 | 2 | 0.3333 | 3위 | 15 | 0.4000 | 4위 | 3위 → 4위 ⬇ |
답이 완전히 달라졌다.
- 공지 사항을 한 명에게 말한다면 S4다 — 연결정도 최하위 학생.
- 등급이 2개에서 3개로 늘었다(0.6 / 0.5455 / 0.4). 근접 중심성이 더 분해력이 높다.
- S1·S2와 S6·S7이 여전히 구별되지 않는다 — 둘 다 0.4. 구조적으로 대칭이라 어떤 지표로도 구별할 수 없다(진짜 동등하다).
S4가 1위인 이유를 한 문장으로: S4는 이웃이 가장 적지만 아무도 멀지 않다. 연결정도는 "몇 명이 내 옆에 있나"를 물었고, 근접 중심성은 "내가 아무에게도 멀지 않은가"를 물었다.
6. 왜 뒤집히는가 — 국소 대 전역 (Local vs Global)
두 지표가 같은 거리행렬의 어느 부분을 쓰는지 비교하면 원인이 정확히 보인다.
| 학생 | 인 학생 수 | 전개 | ||||
|---|---|---|---|---|---|---|
| S1 | 2 | 1 | 1 | 2 | 15 | |
| S3 | 3 | 1 | 2 | 0 | 11 | |
| S4 | 2 | 4 | 0 | 0 | 10 |
연결정도는 첫 열만 본다. 첫 열만 보면 S3(3) > S4(2)다 — S3의 승리. 그런데 나머지 세 열을 더하면 S3은 3걸음짜리를 2명 갖고 있고 S4는 한 명도 없다.
멀리 있는 학생이 손해를 훨씬 크게 준다는 것이 핵심이다. S3이 이웃 하나를 더 가진 이득은 이지만, 3걸음 학생 두 명이 주는 손해는 다. 합해서 S3이 1만큼 불리하다: ✓ 근접 중심성은 "가까운 사람이 많은가"보다 "먼 사람이 없는가"를 더 중요하게 본다.
7. 근접 중심화 (Closeness Centralization)
단원 2-1의 Freeman 중심화 틀을 그대로 쓴다 — 1등과의 격차의 합 ÷ 이론상 최대. 다만 이번에는 정규화된 중심성 값으로 계산한다.
7-1. 분모를 유도한다 — 별 그래프 (Deriving the Denominator: The Star Graph)
연결정도에서 그랬듯 별 그래프가 최대다. 로 계산한다.
| 역할 | 거리 구성 | |||
|---|---|---|---|---|
| 허브 (1명) | 6명 전부 1걸음 | 0 | ||
| 잎 (6명) | 허브 1걸음 + 다른 잎 5명 2걸음 |
일반화하면 잎의 거리 합은 이므로
이면 ✓ — 위와 일치한다.
7-2. 우리 학급의 값 (The Value for Our Class)
(S4)이다. 일곱 항 전부 전개한다.
| S1 | S2 | S3 | S4 | S5 | S6 | S7 | 합 | |
|---|---|---|---|---|---|---|---|---|
| ? | ||||||||
| 소수 | 0.2 | 0.2 | 0.054545 | 0 | 0.054545 | 0.2 | 0.2 | 0.909091 |
분수로 정확히 더해 보면:
정확히 이다 — 분모의 11이 깨끗하게 약분된다.
비교하면 흥미롭다. 같은 학급의 연결정도 중심화는 0.1667(단원 2-1)이었고 근접 중심화는 0.3333 — 정확히 두 배다. 같은 네트워크인데 "얼마나 한 명에게 쏠렸는가"의 답이 지표에 따라 다르다. 따라서 "이 학급의 중심화"라는 말은 성립하지 않는다 — 반드시 "연결정도 중심화 0.17, 근접 중심화 0.33"처럼 어떤 중심성 기준인지 밝혀야 한다.
8. 평균거리와 같은 재료 (Same Ingredients as Mean Distance)
단원 1-8에서 이 네트워크의 평균거리를 2.1905라고 구했다. 그 값과 근접 중심성은 같은 숫자로 만들어진다.
| 지표 | 계산 | 값 | 무엇을 말하는가 |
|---|---|---|---|
| 근접 중심성 | — 행마다 | 7개 | 학생 개인이 전체에 얼마나 가까운가 |
| 평균거리 | — 전부 합쳐 | 1개 | 학급 전체가 얼마나 촘촘한가 |
둘의 관계는 조화평균이 아니라 산술평균의 역수 관계다:
확인: ✓
실무적 함의. 거리행렬 하나만 계산해 두면 평균거리·지름·근접 중심성·근접 중심화가 전부 나온다. 그래서 분석 순서상 를 먼저 구하는 것이 효율적이다 — 단원 1-9의 체크리스트에서 거리를 6·7번에 둔 이유다.
9. 문제 — 정의가 무너진다 (The Infinity Problem)
단원 1-6 §9⑤에서 예고한 문제다. 지금까지는 모든 학생이 연결되어 있었다. 그렇지 않으면 무슨 일이 생기는가?
S8을 추가한다 — 아무와도 연결되지 않은 완전 고립 학생. 엣지는 그대로 8개이고 노드만 8개가 된다.
여덟 명 전원의 가 가 된다. S8 하나가 도달 불가라는 이유로, 아무 문제 없던 S1~S7의 거리 합까지 전부 가 된다. 합에 가 하나라도 들어가면 합 전체가 이기 때문이다.
따라서 — 여덟 명 전원의 근접 중심성이 0이다. "모두가 똑같이 중심에서 멀다"는 무의미한 결론이 나온다. 고립 학생 한 명이 학급 전체의 지표를 파괴한다.
이것은 단원 2-1의 연결정도와 결정적으로 다른 점이다. 연결정도는 , 이고 나머지 일곱 명은 아무 영향도 받지 않았다 (분모만 로 바뀐다). 합에 가 섞이는 지표는 근접 중심성뿐이다.
| 지표 | 고립 학생 S8 추가의 영향 |
|---|---|
| 연결정도 | S8만 0. 나머지는 분모가 6→7이 되어 값이 조금 줄 뿐 순위 불변 |
| 밀도 | 로 줄어든다 — 정상적인 반응 |
| 컴포넌트 | 1개 → 2개. 정확히 문제를 잡아낸다 |
| 근접 | 전원 0 — 완전히 무용지물 |
10. 세 가지 처방과 조화 중심성 (Three Fixes & Harmonic Centrality)
10-1. 처방 ① 컴포넌트 안에서만 계산 (Remedy I: Compute Within Components)
가장 큰 컴포넌트(S1~S7)만 떼어 내서 근접 중심성을 계산하고, 고립 학생은 별도로 보고한다.
| 학생 | S1 | S2 | S3 | S4 | S5 | S6 | S7 | S8 |
|---|---|---|---|---|---|---|---|---|
| (컴포넌트 내) | 0.4 | 0.4 | 0.5455 | 0.6 | 0.5455 | 0.4 | 0.4 | 정의 불가 |
장점과 함정. 값이 §4와 똑같이 나온다 — S8이 존재하지 않는 것처럼 계산했으니 당연하다. 그런데 바로 그것이 함정이다. "S1의 근접 중심성 0.4"라는 보고만 보면 학급에 고립 학생이 있다는 사실이 완전히 사라진다. 이 방법을 쓸 때는 반드시 "7명 컴포넌트 기준, S8 제외"라고 명시해야 한다.
10-2. 처방 ② 를 유한한 값으로 대체 (Remedy II: Replace Infinity with a Finite Value)
도달 불가를 이나 같은 "지름보다 큰 수"로 바꾼다
(단원 1-6 §8에서 본 sna::geodist(inf.replace=)의 방식).
권하지 않는다. 대체값을 무엇으로 정하느냐에 따라 결과가 바뀌는데 그 값에 이론적 근거가 없다. 를 8로 바꾸면 S8의 , 9로 바꾸면 63이다. "고립 학생이 얼마나 멀리 있는가"를 분석자가 임의로 정하는 셈이다. 보고서에 쓸 수는 있지만 반드시 대체값을 밝혀야 하고, 다른 연구와 비교할 수 없다.
10-3. 처방 ③ 조화 중심성 — 합의 역수가 아니라 역수의 합 (Remedy III: Harmonic Centrality)
문제의 뿌리는 먼저 더하고 나중에 뒤집는 순서다. 순서를 바꾸면 가 저절로 해결된다.
정의 (조화 중심성, harmonic centrality).
비교. 근접은 — 합의 역수. 조화는 — 역수의 합. 인 항이 합 전체를 망치지 않고 자기 항만 0으로 기여한다.
손 계산. S4와 S1을 각각 여섯 항 전부 전개한다.
| S1 | S2 | S3 | S5 | S6 | S7 | 합 | ||
|---|---|---|---|---|---|---|---|---|
| 2 | 2 | 1 | 1 | 2 | 2 | |||
| 1 | 1 | 0.6667 |
| S2 | S3 | S4 | S5 | S6 | S7 | 합 | ||
|---|---|---|---|---|---|---|---|---|
| 1 | 1 | 2 | 3 | 4 | 4 | |||
| 1 | 1 | 0.5556 |
일곱 명 전부, 그리고 근접과의 비교:
| 학생 | S1 | S2 | S3 | S4 | S5 | S6 | S7 |
|---|---|---|---|---|---|---|---|
| 4 | |||||||
| 0.5556 | 0.5556 | 0.6944 | 0.6667 | 0.6944 | 0.5556 | 0.5556 | |
| 조화 순위 | 3위 | 3위 | 1위 | 2위 | 1위 | 3위 | 3위 |
| 0.4 | 0.4 | 0.5455 | 0.6 | 0.5455 | 0.4 | 0.4 | |
| 근접 순위 | 4위 | 4위 | 2위 | 1위 | 2위 | 4위 | 4위 |
조화 중심성과 근접 중심성이 1위를 다르게 뽑는다. 조화는 S3·S5(0.6944)를 1위로, 근접은 S4(0.6)를 1위로 매긴다.
왜 그런가. 조화 중심성은 를 쓰므로 먼 학생의 영향력을 급격히 줄인다. 거리 4는 밖에 기여하지 않는다. 그래서 "이웃이 셋"이라는 S3의 국소적 이득()이 살아남는다. 근접 중심성은 거리 4를 그대로 4로 세므로 먼 학생의 벌점이 훨씬 크고, S4가 유리하다. 지표 선택이 곧 "먼 관계를 얼마나 중요하게 볼 것인가"라는 판단이다 — 정답은 없고, 무엇을 골랐는지 밝히는 것이 정답이다.
그리고 문제는 해결된다. S8을 추가한 8명 네트워크에서 (로 나눈다):
| 학생 | S1 | S2 | S3 | S4 | S5 | S6 | S7 | S8 |
|---|---|---|---|---|---|---|---|---|
| 4 | 0 | |||||||
| 0.4762 | 0.4762 | 0.5952 | 0.5714 | 0.5952 | 0.4762 | 0.4762 | 0.0000 | |
| (근접) | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
조화 중심성은 정확히 옳은 답을 준다. S8은 0(아무에게도 닿지 않으므로), 나머지는 S8 항만 0으로 기여하고 서로 간의 순위는 그대로 유지된다(S3·S5 > S4 > 나머지). 값이 조금 내려간 것(0.6944 → 0.5952)도 정직하다 — "닿지 않는 학생이 한 명 생겼으니 모두의 도달 범위가 실제로 줄었다"는 뜻이다. 연결이 끊긴 네트워크에서는 근접 중심성 대신 조화 중심성을 쓴다가 결론이다.
11. R 검증 — 패키지가 서로 다른 답을 준다 (R Verification)
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")
# ① 거리행렬과 행합 — 손 계산의 재료
D <- distances(g)
rowSums(D) # 15 15 11 10 11 15 15
# ② 근접 중심성
6 / rowSums(D) # .4 .4 .5455 .6 .5455 .4 .4
igraph::closeness(g, normalized = TRUE) # 같은 값 ✓
igraph::closeness(g) # .0667 .0667 .0909 .1 .0909 .0667 .0667 (1/s_i)
# ③ 평균거리와의 관계 (§8)
sum(rowSums(D)) # 92
sum(rowSums(D)) / (7 * 6) # 2.190476
mean_distance(g) # 2.190476 ✓ 같다
# ④ 근접 중심화
cc <- 6 / rowSums(D)
sum(max(cc) - cc) # 0.9090909 = 10/11
centr_clo_tmax(g) # 2.727273 = 30/11
sum(max(cc) - cc) / centr_clo_tmax(g) # 0.3333333 = 1/3
centr_clo(g, mode = "all")$centralization # 0.3333333 ✓
centr_clo(g, mode = "all")$theoretical_max # 2.727273 ✓ 분모 확인
# ⑤ 조화 중심성
Dinv <- 1 / D; diag(Dinv) <- 0 # 1/0 = Inf 를 0으로 되돌린다
rowSums(Dinv) # 3.3333 3.3333 4.1667 4 4.1667 3.3333 3.3333
rowSums(Dinv) / 6 # .5556 .5556 .6944 .6667 .6944 .5556 .5556
harmonic_centrality(g, normalized = TRUE) # 같은 값 ✓
함정 ① — 연결이 끊긴 네트워크에서 igraph와 sna가 다른 답을 준다. 경고도 없다.
nm8 <- paste0("S", 1:8)
U8 <- matrix(0, 8, 8, dimnames = list(nm8, nm8)); U8[1:7, 1:7] <- U # S8 고립
g8 <- graph_from_adjacency_matrix(U8, mode = "undirected")
igraph::closeness(g8, normalized = TRUE)
# S1 .4 S2 .4 S3 .5455 S4 .6 S5 .5455 S6 .4 S7 .4 S8 NaN
# ↑ 7명 때와 완전히 똑같다 — igraph는 도달 가능한 쌍만 쓴다 (§10-1 처방①)
# ↑ 경고 메시지가 전혀 없다!
sna::closeness(U8, gmode = "graph")
# 0 0 0 0 0 0 0 0
# ↑ 여덟 명 전원 0 — sna는 정의를 그대로 따른다 (§9의 결과)
같은 데이터, 같은 지표, 완전히 다른 결론.
igraph는 "S4가 1위(0.6)", sna는 "전원 동일(0)"이라고 답한다.
어느 쪽도 버그가 아니다 — 를 어떻게 다룰지에 대한 서로 다른 선택이다.
따라서 근접 중심성을 계산할 때는 먼저 igraph::components(g)$no로
컴포넌트가 1개인지 확인하는 것이 필수 절차다.
1개가 아니면 값을 그대로 쓰지 말고 §10의 처방 중 하나를 명시적으로 골라야 한다.
함정 ② — sna를 불러오면 closeness도 가려진다.
library(sna) # igraph 뒤에 불러오면
closeness(g) # Error: unused argument (normalized = TRUE)
# ← sna::closeness가 호출된다!
igraph::closeness(g, normalized = TRUE) # 이렇게 명시해야 한다
단원 1-7에서 components·degree가 겹친다고 했는데
closeness·betweenness도 마찬가지다.
두 패키지를 함께 쓸 때는 항상 igraph:: 또는 sna::를 붙일 것.
참고 — sna로 조화 중심성 구하기.
sna::closeness(U, gmode="graph", cmode="suminvundir")가
igraph의 harmonic_centrality(g, normalized=TRUE)와 정확히 같은 값을 준다
(0.5556 0.5556 0.6944 0.6667 0.6944 0.5556 0.5556 — 확인함).
suminvundir는 "sum of inverse distances, undirected"의 약자다.
그리고 이 cmode는 8명 네트워크에서도 정상 작동한다
(0.4762 … 0.5952 0.5714 0.5952 … 0) — sna에서도 처방 ③을 쓸 수 있다.
12. 교실 적용 (Classroom Application)
① "한 명에게만 말해서 가장 빨리 퍼뜨리기"에는 근접 중심성이 답이다. 우리 예제의 답은 S4 — 친구가 가장 적은 학생이다. 직관에 반하지만 이유는 명확하다. S4는 양쪽 모둠 어디로도 2걸음 안에 닿는다. 반면 인기 있는 S3에게 말하면 반대편 모둠 끝(S6, S7)까지 3걸음이 걸린다. 공지·안내처럼 "전원에게 도달"이 목표라면 인기 학생이 아니라 가운데 학생에게 말해야 한다.
② 반대로, 소문이 안 퍼지게 하려면 근접 중심성이 낮은 학생을 봐야 한다. 가 0.4인 S1·S2·S6·S7은 평균 2.5걸음 떨어져 있다. 이 학생들에게서 시작한 이야기는 반 전체에 도달하는 데 시간이 더 걸린다. 학급의 정보 사각지대가 어디인지 알려 주는 지표다.
③ 문제는 학급 데이터에서 자주 일어난다 — 가장 실무적인 경고. "같이 놀고 싶은 친구 3명" 설문에서 아무도 지명하지 않고 아무에게도 지명받지 않은 학생이 한 명이라도 있으면 (또는 무리가 완전히 갈라져 있으면) 거리행렬에 가 생긴다. 그 순간 근접 중심성은 전원 0이 되거나(sna), 그 학생이 없는 것처럼 계산된다(igraph) — 어느 쪽도 그냥 쓰면 안 된다. 분석 순서를 반드시 이렇게 잡을 것: 컴포넌트 확인 → 1개가 아니면 조화 중심성 또는 "컴포넌트 내 계산 + 고립자 별도 보고".
④ 근접 중심성의 값 자체는 학급 규모에 민감하다. 정규화를 해도 완전히 해결되지 않는다. 30명 학급은 7명 학급보다 지름이 크기 마련이므로 값이 전반적으로 낮게 나온다. 다른 학급과 비교할 때는 값보다 순위·분포를, 같은 학급을 시간에 따라 볼 때는 값을 쓰는 것이 안전하다.
⑤ 그래도 아직 S4의 진짜 역할은 못 잡았다. 근접 중심성이 S4를 1위로 올린 것은 맞지만, 값 차이가 0.6 vs 0.5455로 크지 않다. "S4가 빠지면 학급이 두 조각이 된다"는 결정적 사실이 이 미미한 차이에 묻혀 있다. S4가 압도적으로 1위가 되는 지표는 다음 단원의 매개 중심성이다.
13. 연습문제 (Exercises)
문제 1. 단원 1-8 연습 1과 단원 2-1 연습 1에서 다룬 S4–S6 관계 추가를 다시 쓴다. ① 새 거리행렬에서 S6의 행을 일곱 항 전부 전개해 을 구하시오 (힌트: S6이 S4와 직접 이어지면 왼쪽 모둠까지의 거리가 줄어든다). ② 일곱 명의 와 를 모두 구하시오. ③ S7의 는 얼마인가? 이전과 비교해 어떻게 되었는가? 그런데 S7의 순위는 어떻게 되었는가? 이 결과를 한 문장으로 해석하시오. ④ 1위는 누구이고 값은 얼마인가?
문제 2. 단원 2-1 연습 2의 허브 시나리오를 다시 쓴다 (S3–S5, S3–S6, S3–S7 세 관계 추가). ① 일곱 명의 와 를 구하시오. S3의 값을 확인하고 무엇을 뜻하는지 쓰시오. ② S4의 값은 이전(0.6)과 비교해 어떻게 되었는가? 그리고 S4의 순위는 어떻게 되었는가? ③ 단원 2-1 연습 2에서 S4의 연결정도는 변하지 않았다(2 → 2). 이번에는 근접 중심성 값도 변하지 않았다. 그런데 두 경우 모두 S4의 처지는 나빠졌다. 무엇이 나빠진 것인가? ④ 이 학급의 지름과 평균거리는 어떻게 되는가?
먼저 스스로 풀고 §14 해설과 맞춰 볼 것.
14. 연습문제 해설과 답 (Solutions)
14-1. 문제 1 — 다리를 보강하면 누가 손해를 보는가 (Who Loses)
바뀐 인접행렬(빨간 두 칸 — 무방향이므로 대칭으로 두 개):
① S6의 행. S6은 이제 S4와 직접 이어지므로 왼쪽 모둠이 한 걸음씩 가까워진다. 일곱 항 전부:
| S1 | S2 | S3 | S4 | S5 | S6 | S7 | 합 | |
|---|---|---|---|---|---|---|---|---|
| 이전 | 4 | 4 | 3 | 2 | 1 | 0 | 1 | 15 |
| 이후 | 3 | 3 | 2 | 1 | 1 | 0 | 1 | 11 |
| 새 경로 | S6–S4–S3–S1 | S6–S4–S3–S2 | S6–S4–S3 | S6–S4 | S6–S5 | 자기 | S6–S7 | |
| 왜 줄었나 | S5를 거치지 않고 S4로 직행 — 네 칸이 1씩 줄었다 | 변화 없음 | −4 | |||||
② 새 거리행렬과 전체 값.
| 학생 | 이전 | 이후 | 이전 | 이후 | 변화 | 새 순위 |
|---|---|---|---|---|---|---|
| S1 | 15 | 14 | 0.4000 | ↑ | 4위 | |
| S2 | 15 | 14 | 0.4000 | ↑ | 4위 | |
| S3 | 11 | 10 | 0.5455 | ↑ | 2위 | |
| S4 | 10 | 9 | 0.6000 | ↑ | 1위 | |
| S5 | 11 | 11 | 0.5455 | — | 3위 | |
| S6 | 15 | 11 | 0.4000 | ↑↑ | 3위 | |
| S7 | 15 | 15 | 0.4000 | — | 7위 (단독 최하위) |
답 ① (15에서 4 줄었다) ② , ④ 1위는 S4, 값은 (이전 0.6에서 더 올랐다).
③ S7: 로 이전과 완전히 똑같다. S7의 거리 행은 한 칸도 바뀌지 않았다(4 4 3 2 1 1 0). 그런데 순위는 공동 4위에서 단독 7위(최하위)로 떨어졌다 — 이전에는 S1·S2·S6·S7 네 명이 함께 0.4였는데, 이제 나머지 셋이 다 올라가고 S7만 남았다.
답 ③ 해석 "S7은 아무것도 잃지 않았는데 학급에서 가장 먼 학생이 되었다." 중심성은 상대적 지표다 — 다른 학생들이 서로 가까워지면 가만히 있던 학생의 위치가 저절로 나빠진다. 절대값(0.4)만 보면 아무 일도 없었지만, 순위와 분포를 보면 S7이 홀로 남겨졌다.
14-2. 문제 2 — 허브가 생기면 가운데 학생은 (When a Hub Appears)
바뀐 인접행렬(S3의 행·열에 세 칸씩):
① 새 거리행렬. S3이 전원과 직접 연결되므로 어떤 두 학생도 S3을 거쳐 2걸음이면 닿는다 — 지름이 2로 줄어든다.
S3의 행을 일곱 항 전부 확인한다 — 전원이 1걸음이다:
| 학생 | 이전 | 이후 | 이전 | 이후 | 이전 순위 | 새 순위 |
|---|---|---|---|---|---|---|
| S1 | 15 | 10 | 0.4000 | 4위 | 5위 | |
| S2 | 15 | 10 | 0.4000 | 4위 | 5위 | |
| S3 | 11 | 6 | 0.5455 | 2위 | 1위 | |
| S4 | 10 | 10 | 0.6000 | 1위 | 5위 (공동 최하위) | |
| S5 | 11 | 8 | 0.5455 | 2위 | 2위 | |
| S6 | 15 | 9 | 0.4000 | 4위 | 3위 | |
| S7 | 15 | 9 | 0.4000 | 4위 | 3위 |
답 ① , . 은 이론상 최대값이며 "S3이 전원과 직접 연결되어 있다"는 뜻이다 — 별 그래프의 허브와 같은 위치다.
② S4: 가 10에서 10으로 그대로이므로 도 완전히 그대로다. 그런데 순위는 1위에서 공동 최하위(5위)로 떨어졌다. S4의 거리 행을 보면 이전 (2,2,1,0,1,2,2)에서 이후 (2,2,1,0,1,2,2) — 한 칸도 바뀌지 않았다. 다른 여섯 명이 모두 S3을 통해 가까워졌을 뿐이다.
답 ③ 나빠진 것은 값이 아니라 상대적 위치다. 두 연습을 나란히 놓으면 분명해진다:
| 지표 | 단원 2-1 연습 2 | 이 문제 | 공통점 |
|---|---|---|---|
| S4의 절대값 | 연결정도 2 → 2 | 0.6 → 0.6 | 변화 없음 |
| S4의 순위 | 공동 최하위 유지 | 1위 → 공동 최하위 | 나빠짐 |
| S4의 구조적 역할 | 절단점 상실 | 유일한 통로 상실 | 사라짐 |
S4가 잃은 것은 "없으면 안 되는 자리"다. 이전에는 왼쪽·오른쪽 모둠 사이의 모든 왕래가 S4를 지나야 했다. 이제는 S3이 양쪽 모둠 전원과 직접 이어져 있으므로 S4를 지날 필요가 없다 (예: S1–S3–S5). S4는 연결도 적고 구조적으로도 필요 없는 학생이 되었다 — 지표 값은 하나도 안 떨어졌는데 처지는 확실히 나빠졌다.
④ 지름과 평균거리. 에서 가장 큰 값은 2이므로 지름은 2다.
답 ④ 지름 , 평균거리 . 관계 3개를 추가한 것만으로 학급의 정보 전달 속도가 크게 빨라졌다. 겉으로 보이는 모든 전체 지표(밀도 0.38→0.52, 지름 4→2, 평균거리 2.19→1.48)가 일제히 개선되었다.
교실 해석. 전체 지표만 보면 이 개입은 대성공이다 — 평균거리가 2.19에서 1.48로, 지름이 4에서 2로 떨어졌다. "공지가 두 걸음 안에 반 전체에 도달한다"는 뜻이니 실제로 좋은 일이다.
그런데 대가가 있다. 그 속도는 전부 S3 한 명을 통과한다. S3이 결석하면 학급은 두 조각이 되고(단원 2-1 연습 2 ④), 근접 중심화도 급등한다. 그리고 S4는 값 하나 안 변한 채로 최하위가 되었다. 전체 지표의 개선이 개인의 개선을 뜻하지 않는다는 것이 단원 1-9 §11, 단원 2-1 연습 2에 이어 세 번째로 확인된 교훈이다. 학급 진단표를 만들 때 전체 지표 한 줄과 개인별 표를 항상 함께 두어야 하는 이유다.
# 문제 1 — S4-S6 추가
U1 <- U; U1["S4","S6"] <- 1; U1["S6","S4"] <- 1
g1 <- graph_from_adjacency_matrix(U1, mode = "undirected")
D1 <- distances(g1)
D1["S6", ] # 3 3 2 1 1 0 1
rowSums(D1) # 14 14 10 9 11 11 15
round(6 / rowSums(D1), 4) # .4286 .4286 .6 .6667 .5455 .5455 .4
igraph::closeness(g1, normalized = TRUE) # 같은 값 ✓
mean_distance(g1); diameter(g1) # 2 4
# S7만 그대로인지 확인
D1["S7", ] # 4 4 3 2 1 1 0 ← 한 칸도 안 바뀌었다
# 문제 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")
D2 <- distances(g2)
D2["S3", ] # 1 1 0 1 1 1 1 ← 전원이 1걸음
rowSums(D2) # 10 10 6 10 8 9 9
round(6 / rowSums(D2), 4) # .6 .6 1 .6 .75 .6667 .6667
igraph::closeness(g2, normalized = TRUE) # 같은 값 ✓
D2["S4", ] # 2 2 1 0 1 2 2 ← 이전과 동일
sum(rowSums(D2)) # 62
mean_distance(g2) # 1.476190 = 31/21
diameter(g2) # 2
centr_clo(g2, mode = "all")$centralization # 0.7761111 ← 0.3333에서 급등
오늘의 요약.
근접 중심성 — 역수를 취하면 평균 거리다.
우리 학급은 이므로
—
연결정도 최하위였던 S4가 1위로 뒤집혔다.
근접 중심화는 로 연결정도 중심화(0.1667)의 정확히 두 배다.
가 하나만 있어도 정의가 무너지므로
컴포넌트가 1개인지 먼저 확인하고, 아니면 조화 중심성
를 쓴다.
igraph와 sna가 를 다르게 처리하니 components(g)$no 확인이 필수다.
다음 단원 — 2-3: 매개 중심성 — 최단경로를 몇 번 지나는가.
드디어 S4의 진짜 역할을 잡아내는 지표다.
"S1이 S6에게 말을 전하려면 반드시 누구를 거쳐야 하는가"를 모든 쌍에 대해 세어
S4가 압도적 1위가 되는 것을 손으로 확인한다.
단원 1-6 §8에서 예고한 sna::geodist()$counts(최단경로의 개수)가 여기서 재료가 된다.
· 이 문서: notes/11_단원2-2_근접_중심성과_무한거리_문제.html