단원 4-2The Poisson Limit and the Giant Component
푸아송 근사와 거대 컴포넌트 — 평균 차수 1이라는 임계점
망이 커지면 같은 수는 손으로도 컴퓨터로도 다루기 나쁘다. 그런데 이 크고 가 작으면 이항분포는 매개변수 하나짜리 푸아송 분포로 무너진다 — . 오늘은 ① 그 무너짐을 네 조각으로 쪼개 손으로 확인하고, ② 거기서 곧바로 나오는 고립자 기대 수 를 FMH의 실제 고립 학생 524명과 맞춰 보고, ③ 평균 차수가 1을 넘는 순간 망을 관통하는 덩어리가 갑자기 생기는 상전이를 반복 대입으로 손 계산한다.
오늘의 결론을 미리 말하면 — FMH는 고립자가 139명 남고, 거대 덩어리는 225명 모자란다. 같은 평균인데 바깥은 더 붐비고 안쪽은 더 헐겁다.
- 오늘의 질문: 1461명짜리 이항분포를 어떻게 다루나 (Why the Binomial Breaks Down)
- 정의 — 푸아송 분포 (The Poisson Distribution)
- 손 계산 ① 이항이 푸아송으로 가는 길 — 네 조각 (The Poisson Limit in Four Pieces)
- 손 계산 ② 의 여섯 항 전부 (All Six Terms at )
- 수렴을 눈으로 보기 (Watching the Convergence)
- 손 계산 ③ 고립자 기대 수 (Expected Number of Isolates)
- FMH 대조 ① 고립 학생 524명 (FMH: 524 Isolated Students)
- 정말 어긋나는가 — 카이제곱과 무작위화 (Chi-Square and Randomization)
- 거대 컴포넌트 — 분지 과정으로 세는 법 (The Branching Process)
- 손 계산 ④ 반복 대입 열두 번 (Twelve Iterations by Hand)
- 임계점 — 왜 하필 1인가 (The Critical Point)
- FMH 대조 ② 거대 컴포넌트 439명 (FMH: A Giant That Is Too Small)
- R 검증 (R Verification)
- 교실 적용 (Classroom Application)
- 연습문제 (Exercises)
- 해설과 답 (Solutions)
1. 오늘의 질문: 1461명짜리 이항분포를 어떻게 다루나 (Why the Binomial Breaks Down)
4-1에서 얻은 차수 분포는 이것이었다.
일 때는 다섯 항을 손으로 전부 썼다. 그런데 FMH는 이다.
| 망 | 가 어떻게 되는가 | ||
|---|---|---|---|
| 손 계산 예제 | 4 | 0.4 | — 암산 |
| 가라테 | 33 | 0.1390 | — 계산기 |
| FMH | 1460 | 0.000913 | — 여기에 를 곱한다. 큰 수 × 작은 수 |
수치적으로도 나쁘고, 무엇보다 매개변수가 둘(과 )이라 감이 안 잡힌다. 그런데 위 표를 자세히 보면 규칙이 있다.
망이 커질수록 은 커지고 는 작아진다 — 그런데 둘의 곱 는 그대로 몇 명이다.
| 망 | |||
|---|---|---|---|
| 가라테 | 33 | 0.139037 | 4.5882 |
| FMH | 1460 | 0.000913 | 1.3333 |
, 으로 가되 곱 를 붙잡아 두면 이항분포는 무엇이 되는가?
답은 푸아송 분포이고, 매개변수는 하나뿐이다. 과 가 따로 사라지고 곱만 남는다는 것 — 이것이 4단계 내내 "평균 차수 "만으로 이야기할 수 있게 되는 근거다.
2. 정의 — 푸아송 분포 (The Poisson Distribution)
| 기호 | 뜻 | 교실에서 |
|---|---|---|
| 평균 발생 횟수 | 평균 친구 수 | |
| 번 성공 | 친구 명을 차례로 고르는 경우의 무게 | |
| 순서를 지운다 | "영희·철수" = "철수·영희" | |
| 정규화 상수 | 전부 더해 1이 되게 하는 값 |
왜 가 정규화 상수인가 — 지수함수의 급수를 그대로 쓰면 된다.
이 한 줄이 오늘의 채점표 전체를 만든다: 푸아송이 맞다면 분산/평균 이어야 한다. FMH는 였다 (4-1 §11).
3. 손 계산 ① 이항이 푸아송으로 가는 길 — 네 조각 (The Poisson Limit in Four Pieces)
표기를 줄이자. (한 학생이 관여하는 동전 수), . 이항 확률을 있는 그대로 쓴 뒤 곱셈 순서만 바꾼다. 근사는 아직 없다.
를 펴고, 로 쪼개면
네 조각의 정체를 하나씩 본다.
| 조각 | 식 | 에서 | 무슨 뜻인가 |
|---|---|---|---|
| ① | 그대로 | 우리가 목표하는 모양. 이 아예 안 들어 있다 | |
| ② | 분자에 개, 분모에 이 개 — 각 인수가 "친구를 고를 때마다 후보가 한 명씩 준다"는 효과인데, 이 크면 무시된다 | ||
| ③ | 가 태어나는 자리. 정의 그 자체 | ||
| ④ | 고정된 개짜리 보정. 이므로 밑이 1로 간다 |
3-1. 네 조각을 실제 숫자로 — , (Four Pieces with Real Numbers)
추상적으로 ""이라고만 하면 감이 안 온다. FMH의 을 고정하고 만 4, 50, 1460으로 키우며 네 조각을 각각 계산해 본다.
| 조각 ① | 조각 ② | 조각 ③ | 조각 ④ | 네 조각의 곱 | 정확값dbinom | ||
|---|---|---|---|---|---|---|---|
| 4 | 0.888889 | 0.750000 | 0.197531 | 2.250000 | 0.296296 | 0.296296 ✓ | |
| 50 | 0.026667 | 0.888889 | 0.980000 | 0.258869 | 1.055545 | 0.238029 | 0.238029 ✓ |
| 1460 | 0.000913 | 0.888889 | 0.999315 | 0.263437 | 1.001829 | 0.234433 | 0.234433 ✓ |
| 극한 | 0.888889 | 1 | 1 | ||||
의 네 조각을 분수로 전부 확인한다 ():
직접 계산과 대조: ✓ — 소수점이 아니라 분수까지 일치한다.
에서 오차가 큰 이유가 표에 그대로 보인다. 조각 ②가 0.75(1에서 25% 모자람), 조각 ④가 2.25(1의 두 배 넘음)다. 이 둘은 방향이 반대라 일부 상쇄되지만, 조각 ③마저 로 극한값 에서 25% 떨어져 있다.
에서는 ②가 0.999315, ④가 1.001829 — 둘 다 소수 셋째 자리에서 1이고, ③은 0.263437로 과 소수 넷째 자리까지 일치한다.
4-1의 손 계산 예제 에 억지로 푸아송을 대면 (): 오차 0.0723 — 56% 과대평가다. 는 전혀 작지 않기 때문이다. 학급 규모(, )에서도 푸아송은 정확한 도구가 아니다 — §15 연습문제 1에서 그 오차를 직접 잰다.
4. 손 계산 ② 의 여섯 항 전부 (All Six Terms at )
은 오늘의 주인공 값이다(§11에서 임계점으로 다시 등장한다). 이면 이므로 식이 아주 단순해진다.
즉 분자는 전부 1이고 분모만 로 커진다. .
| 전개 | 누적 | 왜 그 값인가 | |||
|---|---|---|---|---|---|
| 0 | 1 | 0.367879 | 0.367879 | 아무하고도 안 이어짐 — . 최빈값(동률) | |
| 1 | 1 | 0.367879 | 0.735759 | 일 때만 — 이라서 | |
| 2 | 2 | 0.183940 | 0.919699 | 의 정확히 절반 | |
| 3 | 6 | 0.061313 | 0.981012 | 의 | |
| 4 | 24 | 0.015328 | 0.996340 | 의 | |
| 5 | 120 | 0.003066 | 0.999406 | 의 | |
| 꼬리 | 0.000594 | 1.000000 | 여섯 항으로 99.94%가 끝난다 | ||
검산 — 분모를 로 통일해 분자를 더한다:
와 비교하면 차이 — 이것을 로 나누면 로 위 표의 꼬리와 정확히 같다 ✓
이면 "평균적으로 친구가 한 명"인데, 친구가 0명인 학생과 1명인 학생이 똑같이 36.8%씩이다. "평균 1명"이라는 말이 "대체로 다들 한 명쯤 있다"를 뜻하지 않는다. 100명 학급이라면 37명이 완전히 혼자다.
은 §11에서 볼 임계점인데, 그 임계점에서조차 3분의 1이 고립이라는 사실이 오늘의 두 이야기(고립자와 거대 컴포넌트)를 하나로 묶는다.
5. 수렴을 눈으로 보기 (Watching the Convergence)
으로 고정하고 만 키우며 이항의 앞 네 항을 나란히 놓는다.
| 최대 오차 (모든 통틀어) | |||||
|---|---|---|---|---|---|
| 4 | 0.197531 | 0.395062 | 0.296296 | 0.098765 | 0.066066 |
| 10 | 0.239068 | 0.367796 | 0.254628 | 0.104463 | 0.024529 |
| 50 | 0.258869 | 0.354615 | 0.238029 | 0.104342 | 0.004728 |
| 200 | 0.262423 | 0.352246 | 0.235224 | 0.104193 | 0.001174 |
| 1460 (FMH) | 0.263437 | 0.351570 | 0.234433 | 0.104145 | 0.000161 |
| 푸아송 극한 | 0.263597 | 0.351463 | 0.234309 | 0.104137 | 0 |
을 10배 키우면 오차가 10분의 1이 된다 (기울기 ). 에서 0.0661이던 오차가 에서 0.000161 — 학급 규모에서는 쓰기 어렵지만, 학년·학교 규모에서는 사실상 정확하다. 이것이 오늘부터 FMH를 하나로 이야기할 수 있는 근거다.
6. 손 계산 ③ 고립자 기대 수 (Expected Number of Isolates)
푸아송의 첫 항 에는 특별한 이름이 있다 — 고립자(isolate). 교실에서는 아무도 친구로 지목하지 않고 자신도 아무도 지목하지 않은 학생이다.
6-1. 두 가지 식 — 정확식과 근사식 (Two Formulas: Exact and Approximate)
정확식: 한 학생이 관여하는 개 동전이 전부 뒷면일 확률.
푸아송 근사: 을 대입하면 , 이므로
기댓값은 독립이 아니어도 그냥 더해진다(4-1 §7에서 확인했다). 1461명 각각에 대해 더하면
6-2. FMH 숫자로 — 두 식이 얼마나 가까운가 (FMH Numbers: How Close Are They)
FMH: , , , .
| 방식 | 식 | 기대 인원 | 비고 | |
|---|---|---|---|---|
| 정확 (이항) | 0.2634366 | 384.88 | 동전 1460개가 전부 뒷면 | |
| 근사 (푸아송) | 0.2635971 | 385.12 | 차이 0.24명 — 이 크니 사실상 같다 |
을 손으로: . 대략 네 명 중 한 명이다.
7. FMH 대조 ① 고립 학생 524명 (FMH: 524 Isolated Students)
모형은 385명을 예측했다. 실제는?
| 항목 | 모형 | 실제 FMH | 차이 | 비 |
|---|---|---|---|---|
| 1461 | 1461 | — | — | |
| 평균 차수 | 1.3333 | 1.3333 | 0 | 1.00 |
| 고립 학생 수 | 385.12 | 524 | +138.9명 | 1.361배 |
| 고립 비율 | 26.36% | 35.87% | +9.5%p | 1.36 |
7-1. 어디가 남고 어디가 모자라는가 — 아홉 항 전부 (Where It Overshoots and Undershoots)
고립자만 볼 것이 아니라 차수 분포 전체를 푸아송 기대와 나란히 놓는다. 기대 인원은 이다.
| 실제 인원 | 푸아송 기대 | 차이 | 비 | 읽는 법 | |
|---|---|---|---|---|---|
| 0 | 524 | 385.1 | +138.9 | 1.36 | 고립이 139명 남는다 — 오늘의 최대 불일치 |
| 1 | 403 | 513.5 | −110.5 | 0.78 | 친구 1명이 110명 모자란다 — 고립으로 빠져나간 자리 |
| 2 | 271 | 342.3 | −71.3 | 0.79 | 가운데가 얇다 |
| 3 | 128 | 152.1 | −24.1 | 0.84 | 여기까지가 "모자란 구간" |
| 4 | 85 | 50.7 | +34.3 | 1.68 | 여기서 뒤집힌다 |
| 5 | 30 | 13.5 | +16.5 | 2.22 | |
| 6 | 13 | 3.0 | +10.0 | 4.33 | |
| 7 | 5 | 0.6 | +4.4 | 8.33 | |
| 8 | 2 | 0.1 | +1.9 | 20.0 | 모형이면 10개 학교에 한 명 나올 학생 |
실제 분포는 푸아송보다 양쪽 끝이 두껍다(over-dispersed). 가운데에 있어야 할 200여 명이 바깥쪽 0명과 안쪽 4명 이상으로 흩어져 나갔다.
이것이 4-1에서 본 분산 초과(2.0498 vs 1.3333, 1.54배)의 실체다. "분산이 1.5배"라는 한 숫자를 사람 수로 풀면 "고립 139명 초과, 중간층 200명 실종"이 된다.
학급 설문 결과를 이 표처럼 만들어 두면 어느 구간에 개입해야 하는지가 바로 보인다. "평균 친구 수"만 보고할 때는 절대 나오지 않는 정보다.
특히 칸이 모자란다는 것에 주목할 것 — 이 학생들은 어디로 갔는가? 답은 이다. 친구가 한 명 있던 학생이 그 한 명을 잃으면 곧바로 고립이 된다. 은 가장 불안정한 자리이며, 관찰 대상 명단은 과 을 함께 만들어야 한다.
8. 정말 어긋나는가 — 카이제곱과 무작위화 (Chi-Square and Randomization)
"139명 초과"가 우연일 수 있을까? 두 가지 방식으로 확인한다.
8-1. 카이제곱 적합도 검정 (Chi-Square Goodness-of-Fit Test)
와 를 묶어 여섯 칸으로 만들고 를 각 항 전부 계산한다.
| 칸 | 관측 | 기대 | ||
|---|---|---|---|---|
| 524 | 385.12 | +138.88 | 50.09 | |
| 403 | 513.49 | −110.49 | 23.77 | |
| 271 | 342.32 | −71.32 | 14.86 | |
| 128 | 152.14 | −24.14 | 3.83 | |
| 85 | 50.71 | +34.29 | 23.18 | |
| 50 | 17.21 | +32.79 | 62.45 | |
| 합 | 1461 | 1461 | 0 | 178.18 |
어느 칸이 범인인가: 기여도 1위는 (62.45), 2위가 (50.09)이다. 즉 허브 쪽과 고립 쪽이 함께 를 밀어 올린다 — 한쪽만의 문제가 아니다.
8-2. 무작위화 — 같은 으로 200번 (Randomization: 200 Draws at the Same n and m)
set.seed(12)
sim <- replicate(200, { g <- sample_gnm(1461, 974)
c(sum(igraph::degree(g)==0), max(components(g)$csize),
components(g)$no) })
| 지표 | 무작위 평균 | 표준편차 | 관측 범위 (200회 최소~최대) | 실제 FMH | |
|---|---|---|---|---|---|
| 고립자 수 | 384.36 | 12.35 | 346 ~ 421 | 524 | +11.31 |
| 최대 컴포넌트 크기 | 655.62 | 45.52 | 467 ~ 739 | 439 | −4.76 |
| 컴포넌트 개수 | 507.47 | 6.33 | 493 ~ 529 | 661 | +24.24 |
① 고립자가 139명 더 많고 () — ② 가장 큰 덩어리는 217명 더 작고 () — ③ 덩어리 개수는 154개 더 많다 ().
이 셋은 같은 이야기의 세 얼굴이다: FMH는 무작위보다 훨씬 잘게 부서져 있다. 200번 중 어느 것도 실제 값 근처에 오지 못했다.
참고로 실제 FMH의 컴포넌트 크기 상위 열 개는 439, 23, 19, 12, 11, 9, 8, 8, 8, 8이다. 1등과 2등의 격차가 19배다 — 이런 모양을 두고 "거대 컴포넌트가 있다"고 한다. 다음 절에서 그 "거대함"을 계산으로 다룬다.
9. 거대 컴포넌트 — 분지 과정으로 세는 법 (The Branching Process)
이제 오늘의 두 번째 이야기다. 질문은 이것이다.
를 0.1부터 조금씩 올리면, 망 전체를 관통하는 덩어리는 언제 생기는가?
9-1. 그림으로 먼저 (Starting with a Picture)
학생 한 명을 아무나 붙잡고 친구를 따라 퍼져 나간다고 하자.
| 단계 | 일어나는 일 |
|---|---|
| 0단계 | 나 한 명 |
| 1단계 | 내 친구 — 평균 명 |
| 2단계 | 친구의 친구 — 평균 명 |
| 단계 | 평균 명 |
여기서 1이라는 숫자가 자동으로 특별해진다.
| 의 운명 | 퍼짐의 결말 | |
|---|---|---|
| 몇 단계 가다 말라 죽는다. 작은 덩어리들만 생긴다 | ||
| 유지 | 아슬아슬 — 임계 | |
| 계속 불어나 망의 상당 부분을 삼킨다 |
9-2. 식으로 — 소멸 확률 (In Formulas: The Extinction Probability)
를 "한 사람에게서 시작한 퍼짐이 결국 말라 죽을 확률"이라 하자. 그 사람에게 친구가 명이라면, 퍼짐이 죽으려면 개의 가지가 전부 각각 죽어야 한다 — 확률 . 그러니 에 대해 평균을 낸다.
여기에 푸아송 를 넣으면 급수가 그대로 접힌다.
세 번째 등호가 §2에서 확인한 지수 급수다 — 에 를 넣었을 뿐이다. 그리고 거대 컴포넌트가 차지하는 비율은
엄밀히는 "친구를 따라간 다음 사람"의 친구 수는 원래 차수 분포가 아니라 초과 차수 분포(excess degree, 온 길 하나를 뺀 나머지)를 따라야 한다. 그런데 푸아송에서는 이 둘이 정확히 같다 — 푸아송만의 특별한 성질이다. 그래서 에서는 위의 단순한 유도가 정답을 준다.
차수 분포가 푸아송이 아니면(4-6의 거듭제곱 분포 등) 초과 차수를 따로 써야 하고, 그때는 임계 조건도 이 아니라 로 바뀐다. 4-7에서 다시 만난다.
10. 손 계산 ④ 반복 대입 열두 번 (Twelve Iterations by Hand)
는 가 양변에 있어 손으로 풀리지 않는다. 대신 아무 값이나 넣고 계속 다시 넣는다(반복 대입, fixed-point iteration). FMH의 , 출발점 로 열두 번 전부 적는다.
| 회 | 직전과의 차 | |||
|---|---|---|---|---|
| 0.500000 | −0.666667 | 0.513417 | +0.013417 | |
| 0.486583 | −0.648777 | 0.522685 | +0.009268 | |
| 0.477315 | −0.636420 | 0.529183 | +0.006498 | |
| 0.470817 | −0.627756 | 0.533788 | +0.004605 | |
| 0.466212 | −0.621616 | 0.537076 | +0.003288 | |
| 0.462924 | −0.617232 | 0.539436 | +0.002360 | |
| 0.460564 | −0.614085 | 0.541135 | +0.001699 | |
| 0.458865 | −0.611820 | 0.542363 | +0.001228 | |
| 0.457637 | −0.610183 | 0.543252 | +0.000889 | |
| 0.456748 | −0.608997 | 0.543896 | +0.000644 | |
| 0.456104 | −0.608139 | 0.544363 | +0.000467 | |
| 0.455637 | −0.607516 | 0.544702 | +0.000339 | |
| 수렴값 | 0.545605 | — | ||
첫 줄만 손으로 확인해 보자: , , ✓
증가폭이 0.013417 → 0.009268 → 0.006498 → … 로 매번 약 0.72배씩 준다. 이 0.72가 바로 이다. 1보다 작으므로 반복이 수렴한다 — 그리고 가 1에 가까울수록 이 값이 1에 가까워져 수렴이 한없이 느려진다 (§16 연습문제 2에서 로 직접 겪는다).
11. 임계점 — 왜 하필 1인가 (The Critical Point)
라 두면 우리가 찾는 것은 인 점이다.
먼저 확인할 것: 은 가 무엇이든 항상 해다.
즉 "퍼짐이 반드시 죽는다"는 언제나 하나의 답이다. 문제는 인 두 번째 해가 있느냐다. 그 판정은 에서의 기울기가 한다.
| 곡선 와 직선 의 관계 | 결과 | |
|---|---|---|
| 로 완만하게 다가온다. 전 구간에서 | 해는 하나뿐 → | |
| 에서 직선과 접한다 | 임계 — 여전히 이지만 아슬아슬 | |
| 에서 직선보다 가파르다 → 왼쪽 어딘가에서 가로지른다 | 인 해가 생김 → |
11-1. 를 올려 가며 — 열 줄 전부 (Raising λ Step by Step)
| 소멸 확률 | 거대 컴포넌트 | 읽는 법 | |
|---|---|---|---|
| 0.5 | 1.000000 | 0.000000 | 전부 작은 덩어리 |
| 0.8 | 1.000000 | 0.000000 | 아직 없다 |
| 0.9 | 1.000000 | 0.000000 | 1 바로 아래에서도 0 |
| 1.0 | 0.999003 | 0.000997 | 임계점 (수치적으로 0에 수렴 중) |
| 1.1 | 0.823866 | 0.176134 | 0.1 올렸을 뿐인데 17.6% — 급격하다 |
| 1.3333 (FMH) | 0.545605 | 0.454365 | §10에서 손으로 구한 값 |
| 1.5 | 0.417188 | 0.582812 | 과반 |
| 2.0 | 0.203188 | 0.796812 | 80% |
| 3.0 | 0.059520 | 0.940480 | 94% |
| 4.5882 (가라테) | 0.010682 | 0.989318 | 99% — 가라테는 실제로 전원 연결(고립 0명) |
11-2. 시뮬레이션과 이론 — 여덟 줄 (Simulation vs Theory)
| 최대 컴포넌트 (20회 평균, ) | 비율 | 이론 | 비고 | |
|---|---|---|---|---|
| 0.5 | 11.3 | 0.0077 | 0.0000 | 이론 0인데 11명 — 유한 크기 효과 |
| 0.8 | 38.1 | 0.0261 | 0.0000 | 여전히 작다 |
| 1.0 | 115.2 | 0.0788 | 0.0010 | 임계점 — 이론은 0, 실제는 쯤 |
| 1.2 | 421.4 | 0.2884 | 0.3137 | 붙기 시작 |
| 1.3333 | 666.2 | 0.4560 | 0.4544 | 소수 둘째 자리까지 일치 |
| 1.5 | 851.8 | 0.5830 | 0.5828 | 일치 |
| 2.0 | 1157.0 | 0.7919 | 0.7968 | 일치 |
| 3.0 | 1370.8 | 0.9382 | 0.9405 | 일치 |
에서 이론은 인데 시뮬레이션은 11.3명이 나왔다. 틀린 게 아니다. 는 에서의 비율이고, 은 이 커지면 0으로 간다 (임계 아래에서 최대 덩어리는 정도로만 자란다).
이 작으면 임계점이 흐려진다 — 25명 학급에서 "거대 컴포넌트가 생겼다/안 생겼다"를 칼같이 말할 수 없는 이유다.
12. FMH 대조 ② 거대 컴포넌트 439명 (FMH: A Giant That Is Too Small)
이론은 , 즉 명을 예측한다. 실제는?
| 항목 | 모형 예측 | 실제 FMH | 차이 | 읽는 법 |
|---|---|---|---|---|
| 평균 차수 | 1.3333 | 1.3333 | 0 | 맞춰 넣은 값 |
| 거대 컴포넌트 크기 | 664 | 439 | −225명 | 예측의 66%밖에 안 된다 |
| 거대 컴포넌트 비율 | 45.44% | 30.05% | −15.4%p | |
| 고립자 | 385 | 524 | +139명 | §7 |
| 컴포넌트 개수 | 507 | 661 | +154개 | 잘게 부서져 있다 |
§7에서 고립자가 139명 남고, 여기서 거대 덩어리가 225명 모자란다. 같은 간선 974개를 가지고도 실제 학교는 더 잘게 갈라져 있다.
왜인가? 4-1에서 본 차수 분산 초과가 답의 절반이다. 간선이 소수의 학생에게 몰리면(차수 8인 학생 2명 등) 그 간선들은 이미 연결된 사람들 사이에서 낭비된다 — 새로운 사람을 덩어리에 끌어들이는 데 쓰이지 못한다.
나머지 절반의 답은 4-3에 있다: 간선이 삼각형을 이루며 겹쳐 놓이기 때문이다. 삼각형 하나에 쓰인 세 번째 간선은 연결에 아무 기여도 하지 않는다 (두 간선이면 이미 세 명이 이어져 있다).
학급 교우관계도를 그렸을 때 가장 큰 덩어리가 전체의 몇 %인가는 평균 친구 수보다 훨씬 실전적인 지표다.
- 90% 이상 — 반이 하나로 돌아간다 (가라테 유형: )
- 50~90% — 큰 무리 하나 + 바깥 몇 명
- 30~50% — 반이 갈라져 있다 (FMH 유형: 30%)
- 30% 미만 — 학급이라는 단위가 사실상 작동하지 않는다
13. R 검증 (R Verification)
13-1. 푸아송 근사 (The Poisson Approximation)
dpois(0:5, 1) # 0.367879 0.367879 0.183940 0.061313 0.015328 0.003066
sum(dpois(0:5, 1)) # 0.9994058
lam <- 4/3
for (N in c(4, 10, 50, 200, 1460))
cat(N, max(abs(dbinom(0:20, N, lam/N) - dpois(0:20, lam))), "\n")
# 4 0.066066 / 10 0.024529 / 50 0.004728 / 200 0.001174 / 1460 0.000161
13-2. 고립자 (Isolates)
data(faux.magnolia.high); G <- asIgraph(faux.magnolia.high)
n <- vcount(G); m <- ecount(G); p <- m/choose(n,2); lam <- 2*m/n
c(정확 = (1-p)^(n-1), 푸아송 = exp(-lam)) # 0.2634366 0.2635971
c(기대 = n*exp(-lam), 실제 = sum(igraph::degree(G)==0))
# 기대 실제
# 385.1154 524
13-3. 거대 컴포넌트 — 반복 대입 한 줄 (The Giant Component in One Line)
solve_u <- function(lam) { u <- 0.5; for (i in 1:2000) u <- exp(-lam*(1-u)); u }
1 - solve_u(4/3) # 0.4543950 (§10 손 계산과 일치)
n * (1 - solve_u(4/3)) # 663.8710 -> 664명
max(components(G)$csize) # 439
components(G)$no # 661
for (i in 1:2000)가 무식해 보이지만 — 이것이 §10의 손 계산과 정확히 같은 절차다.
2000번을 도는 것은 가 1에 가까울 때 수렴이 느리기 때문이다.
에서는 200번을 돌아도 가 0.99에 못 미친다 (§16 연습문제 2).
13-4. 상전이 시뮬레이션 (Simulating the Phase Transition)
set.seed(11)
for (L in c(0.5, 0.8, 1.0, 1.2, 4/3, 1.5, 2.0, 3.0)) {
s <- replicate(20, max(components(sample_gnp(1461, L/1460))$csize))
cat(sprintf("%6.3f %8.1f %.4f (이론 %.4f)\n", L, mean(s), mean(s)/1461, 1-solve_u(L)))
}
sample_gnp를 쓴 이유 — 4-1 §13에서 "실제 망과 비교할 때는 "이라 했다.
그런데 §11-2는 실제 망과의 비교가 아니라 이론 곡선의 확인이다.
이론이 에 대해 유도됐으므로 여기서는 를 지정하는 것이 맞다.
반대로 §8-2의 무작위화는 FMH와 겨루는 자리이므로 sample_gnm(1461, 974)를 썼다.
영 모형은 "무엇과 겨루는가"에 따라 고른다.
14. 교실 적용 (Classroom Application)
학급 인원 과 간선 수 만 알면 이고, 기대 고립자는 다. 30명 학급에 간선 60개면 , 명. 실제로 3명이 고립이라면 그것은 우연이 아니다.
반대로 인 학급(간선 22개)이라면 기대 고립자가 명 — 고립 학생이 6명 나와도 "관계가 나쁜 반"이 아니라 "지목을 적게 한 반"일 수 있다. 설문 방식을 먼저 확인해야 하는 이유다.
§4에서 본 것: 이면 고립 학생이 36.8%다. "평균적으로 다들 친구가 한 명은 있다"는 문장은 산술적으로 틀렸다. 평균은 0명인 학생과 3명인 학생을 섞어 만든 값이지, 대표값이 아니다.
학부모·관리자에게 보고할 때 평균 대신 "친구 0명 몇 명, 1명 몇 명"을 쓰면 같은 데이터가 전혀 다르게 읽힌다.
모둠을 섞는 활동을 설계할 때, 학생 한 명당 새로 만나는 사람 수가 1을 넘느냐가 "반 전체가 하나로 이어지느냐"를 가른다.
- 짝 활동만 반복 → 한 사람당 새 접촉 1명 이하 → 끼리끼리 유지
- 4인 모둠을 매번 새로 짜기 → 한 사람당 새 접촉 3명 → , 몇 회 만에 전원 연결
"한 사람이 평균 몇 사람에게 옮기는가"가 1을 넘으면 퍼지고 못 넘으면 사그라든다. 전염병의 와 정확히 같은 수다. 학급에서 좋은 규범을 퍼뜨리려면 을 만들어야 하고, 나쁜 소문을 막으려면 로 떨어뜨려야 한다 — 후자는 "중간에서 옮기는 몇 명"의 연결을 끊는 것으로 되고, 그 몇 명을 찾는 도구가 2-3의 매개 중심성이었다.
FMH에서 실제 거대 컴포넌트는 예측의 66%였다. 학급도 마찬가지일 것이다. 계산값은 "이 정도는 되어야 정상"의 상한선으로 쓰고, 실제가 그보다 낮으면 왜 낮은지(끼리끼리 뭉쳤는지, 특정 학생에게 몰렸는지)를 묻는 것 — 그것이 이 도구의 올바른 사용법이다.
15. 연습문제 (Exercises)
30명 학급에서 교우관계 조사를 했더니 간선 30개가 나왔다.
- 와 를 구하라.
- 푸아송으로 의 여섯 항(~5)을 전부 쓰고, 30명 중 기대 인원을 각각 구하라. 를 쓸 것.
- 기대 고립자 수를 푸아송과 정확 이항 두 가지로 구하고 상대오차를 계산하라. 에서 푸아송 근사는 쓸 만한가?
- 이 학급의 거대 컴포넌트 예상 크기는 몇 명인가? (의 을 쓸 것)
- 실제 고립 학생이 7명이었다. 기대치의 몇 배인가? 그리고 이것을 "유의하다"고 말할 수 있는가? (힌트: 고립자 수는 에 가깝다)
평균 차수만 다른 두 학년이 있다: A학년 , B학년 .
- 각각에 대해 를 에서 여덟 번 돌려 표로 적어라. 두 경우의 움직임이 어떻게 다른가?
- 수렴값과 를 구하라. 각 학년 30명이라면 거대 컴포넌트는 몇 명인가?
- A학년에서 반복이 왜 그렇게 느린지 로 설명하라.
- 실제로 으로 시뮬레이션하면 A학년()의 최대 덩어리가 53명(5.3%) 나온다. 이론은 0인데 왜 0이 아닌가?
- 두 학년의 담임에게 각각 무엇을 조언하겠는가?
16. 해설과 답 (Solutions)
연습문제 1 해설 (Solution to Exercise 1)
(1) 무엇을 나누는가 — 밀도는 실제 간선 수 ÷ 가능한 짝의 수, 는 악수 정리.
(2) 무엇을 곱하는가 — . 와 를 따로 적고 마지막에 를 곱한다. 여섯 항 전부:
| 30명 중 기대 인원 | 왜 그 값인가 | |||||
|---|---|---|---|---|---|---|
| 0 | 1 | 1 | 1 | 0.135335 | 4.060 | 고립 — 그 자체 |
| 1 | 2 | 1 | 2 | 0.270671 | 8.120 | 최빈값 (동률) |
| 2 | 4 | 2 | 2 | 0.270671 | 8.120 | — 과 같다. 가 정수면 |
| 3 | 8 | 6 | 1.3333 | 0.180447 | 5.413 | 의 배 |
| 4 | 16 | 24 | 0.6667 | 0.090224 | 2.707 | 의 배 |
| 5 | 32 | 120 | 0.2667 | 0.036089 | 1.083 | 의 배 |
| 합 (~5) | 0.983436 | 29.503 | 꼬리 → 0.497명 | |||
비 검산 — 푸아송은 이웃 항끼리 다. 이므로 , , , , — 위 표의 "왜 그 값인가" 열이 정확히 이 수열이다 ✓
30명 중 기대 인원 4.06 / 8.12 / 8.12 / 5.41 / 2.71 / 1.08명.
값의 의미: 친구가 1명 또는 2명인 학생이 합쳐 16.2명으로 절반이 넘고, 고립이 4.1명이다. 는 "평균 두 명"이지만 실제로 정확히 2명인 학생은 8명(27%)뿐이다.
(3) 두 방식으로 고립자 세기
| 방식 | 30명 중 | 왜 그 값인가 | |
|---|---|---|---|
| 정확 이항 | 0.125895 | 3.777 | 동전 29개가 전부 뒷면 |
| 푸아송 근사 | 0.135335 | 4.060 | |
| 차이 | +0.009440 | +0.283명 | 상대오차 7.50% — 푸아송이 과대평가 |
쓸 만한가? 어림값으로는 쓸 만하지만 보고서에는 정확식을 쓸 것. 학급 규모()에서 는 0.07~0.2로 작지 않다. §3의 표에서 면 조각 ②가 이지만 조각 ③이 에서 여전히 몇 % 떨어져 있다.
방향까지 기억할 것: 푸아송은 언제나 고립자를 더 많게 잡는다 (). 즉 이 어림값은 안전한 쪽으로 틀린다 — "모형이 4명을 예상했는데 실제 4명"이면 사실은 실제가 살짝 많은 것이다.
(4) 거대 컴포넌트 — 의 소멸 확률은 .
검산 — 가 정말 해인지 식에 도로 넣는다: ✓
값의 의미: 30명 중 24명이 서로 (간접적으로라도) 이어진 하나의 덩어리를 이루고, 나머지 6명은 고립이거나 두세 명짜리 조각이다. 는 임계점 1의 두 배지만 전원 연결에는 한참 못 미친다 — 전원 연결에 필요한 는 대략 이상이다.
(5) 7명은 유의한가
배수만 보면 커 보인다. 그런데 흔들림을 봐야 한다. 고립자 수는 대략 이므로
값의 의미: 이런 학급 10개 중 1개에서는 순전히 우연으로 고립이 7명 이상 나온다. "기대보다 1.7배"라는 말은 인상적으로 들리지만 에서는 표준편차가 1.87명이나 되므로 ±2명은 흔한 흔들림이다.
FMH에서 1.36배(524 vs 385)는 으로 압도적이었는데, 여기서 1.72배(7 vs 4.06)는 로 유의하지 않다. 차이는 이다 — 1461명에서는 표준편차가 12.35명이라 139명 초과가 11 시그마가 되지만, 30명에서는 3명 초과가 1.6 시그마에 그친다.
학급 하나의 데이터로는 웬만한 어긋남을 통계적으로 입증할 수 없다. 그렇다고 무시하라는 말은 아니다 — 7명은 통계적으로 유의하지 않아도 교육적으로는 일곱 명이다. 통계는 "우연으로 설명되는가"를 답할 뿐, "개입할 가치가 있는가"를 답하지 않는다.
연습문제 2 해설 (Solution to Exercise 2)
(1) 무엇을 반복하는가 — 두 경우 모두 , . 여덟 번 전부 나란히 놓는다.
| 회 | A학년 | 증가폭 | B학년 | 증가폭 | 왜 그렇게 되는가 |
|---|---|---|---|---|---|
| 0.500000 | — | 0.500000 | — | 같은 출발 | |
| 0.637628 | +0.137628 | 0.535261 | +0.035261 | 가 작을수록 크게 뛴다 | |
| 0.721708 | +0.084080 | 0.559382 | +0.024121 | ||
| 0.778440 | +0.056732 | 0.576504 | +0.017122 | ||
| 0.819219 | +0.040779 | 0.588976 | +0.012472 | ||
| 0.849844 | +0.030625 | 0.598230 | +0.009254 | ||
| 0.873593 | +0.023749 | 0.605190 | +0.006960 | ||
| 0.892467 | +0.018874 | 0.610478 | +0.005288 | ||
| 0.907756 | +0.015289 | 0.614527 | +0.004049 | ||
| 수렴값 | 1.000000 | — | 0.628630 | — | A는 끝없이, B는 금방 |
B학년은 8회 만에 0.6145로 수렴값 0.6286에 거의 도달했다(남은 거리 0.014).
A학년은 8회에 0.9078인데 목적지가 1이라 아직 0.09가 남았고, 증가폭도 여전히 0.015로 크다. 영원히 다가가지만 유한 회에 도달하지 못한다.
겉보기에는 A가 더 빨리 움직이는 듯하지만(첫 회 +0.138 대 +0.035), 가야 할 거리가 훨씬 멀어서 결국 더 느리다.
(2) 수렴값과
| 학년 | 30명 중 | 읽는 법 | |||
|---|---|---|---|---|---|
| A | 0.90 | 1.000000 | 0.000000 | 0명 | 거대 컴포넌트 없음 — 임계점 아래 |
| B | 1.25 | 0.628630 | 0.371370 | 11.14명 | 37.1% — 임계점 위 |
검산 — B학년의 를 식에 도로 넣는다: ✓
값의 의미: 평균 친구 수가 0.9명에서 1.25명으로 0.35명 늘었을 뿐인데 "덩어리 없음"에서 "3분의 1이 한 덩어리"로 바뀐다. 연속적으로 늘린 원인이 불연속적인 결과를 만드는 것 — 이것이 상전이다.
(3) 왜 A가 느린가 — 반복 대입의 속도는 도착점에서의 기울기가 정한다.
| 학년 | 도착점 | 한 회마다 남은 거리가 | 뜻 | |
|---|---|---|---|---|
| A | 1 | 0.9배 | 1에 가까움 → 아주 느림. 10분의 1로 줄이는 데 22회 | |
| B | 0.628630 | 0.786배 | 10분의 1로 줄이는 데 10회 | |
| 참고 FMH | 0.545605 | 0.728배 | §10의 차분 열이 0.72배씩 줄던 그 값 |
표의 "증가폭" 열로 직접 확인하자.
A: , , … —
회를 거듭할수록 0.9로 올라간다(도착점에 가까워지므로).
B: , … — 0.786으로 수렴한다.
일반화: 임계점 에서는 이 되어 기하급수 수렴이 아예 깨진다. 그래서 §13-3의 R 코드가
for (i in 1:2000)을 돈다.
가 1에 가까울수록 이론값 자체를 구하기가 어렵다는 것 —
이것도 임계점의 특징 중 하나다.
(4) 이론 0인데 왜 53명인가
인데, 같은 로 을 키우면 이 비율은 계속 줄어든다. 임계점 아래에서 최대 덩어리 크기는 에 비례하지 않고 에 비례해서만 자란다. 이 1000배가 되어도 덩어리는 몇 배밖에 안 커지므로 비율은 0으로 간다.
값의 의미: 유한한 망에서는 임계점이 칼금이 아니라 번진 띠다. §11-2에서도 일 때 에서 115명(7.9%)이 나왔다.
에서는 와 의 차이가 크지 않아 임계점 위아래를 구분하는 것 자체가 무의미해진다. 학급 데이터에서 "거대 컴포넌트가 있다/없다"를 이론값으로 판정하려 들지 말고, 실제 컴포넌트 크기 목록을 직접 보는 편이 낫다 (FMH의 439, 23, 19, 12, …처럼 1등이 압도적이면 거대 컴포넌트다).
(5) 두 담임에게
A학년 담임()에게 — "지금은 작은 무리 여러 개로 갈라져 있고, 학년 전체를 관통하는 연결망이 없습니다. 소식이나 규범이 학년 전체로 퍼지지 않습니다.
그런데 지금이 개입 효율이 가장 높은 지점입니다. 평균 연결을 0.9에서 1.25로 — 한 사람당 0.35명분 늘리는 것만으로 아무것도 없던 데서 3분의 1이 한 덩어리가 됩니다. 학년 단위 합동 활동을 몇 번 넣는 것으로 충분할 수 있습니다."
B학년 담임()에게 — "3분의 1이 하나로 이어져 있고 3분의 2는 밖에 있습니다. 여기서 주의할 것은 덩어리 안과 밖의 격차입니다. 안쪽 학생들은 정보와 기회를 서로 나누지만 바깥 학생은 그 흐름에서 빠져 있습니다. 평균을 더 올리는 것보다, 바깥 학생 한 명 한 명을 덩어리에 이어 주는 쪽이 효과적입니다 — 를 1.25에서 1.5로 올리면 58%가 되지만(§11-1), 그 늘어난 간선이 이미 안쪽에 있는 학생들끼리 이어지면 바깥은 그대로입니다."
공통으로 덧붙일 것: 이 계산은 전부 "무작위로 이어졌다면"이라는 가정 위에 있다. 실제 학년은 반·성별·동네로 갈라져 있으므로 실제 덩어리는 이 예측보다 작을 것이다 (FMH가 예측의 66%였다, §12).
① 평균 차수 하나만 알면 고립자 수()와 가장 큰 덩어리 크기()를 둘 다 예측할 수 있다.
② 그 예측은 상한선으로 쓴다 — 실제는 대개 고립이 더 많고 덩어리는 더 작다.
③ 예측과 실제의 차이가 그 학급·학년의 성격이다. FMH는 "고립 +139명, 덩어리 −225명" — 같은 간선으로 더 잘게 부서진 학교였다.
④ 그리고 그 부서짐의 원인을 다음 단원에서 찾는다: 간선이 삼각형으로 겹쳐 놓이기 때문이다.