클리크 — 극대와 최대
SNA 이론 · 단계별 학습 차례

단원 3-1Cliques: Maximal vs Maximum

클리크 — 극대와 최대

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

1. 오늘의 질문 — 중심에서 집단으로 (Today's Question)

2단계 여섯 단원 동안 우리가 던진 질문은 하나였다 — "누가 중심인가?" 연결정도·근접·매개·고유벡터·페이지랭크는 모두 정점 하나에 숫자 하나를 붙이는 지표였다. 34명 학급이면 34개의 숫자가 나오고, 그걸 크기순으로 줄 세우는 것이 분석의 끝이었다.

그런데 담임 교사가 실제로 알고 싶은 것은 그것만이 아니다.

"우리 반은 몇 개의 무리로 나뉘어 있는가?"
"누구와 누구가 한 덩어리인가?"
"모둠을 짤 때 어느 조합이 이미 서로 다 친한가?"

이것은 정점 하나에 대한 질문이 아니라 정점의 집합에 대한 질문이다. 3단계는 여기서 시작한다.

가장 엄격하고 가장 오래된 답이 클리크(clique)다. 1949년 루스와 페리(Luce & Perry)가 제안했고, 정의가 단 한 줄이다 — "서로 전부 연결된 사람들의 모임." 오늘은 이 한 줄을 손으로 끝까지 밀어붙인다.

오늘 쓸 네트워크 (Today's Networks)

1·2단계 내내 쓴 7명 무방향 네트워크 UU로 손 계산을 하고, 그다음 Zachary 가라테 클럽(34명)으로 실전 확인을 한다. 가라테 클럽은 SNA에서 가장 유명한 자료다 — 1970년대 미국의 한 가라테 동아리가 사범(node 1, Mr. Hi)과 관장(node 34, John A)의 갈등으로 실제로 두 쪽으로 쪼개진 기록이 남아 있기 때문이다. "네트워크 구조만 보고 분열을 맞힐 수 있는가"를 시험할 수 있는 드문 자료다.

UU의 인접행렬을 다시 적어 둔다(대칭, 간선 8개).

S1S2S3S4S5S6S7차수
S101100002
S210100002
S311010003
S400101002
S500010113
S600001012
S700001102

2. 정의 — 완전 부분그래프 (Definition: Complete Subgraph)

정점 집합 SVS \subseteq V클리크라는 것은:

S is a clique    A[i,j]=1for all i,jS,  ij S \text{ is a clique} \iff A[i,j] = 1 \quad \text{for all } i,j \in S,\; i \neq j

SS 안의 모든 순서 없는 쌍이 간선으로 이어져 있어야 한다. S=k|S| = k이면 확인해야 할 쌍의 개수는

(k2)=k(k1)2 \binom{k}{2} = \frac{k(k-1)}{2}

이고, 이 (k2)\binom{k}{2}개가 전부 1이어야 한다. 하나라도 0이면 클리크가 아니다.

크기 kk확인할 쌍 (k2)\binom{k}{2}부르는 이름비고
10정점 하나확인할 쌍이 없으므로 항상 클리크(자명)
21간선 하나 (dyad)클리크 = 간선
33삼각형 (triangle / triad)가장 작은 "흥미로운" 클리크
464-클리크삼각형 (43)=4\binom{4}{3}=4개를 품는다
5105-클리크삼각형 (53)=10\binom{5}{3}=10개를 품는다

주의 — "부분그래프"는 유도 부분그래프(induced subgraph)를 말한다.

SS를 고를 때 간선을 고르는 것이 아니다. 정점만 고르고, 그 정점들 사이에 원래 있던 간선은 전부 따라온다. 그래서 "빠진 간선이 하나라도 있으면 탈락"이라는 판정이 성립한다. R로 쓰면 부분행렬 A[S,S]가 대각선만 0이고 나머지가 전부 1이어야 한다는 뜻이다.

클리크가 되는 조건을 합으로 쓰면 (The Condition as a Sum)

부분행렬의 원소를 전부 더하면 검사가 한 줄이 된다. 무방향이므로 각 간선이 두 번 세어진다:

S is a clique    iSjSA[i,j]  =  k(k1) S \text{ is a clique} \iff \sum_{i \in S}\sum_{j \in S} A[i,j] \;=\; k(k-1)

또는 순서 없는 쌍으로만 세면 (k2)\binom{k}{2}와 같아야 한다. 아래에서는 쌍 단위로 세겠다 — 손으로 하기엔 그쪽이 훨씬 편하다.

3. 손 계산 ① — 35개 삼중항 전부 (Hand Calculation ①: All 35 Triples)

가장 작은 "흥미로운" 클리크는 삼각형이다. UU의 7명에서 3명을 뽑는 방법은

(73)=765321=2106=35 \binom{7}{3} = \frac{7 \cdot 6 \cdot 5}{3 \cdot 2 \cdot 1} = \frac{210}{6} = 35

가지. 35개를 전부 검사한다. 각 삼중항 {i,j,k}\{i,j,k\}마다 세 항

A[i,j]+A[i,k]+A[j,k] A[i,j] + A[i,k] + A[j,k]

을 더하고, 합이 3이면 삼각형이다. 0인 항도 하나도 빼지 않고 적는다.

#삼중항 {i,j,k}\{i,j,k\}A[i,j]A[i,j]A[i,k]A[i,k]A[j,k]A[j,k]판정 / 빠진 쌍
1{S1,S2,S3}1113삼각형 ★
2{S1,S2,S4}1001S1–S4, S2–S4 없음
3{S1,S2,S5}1001S1–S5, S2–S5 없음
4{S1,S2,S6}1001S1–S6, S2–S6 없음
5{S1,S2,S7}1001S1–S7, S2–S7 없음
6{S1,S3,S4}1012S1–S4 하나만 없음
7{S1,S3,S5}1001S1–S5, S3–S5 없음
8{S1,S3,S6}1001S1–S6, S3–S6 없음
9{S1,S3,S7}1001S1–S7, S3–S7 없음
10{S1,S4,S5}0011S1–S4, S1–S5 없음
11{S1,S4,S6}0000셋 다 남남
12{S1,S4,S7}0000셋 다 남남
13{S1,S5,S6}0011S1–S5, S1–S6 없음
14{S1,S5,S7}0011S1–S5, S1–S7 없음
15{S1,S6,S7}0011S1–S6, S1–S7 없음
16{S2,S3,S4}1012S2–S4 하나만 없음
17{S2,S3,S5}1001S2–S5, S3–S5 없음
18{S2,S3,S6}1001S2–S6, S3–S6 없음
19{S2,S3,S7}1001S2–S7, S3–S7 없음
20{S2,S4,S5}0011S2–S4, S2–S5 없음
21{S2,S4,S6}0000셋 다 남남
22{S2,S4,S7}0000셋 다 남남
23{S2,S5,S6}0011S2–S5, S2–S6 없음
24{S2,S5,S7}0011S2–S5, S2–S7 없음
25{S2,S6,S7}0011S2–S6, S2–S7 없음
26{S3,S4,S5}1012S3–S5 하나만 없음
27{S3,S4,S6}1001S3–S6, S4–S6 없음
28{S3,S4,S7}1001S3–S7, S4–S7 없음
29{S3,S5,S6}0011S3–S5, S3–S6 없음
30{S3,S5,S7}0011S3–S5, S3–S7 없음
31{S3,S6,S7}0011S3–S6, S3–S7 없음
32{S4,S5,S6}1012S4–S6 하나만 없음
33{S4,S5,S7}1012S4–S7 하나만 없음
34{S4,S6,S7}0011S4–S6, S4–S7 없음
35{S5,S6,S7}1113삼각형 ★

합을 도수분포로 정리하면:

0123
삼중항 개수4245235
완전 남남친구 한 쌍삼각형 직전삼각형

UU의 삼각형은 정확히 2개다: {S1,S2,S3}, {S5,S6,S7}.

그리고 이 두 삼각형은 정점을 하나도 공유하지 않는다(서로소). 이 사실은 §5에서 결정적으로 쓰인다.

노란 줄(합 = 2)을 눈여겨보라 — 다섯 개 전부에 S4가 들어 있다.

{S1,S3,S4}, {S2,S3,S4}, {S3,S4,S5}, {S4,S5,S6}, {S4,S5,S7}. S4는 자기가 낀 삼각형이 하나도 없는데(단원 2-3에서 매개 중심성 1위였던 바로 그 학생), "간선 하나만 더 있으면 삼각형이 될 뻔한" 다섯 개 삼중항 전부에 들어 있다. "다리를 놓는 사람은 자기 주변이 닫혀 있지 않다"는 구조적 사실이 여기서 숫자로 처음 드러난다.

4. 검산 — U3U^3의 대각합 (Cross-check with the Trace)

단원 1-3에서 (A3)[i,i](A^3)[i,i]ii에서 출발해 3걸음 만에 자기에게 돌아오는 걷기의 수라는 걸 배웠다. 무방향 그래프에서 길이 3의 닫힌 걷기는 삼각형을 도는 것밖에 없으므로:

(삼각형의 수)=16tr(A3)=16i=1n(A3)[i,i] (\text{삼각형의 수}) = \frac{1}{6}\operatorname{tr}(A^3) = \frac{1}{6}\sum_{i=1}^{n} (A^3)[i,i]

왜 6으로 나누는가? 삼각형 하나가 (A3)(A^3) 대각에 여섯 번 기록되기 때문이다 — 출발점 3가지 × 도는 방향 2가지 = 6.

iiS1S2S3S4S5S6S7
(U3)[i,i](U^3)[i,i]222022212
ii가 낀 삼각형 수 =12(U3)[i,i]=\frac{1}{2}(U^3)[i,i]11101116

tr(U3)6=126=2 \frac{\operatorname{tr}(U^3)}{6} = \frac{12}{6} = 2 \quad \checkmark

§3에서 손으로 센 2개와 정확히 일치한다. S4만 대각 원소가 0이라는 것도 §3의 관찰과 맞물린다 — S4는 어떤 삼각형에도 속하지 않는다.

두 가지 세는 방식의 비용 차이

삼중항 나열은 (n3)\binom{n}{3}번 — n=34n = 34이면 5984번, n=100n = 100이면 161,700번이다. 대각합은 행렬 곱 두 번이면 끝난다. 손으로는 나열, 컴퓨터로는 대각합이 정석이다. 다만 나열은 "어느 삼중항이 삼각형인지"까지 알려주고, 대각합은 개수만 알려준다.

5. 손 계산 ② — 4명짜리 클리크는 없다 (Hand Calculation ②: No 4-Clique)

삼각형이 2개 있으니 다음 질문은 자연스럽다 — 4명이 서로 전부 친한 조는 있는가? 후보는 (74)=35\binom{7}{4} = 35가지이고, 각 후보마다 (42)=6\binom{4}{2} = 6개 쌍을 검사해야 한다. 35개 후보의 간선 수 분포부터 보자.

4인 조 안의 간선 수0123456 (완전)
후보 개수04191020035

완전한 4인 조는 0개다. 가장 근접한 두 후보(간선 4개, 완전까지 2개 부족)를 6개 쌍 전부 전개해서 확인한다.

후보 A — {S1,S2,S3,S4} (Left Group Plus the Bridge)

S1–S2S1–S3S1–S4S2–S3S2–S4S3–S4
A[i,j]A[i,j]1101014 / 6

1+1+0+1+0+1=4    6클리크 아님 1 + 1 + 0 + 1 + 0 + 1 = 4 \;\neq\; 6 \quad \Rightarrow \quad \text{클리크 아님}

빠진 쌍은 S1–S4S2–S4. S4는 S3하고만 친하다.

후보 B — {S4,S5,S6,S7} (Right Group Plus the Bridge)

S4–S5S4–S6S4–S7S5–S6S5–S7S6–S7
A[i,j]A[i,j]1001114 / 6

1+0+0+1+1+1=4    6클리크 아님 1 + 0 + 0 + 1 + 1 + 1 = 4 \;\neq\; 6 \quad \Rightarrow \quad \text{클리크 아님}

35개를 다 세지 않고 끝내는 논증 (A One-Line Proof)

4-클리크는 그 안에 삼각형을 (43)=4\binom{4}{3} = 4개 품는다.

그런데 UU의 삼각형은 전부 2개이고(§3), 그 둘은 정점을 하나도 공유하지 않는다. 따라서 어떤 4명을 골라도 그 안에 들어갈 수 있는 삼각형은 많아야 1개다.

1 < 4 이므로 4-클리크는 존재할 수 없다. 35개를 다 셀 필요가 없다. ∎

이 논증에는 보너스가 있다 — 같은 이유로 5-클리크, 6-클리크도 없다. 5-클리크는 삼각형 (53)=10\binom{5}{3} = 10개를 품어야 하니 더더욱 불가능하다. 그래서 UU에서 만들 수 있는 가장 큰 클리크의 크기는 3이다.

6. 극대와 최대는 다르다 (Maximal vs Maximum)

여기가 이 단원에서 가장 많이 헷갈리는 지점이다. 두 단어가 한국어로도 비슷하고 영어로도 비슷하다.

극대 클리크 (maximal clique)최대 클리크 (maximum clique)
정의클리크이면서, 어떤 정점을 하나 더 넣어도
클리크가 유지되지 않는 것
그 그래프의 모든 클리크 중
크기가 가장 큰 것
비교 대상자기 자신의 이웃만 본다 (지역적)그래프 전체를 본다 (전역적)
개수보통 여러 개 (UU에서 4개)보통 1~2개 (UU에서 2개)
크기제각각 — 2일 수도 3일 수도 있다전부 같다 (= 클리크 수 ω(G)\omega(G))
포함관계최대 클리크는 반드시 극대 클리크다극대 클리크가 최대일 필요는 없다
R 함수max_cliques(g)largest_cliques(g), clique_num(g)

영어 이름이 헷갈리는 이유

R의 max_cliques()는 이름과 달리 극대(maximal) 클리크를 준다. 최대(maximum)를 원하면 largest_cliques()다. 이름을 믿지 말고 "몇 개가, 어떤 크기로 나오는가"로 구분하라 — 크기가 제각각이면 극대, 전부 같으면 최대다.

왜 이 구분이 중요한가 (Why the Distinction Matters)

클리크를 전부 나열하면 쓸모없이 많아진다. UU의 클리크를 크기별로 세면(정점 하나짜리 포함):

크기123
클리크 개수78217
그것이 뜻하는 것정점 수 nn간선 수 mm삼각형 수

17개를 다 보고할 수는 없다. 그리고 대부분은 다른 클리크에 통째로 먹힌다 — {S1,S2}는 {S1,S2,S3} 안에 이미 들어 있으니 따로 보고할 이유가 없다. 극대만 남기면 그런 중복이 전부 사라진다. UU는 17개 → 4개로 줄어든다.

7. 손 계산 ③ — {S3,S4}가 극대인 이유 (Hand Calculation ③: Why {S3,S4} Is Maximal)

"크기 2짜리 극대 클리크"라는 말이 처음에는 이상하게 들린다. 간선 하나가 어떻게 "더 이상 키울 수 없는 집단"인가? 정의대로 바깥 정점 5명 전부를 하나씩 넣어 보면 답이 나온다.

{S3,S4}\{S3,S4\}에 정점 vv를 추가하려면 두 조건이 동시에 만족돼야 한다: A[v,S3]=1A[v,S3] = 1 그리고 A[v,S4]=1A[v,S4] = 1.

추가 후보 vvA[v,S3]A[v,\text{S3}]A[v,S4]A[v,\text{S4}]둘 다 1?판정
S110S1은 S4와 남남 → 실패
S210S2는 S4와 남남 → 실패
S501S5는 S3와 남남 → 실패
S600둘 다 남남 → 실패
S700둘 다 남남 → 실패

5명 전부 실패. 따라서 {S3,S4}는 극대 클리크다. 크기가 2일 뿐, "더 이상 키울 수 없다"는 조건은 완벽히 만족한다. 같은 검사를 {S4,S5}\{S4,S5\}에 해도 결과는 같다.

대조 — {S1,S2}는 왜 극대가 아닌가 (Contrast: Why {S1,S2} Is Not Maximal)

추가 후보 vvA[v,S1]A[v,\text{S1}]A[v,S2]A[v,\text{S2}]둘 다 1?판정
S311추가 가능 → {S1,S2}는 극대가 아니다
S400둘 다 남남
S500둘 다 남남
S600둘 다 남남
S700둘 다 남남

단 하나(S3)만 통과해도 극대가 아니다. {S1,S2}\{S1,S2\}{S1,S2,S3}\{S1,S2,S3\}에 흡수된다.

크기가 작은 극대 클리크는 "약한 집단"이 아니라 "고립된 관계"다.

{S3,S4}가 극대라는 것은 S3와 S4의 공통 친구가 한 명도 없다는 뜻이다. 교실로 옮기면 — 두 학생이 서로 친하지만 그 우정을 함께 나눌 제3자가 없다. 이런 관계는 겉보기와 달리 취약하다. 둘 중 하나가 전학 가면 남은 쪽은 그 방향으로 아무 연결도 남지 않는다.

8. U의 극대 클리크 네 개 (The Four Maximal Cliques of U)

7명 네트워크 U의 극대 클리크 4개
7명 네트워크 UU의 극대 클리크 4개. 파란 굵은 선 = {S1,S2,S3}, 초록 굵은 선 = {S5,S6,S7}, 회색 가는 선 두 개가 각각 {S3,S4}와 {S4,S5}.
#극대 클리크크기최대인가?해석
1{S1,S2,S3}3왼쪽 모둠 — 셋이 서로 전부 친하다
2{S5,S6,S7}3오른쪽 모둠 — 셋이 서로 전부 친하다
3{S3,S4}2아니오왼쪽 모둠과 다리를 잇는 관계
4{S4,S5}2아니오오른쪽 모둠과 다리를 잇는 관계

최대 클리크의 크기(클리크 수, clique number)

ω(U)=3 \omega(U) = 3

이고, 그 크기를 달성하는 최대 클리크는 {S1,S2,S3}과 {S5,S6,S7} 두 개다.

교실 읽기 — 네 개의 극대 클리크가 말해 주는 것

  • 진짜 모둠은 두 개다. {S1,S2,S3}과 {S5,S6,S7}. 이 6명은 모둠 안에서 누구를 짝지어도 이미 서로 친하다.
  • S4는 어느 모둠에도 속하지 못한다. 극대 클리크 두 개에 이름을 올렸지만 둘 다 크기 2다. S4는 "두 모둠 사이에 걸쳐 있는" 것이 아니라 어느 쪽에도 완전히 들어가지 못하고 있다.
  • 단원 2-3에서 S4는 매개 중심성 1위였다. 이제 그 이면이 보인다 — 중개자는 소속이 없다. 정보는 다 지나가지만 함께 밥 먹을 무리가 없다.

9. 클리크 공동소속 행렬 (Clique Co-membership Matrix)

극대 클리크 목록만으로는 "누구와 누구가 자주 같이 묶이는가"가 한눈에 안 들어온다. 그래서 공동소속 행렬 KK를 만든다:

K[i,j]=(정점 i와 j를 동시에 포함하는 극대 클리크의 수) K[i,j] = (\text{정점 } i \text{와 } j \text{를 동시에 포함하는 극대 클리크의 수})

손으로는 극대 클리크 4개를 하나씩 훑으며 그 안의 모든 쌍(자기 자신 포함)에 1씩 더하면 된다.

극대 클리크이 클리크가 1을 더해 주는 칸
{S1,S2,S3}(1,1),(1,2),(1,3), (2,1),(2,2),(2,3), (3,1),(3,2),(3,3) — 9칸
{S5,S6,S7}(5,5),(5,6),(5,7), (6,5),(6,6),(6,7), (7,5),(7,6),(7,7) — 9칸
{S3,S4}(3,3),(3,4), (4,3),(4,4) — 4칸
{S4,S5}(4,4),(4,5), (5,4),(5,5) — 4칸

다 더하면:

KKS1S2S3S4S5S6S7
S11110000
S21110000
S31121000
S40012100
S50001211
S60000111
S70000111

보라색 대각선이 이 행렬의 핵심이다:

K[i,i]=(정점 i가 속한 극대 클리크의 수) K[i,i] = (\text{정점 } i \text{가 속한 극대 클리크의 수})

정점S1S2S3S4S5S6S7
K[i,i]K[i,i] = 소속 극대 클리크 수1122211
차수 deg(i)\deg(i)2232322

K[i,i]2K[i,i] \geq 2인 정점은 "여러 집단에 걸친 사람"이다.

S3, S4, S5 셋이 여기 해당한다. 차수는 S4가 2로 가장 낮은데도 S3·S5와 나란히 2개의 극대 클리크에 속한다. 연결의 개수가 아니라 연결의 배치가 소속 수를 결정한다 — S4의 친구 2명이 서로 남남이라 두 조각으로 갈라졌기 때문이다.

10. R 검증 (R Verification)

library(igraph)

## 7명 네트워크 U
nm <- paste0("S", 1:7)
U  <- matrix(0, 7, 7, dimnames = list(nm, nm))
el <- rbind(c(1,2), c(1,3), c(2,3), c(3,4), c(4,5), c(5,6), c(5,7), c(6,7))
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")

## ── 삼각형 (§3, §4) ──────────────────────────────
sum(count_triangles(g)) / 3        # 2
sum(diag(U %*% U %*% U)) / 6       # 2   ← 대각합 검산
count_triangles(g)                 # 1 1 1 0 1 1 1   ← S4만 0

## ── 극대 클리크 (§8) ─────────────────────────────
max_cliques(g)                     # 4개: {S4,S5} {S3,S4} {S1,S2,S3} {S5,S6,S7}
length(max_cliques(g))             # 4

## ── 최대 클리크 (§6) ─────────────────────────────
clique_num(g)                      # 3   ← ω(U)
largest_cliques(g)                 # 2개: {S1,S2,S3} {S5,S6,S7}

## ── 모든 클리크의 크기 분포 (§6) ─────────────────
table(sapply(cliques(g, min = 1), length))
#  1  2  3
#  7  8  2      ← 정점 7, 간선 8, 삼각형 2

## ── 공동소속 행렬 K (§9) ─────────────────────────
K <- matrix(0, 7, 7, dimnames = list(nm, nm))
for (k in max_cliques(g)) {
  v <- as.integer(k)
  for (a in v) for (b in v) K[a, b] <- K[a, b] + 1
}
diag(K)                            # 1 1 2 2 2 1 1

출력 순서를 믿지 말 것

max_cliques()가 돌려주는 목록의 순서는 정해져 있지 않다 (내부 탐색 순서에 따라 크기 2짜리가 먼저 나올 수도 있다). 크기순으로 보고 싶으면 직접 정렬해야 한다: mc[order(-sapply(mc, length))]. 또 원소는 정점 이름이 아니라 igraph 정점 객체라 as.integer()names()로 꺼내 써야 한다.

11. 실전 준비 — 2010년 교재 파일의 오류 (A Data Error in the 2010 File)

이제 34명짜리 실제 자료로 넘어간다. 그런데 R_SNA_2010/karate_net.txt를 읽자마자 숫자가 표준값과 다르다. 확인 절차를 남겨 둔다 — 남의 자료 파일은 항상 먼저 의심하는 것이 SNA의 기본기다.

kel <- as.matrix(read.table("karate_net.txt"))
nrow(kel)                          # 78   ← 줄 수는 맞다

g <- simplify(graph_from_edgelist(kel, directed = FALSE))
ecount(g)                          # 77   ← 하나가 사라졌다!

## 중복된 무방향 쌍 찾기 — 각 줄을 정렬한 뒤 중복 검사
k2 <- t(apply(kel, 1, sort))
k2[duplicated(k2), , drop = FALSE]
#      V1 V2
# [1,]  9 33      ← 9-33이 두 번 적혀 있다

## 표준 Zachary 차수와 대조
known <- c(16,9,10,6,3,4,4,4,5,2,3,1,2,5,2,2,2,2,2,3,2,2,2,5,3,3,2,4,3,4,4,6,12,17)
which(degree(g) != known)          # 9 31
degree(g)[c(9, 31)]                # 4 3   (표준값은 5 4)

## → 9-31 간선이 누락되고 그 자리에 9-33이 중복 기재된 것
gk <- add_edges(g, c(9, 31))
ecount(gk)                         # 78
all(degree(gk) == known)           # TRUE  ← 34개 차수가 전부 일치

정리 — 파일에는 오류가 두 겹으로 겹쳐 있었다.

  1. 줄 수는 78로 맞아서 nrow()만 보면 정상으로 보인다.
  2. 9 33두 번 적혀 있고 9 31빠져 있다.
  3. simplify()가 중복을 지우면서 간선이 77개로 줄어든다. 이 상태로 분석하면 9번의 차수가 5가 아니라 4, 31번은 4가 아니라 3이 된다.

수정 후의 기본 지표(이제부터 나오는 모든 수치는 수정본 기준이다):

지표계산
정점 수 nn34
간선 수 mm78
밀도0.139078/(342)=78/56178 / \binom{34}{2} = 78/561
차수 합1562m=2×782m = 2 \times 78
평균 차수4.5882156/34156 / 34
삼각형 수45tr(A3)/6\operatorname{tr}(A^3)/6
1번(Mr. Hi) 차수16
34번(John A) 차수17

12. 가라테 클럽의 극대 클리크 36개 (36 Maximal Cliques of the Karate Club)

가라테 클럽 34명과 5-클리크 핵심 6명
Zachary 가라테 클럽(수정본, 34명 · 78간선). 주황색 = 두 5-클리크의 합집합 {1,2,3,4,8,14}, 주황 굵은 선 = 그 안의 간선. 연한 파랑 = Mr. Hi 진영(16명), 연한 빨강 = John A 진영(18명), 보라색 선 = 두 진영을 가로지르는 간선 10개.
mck <- max_cliques(gk)
length(mck)                              # 36
table(sapply(mck, length))
#  2  3  4  5
# 11 21  2  2
clique_num(gk)                           # 5
largest_cliques(gk)                      # {1,2,3,4,8} {1,2,3,4,14}

table(sapply(cliques(gk, min = 1), length))
#  1  2  3  4  5
# 34 78 45 11  2
크기극대 클리크 개수모든 클리크 개수읽는 법
1034= 정점 수. 고립점이 없으므로 극대는 0개
21178= 간선 수. 그중 11개는 공통 친구가 전혀 없다
32145= 삼각형 수. 45개 중 21개가 더 못 키우는 삼각형
42114-클리크 11개 중 9개는 5-클리크에 흡수된다
522최대 클리크ω=5\omega = 5
36170극대만 남기면 170 → 36으로 줄어든다

"모든 클리크" 열의 처음 세 줄은 우리가 이미 아는 값이다.

크기 1 = nn = 34, 크기 2 = mm = 78, 크기 3 = 삼각형 수 = 45. 클리크 열거는 새로운 개념이 아니라 1단계에서 센 것들을 크기별로 이어 붙인 것이다. 크기 4부터가 진짜 새 정보다.

크기 4 이상의 극대 클리크 4개만 뽑으면:

극대 클리크크기진영해석
{1, 2, 3, 4, 8}5전원 Mr. Hi사범 쪽 핵심
{1, 2, 3, 4, 14}5전원 Mr. Hi사범 쪽 핵심
{24, 30, 33, 34}4전원 John A관장 쪽 핵심
{9, 31, 33, 34}4전원 John A관장 쪽 핵심 (9-31은 §11에서 복원한 간선!)

§11의 데이터 오류를 고치지 않았다면 {9,31,33,34}는 아예 나타나지 않는다. 간선 하나가 4-클리크 하나를 통째로 없앤다 — 클리크가 얼마나 예민한 지표인지 보여 주는 사례다.

13. 두 개의 5-클리크와 빠진 한 쌍 (Two 5-Cliques and One Missing Pair)

최대 클리크 두 개를 나란히 놓으면 이상하리만치 닮았다.

A={1,2,3,4,8},B={1,2,3,4,14} A = \{1,2,3,4,\mathbf{8}\}, \qquad B = \{1,2,3,4,\mathbf{14}\}

AB={1,2,3,4}(크기 4),AB={1,2,3,4,8,14}(크기 6) A \cap B = \{1,2,3,4\} \quad (\text{크기 } 4), \qquad A \cup B = \{1,2,3,4,8,14\} \quad (\text{크기 } 6)

다섯 명 중 네 명이 같다. 그렇다면 합집합 6명이 6-클리크가 되지 않을까? (62)=15\binom{6}{2} = 15개 쌍을 전부 검사한다.

#A[i,j]A[i,j]#A[i,j]A[i,j]#A[i,j]A[i,j]
11–2162–31113–81
21–3172–41123–141
31–4182–81134–81
41–8192–141144–141
51–141103–41158–140

1+1+1+1+1+1+1+1+1+1+1+1+1+114+0814=14    15 \underbrace{1+1+1+1+1+1+1+1+1+1+1+1+1+1}_{14 \text{개}} + \underbrace{0}_{8\text{–}14} = 14 \;\neq\; 15

15개 쌍 중 14개가 연결돼 있다. 딱 하나, 8–14가 없다.

이 한 쌍 때문에 6-클리크가 되지 못하고, 대신 5-클리크 두 개로 쪼개진다. 그리고 두 5-클리크는 4명(= 자기 크기의 80%)을 공유한다.

8번과 14번은 누구와 친한가 (The Neighbourhoods of 8 and 14)

정점차수이웃 전체
841, 2, 3, 4  — {1,2,3,4}가 이웃의 전부
1451, 2, 3, 4, 34 — {1,2,3,4}에 34번이 추가

둘 다 {1,2,3,4} 전원과 친한데 서로는 모른다. 그래서 {1,2,3,4}에 8을 붙이거나 14를 붙일 수는 있어도 둘 다는 못 붙인다.

그렇다면 {1,2,3,4}\{1,2,3,4\}는 어떤 지위인가? 6개 쌍이 전부 1이므로 클리크는 맞다. 하지만 8번과 14번이 각각 추가 가능하므로 극대는 아니다. 그래서 max_cliques()의 36개 목록에 {1,2,3,4}는 나타나지 않는다.

Am <- as.matrix(as_adjacency_matrix(gk))
sum(Am[c(1,2,3,4), c(1,2,3,4)]) / 2            # 6  = C(4,2) → 클리크 맞음
which(Am[1,]==1 & Am[2,]==1 & Am[3,]==1 & Am[4,]==1)
# 8 14   ← 넷 모두와 친한 바깥 정점이 둘 → 극대 아님
Am[8, 14]                                       # 0

교실 읽기 — "거의 하나인 두 무리"

사범(1번) 주변에 {1,2,3,4}라는 단단한 핵이 있고, 8번과 14번이 그 핵에 각각 붙어 있지만 서로는 모른다. 이런 그림은 교실에서 흔하다 — 중심 4인방이 있고, 그 주변에 "4인방과는 다 친한데 자기들끼리는 접점이 없는" 학생이 여럿 붙는 형태다. 개입 지점이 명확하다: 8번과 14번을 이어 주면 6명짜리 큰 무리가 즉시 만들어진다. 클리크 분석의 실용적 가치는 이런 "한 칸만 채우면 되는 자리"를 짚어 주는 데 있다.

14. 클리크는 분할이 아니다 (Cliques Are Not a Partition)

"우리 반을 몇 개 무리로 나누라"는 요구에 클리크는 답하지 못한다. 극대 클리크는 서로 겹치기 때문이다. 각 정점이 몇 개의 극대 클리크에 속하는지 34명 전부 세어 보자.

정점1234567891011121314151617
소속 극대 클리크 수136732331322112111
정점1819202122232425262728293031323334
소속 극대 클리크 수112111322132224914
순위정점소속 극대 클리크 수차수비고
134 (John A)1417관장
21 (Mr. Hi)1316사범
333912관장 진영 2인자
43710두 진영에 걸친 인물
5269사범 진영
63246관장 진영

34번 한 사람이 36개 중 14개, 즉 39%의 극대 클리크에 등장한다.

1번은 13개(36%). 두 사람만으로 27개다. "극대 클리크 목록"을 그대로 집단 목록으로 읽으면 안 되는 이유가 이것이다 — 같은 사람이 계속 다시 나온다. 클리크는 분할(partition)이 아니라 피복(cover)이다.

반대쪽 끝도 보자. 극대 클리크에 딱 한 번만 등장하는 정점이 12명이다:

8 12 13 15 16 17 18 19 21 22 23 27

교실 읽기 — 소속 수는 "사회적 다면성"의 지표다

  • 소속 수 1인 학생 12명: 이들이 속한 무리는 딱 하나다. 그 무리에서 문제가 생기면 돌아갈 곳이 없다. 차수가 낮지 않아도(예: 8번은 차수 4) 위험군일 수 있다.
  • 소속 수가 큰 학생(1번 13개, 34번 14개): 여러 무리에 동시에 낀다. 학급 행사를 준비할 때 가장 넓게 말이 통하는 학생이다.
  • 주의 — 소속 수는 차수와 다르다. 3번은 차수 10인데 소속 7개, 32번은 차수 6인데 소속 4개다. 4번은 차수 6인데 소속이 3개뿐이다 (이웃이 서로 촘촘히 얽혀 큰 클리크 하나로 뭉쳐 버려서다).

15. 클리크와 실제 분열 (Cliques vs the Real Split)

가라테 클럽은 실제로 두 진영으로 쪼개졌다. 기록된 소속은 다음과 같다.

진영인원구성원
Mr. Hi (1번 사범)161, 2, 3, 4, 5, 6, 7, 8, 11, 12, 13, 14, 17, 18, 20, 22
John A (34번 관장)189, 10, 15, 16, 19, 21, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34

이제 질문 — 클리크만 보고 이 분열을 맞힐 수 있었을까? 극대 클리크 36개 중 두 진영에 걸친 것이 몇 개인지 세어 보자.

#혼합 극대 클리크크기Mr. Hi 쪽John A 쪽
1{3, 10}2310
2{3, 28}2328
3{3, 29}2329
4{1, 32}2132
5{20, 34}22034
6{14, 34}21434
7{2, 31}2231
8{1, 3, 9}31, 39
9{3, 9, 33}339, 33

36개 중 9개(25%)만 진영을 넘나든다. 그리고 그 9개 중 7개는 크기가 2다.

크기 3짜리 두 개도 9번 한 사람이 끼어서 생긴 것이다. 크기 4 이상의 극대 클리크 4개는 전부 한 진영 안에 완전히 들어 있다(§12). 즉 의미 있는 크기의 클리크는 진영을 절대 넘지 않았다.

간선 수준에서도 같은 그림이다. 78개 간선 중 진영을 가로지르는 것은 10개뿐이다.

1–9 1–32 2–31 3–9 3–10 3–28 3–29 3–33 14–34 20–34

1078=0.1282간선의 87.2%가 같은 진영 안에 있었다 \frac{10}{78} = 0.1282 \quad \Rightarrow \quad \text{간선의 } 87.2\%\text{가 같은 진영 안에 있었다}

10개 중 5개(3–9, 3–10, 3–28, 3–29, 3–33)가 3번 한 사람에게서 나온다. 3번은 사범 진영이면서 관장 진영에 다리를 다섯 개나 걸치고 있었던 인물이다.

두 지도자는 서로 아는 사이였을까 (Were the Two Leaders Connected?)

any(sapply(mck, function(k) all(c(1, 34) %in% as.integer(k))))
# FALSE   ← 1번과 34번이 함께 든 극대 클리크가 하나도 없다
are_adjacent(gk, 1, 34)
# FALSE   ← 애초에 서로 간선조차 없다

동아리에서 가장 연결이 많은 두 사람(차수 16과 17)이 서로 직접 연결돼 있지 않다.

클리크는 여기서 아무 얘기도 해 주지 않는다 — "1번과 34번이 같은 클리크에 없다"는 사실은 알려 주지만, 34명이 정확히 어느 쪽으로 갈지는 못 맞힌다. 그러려면 겹치지 않는 분할을 만들어 주는 도구가 필요하다. 그게 단원 3-3(모듈러리티)과 3-4(커뮤니티 탐지)다.

16. 연결정도가 크다고 뭉친 것은 아니다 (Degree Is Not Cohesion)

34번은 차수 17로 1위, 1번은 16으로 2위다. 그런데 이웃들끼리는 얼마나 친할까? "정점 vv의 이웃 집합이 클리크에 얼마나 가까운가"를 재면 된다.

C(v)=(이웃들 사이의 실제 간선 수)(deg(v)2) C(v) = \frac{(\text{이웃들 사이의 실제 간선 수})}{\binom{\deg(v)}{2}}

분모는 이웃들이 완전그래프였다면 있었을 간선 수다. C(v)=1C(v) = 1이면 vv와 그 이웃 전체가 하나의 클리크를 이룬다.

정점차수이웃들 사이
실제 간선
완전에 필요한 수
(deg2)\binom{\deg}{2}
C(v)C(v)
1 (Mr. Hi)161816152=120\frac{16 \cdot 15}{2} = 1200.1500
34 (John A)171517162=136\frac{17 \cdot 16}{2} = 1360.1103

C(1)=18120=0.15,C(34)=15136=0.110294 C(1) = \frac{18}{120} = 0.15, \qquad C(34) = \frac{15}{136} = 0.110294\ldots

34번은 이웃이 더 많은데(17 > 16) 이웃들 사이의 간선은 더 적다(15 < 18).

그래서 비율이 0.1103으로 1번의 0.15보다 낮다. 1번의 이웃들은 서로 더 얽혀 있고, 34번의 이웃들은 34번을 통해서만 서로 연결된 경우가 많다. 그 결과가 §12에도 그대로 나타났다 — 5-클리크 두 개는 전부 1번 쪽이고, 34번 쪽 최대는 4-클리크다.

교실 읽기 — 두 종류의 인기 학생

  • 1번형(응집형): 친구가 많고, 그 친구들끼리도 서로 친하다. 단단한 무리의 중심. 이 학생을 통하지 않아도 무리는 유지된다.
  • 34번형(방사형): 친구는 더 많은데 친구들끼리는 잘 모른다. "허브"에 가깝다. 이 학생이 빠지면 주변이 흩어진다 — 단원 2-3의 매개 중심성이 높게 나올 구조다.
  • 차수만 보면 34번 > 1번이지만, "무리를 만드는 힘"은 1번이 더 크다. 반장 선출이나 모둠 재편 때 두 유형은 전혀 다르게 작동한다.

17. 클리크의 한계 (Limitations)

오늘 배운 도구는 정의가 아름답지만 실제로 쓰기엔 세 가지 문제가 있다.

#한계이 노트에서 본 증거
1지나치게 엄격하다. 간선 하나만 빠져도 클리크가 깨진다§13 — 8–14 한 쌍 때문에 6-클리크가 5-클리크 두 개로 쪼개졌다. §12 — 파일 오류로 간선 하나가 없어지자 4-클리크 하나가 통째로 사라졌다
2너무 많이 나온다. 34명에서 36개§12 — 36개 중 11개는 크기 2다. 목록을 보고 "무리가 36개"라고 할 수는 없다
3겹친다 — 분할이 아니다§14 — 34번 한 사람이 14개, 1번이 13개에 등장한다. "각자 어느 무리 소속인가"에 답할 수 없다

세 한계에 각각 대응하는 다음 단원들

  • 한계 1 → 단원 3-2: 조건을 완화한다. "거리 2 이내면 인정"(n-클리크), "kk명까지는 몰라도 인정"(k-플렉스), "안쪽에 친구가 kk명 이상이면 인정"(k-코어)
  • 한계 2·3 → 단원 3-3, 3-4: 겹치지 않는 분할에 점수를 매기고(모듈러리티 QQ), 그 점수를 최대로 만드는 분할을 찾는다(Girvan-Newman, Louvain)

18. 교실 적용 (Classroom Application)

교우관계 설문(“같이 모둠 하고 싶은 친구를 적어 주세요”)을 무방향으로 정리했다고 하자. 클리크 분석에서 실제로 건질 수 있는 것은 다음 네 가지다.

#보는 것교실에서의 의미할 수 있는 일
1크기 4 이상의 극대 클리크이미 완성된 또래집단.
서로 누구를 짝지어도 이미 친하다
모둠을 짤 때 이 조합은 굳이 섞지 않아도 된다. 반대로 새 관계를 만들고 싶다면 일부러 갈라 놓을 지점
2거의 완성된 클리크
(한 쌍만 빠진 집합)
§13의 {1,2,3,4,8,14}처럼
간선 하나만 채우면 큰 무리가 된다
그 두 학생에게 같은 역할을 맡긴다. 개입 비용이 가장 낮고 효과가 가장 큰 자리
3소속 극대 클리크 수 K[i,i]K[i,i]1이면 돌아갈 무리가 하나뿐,
클수록 여러 무리에 낀다
소속 수 1이면서 그 클리크 크기도 2인 학생은 관찰 대상. 차수가 낮지 않아도 위험할 수 있다
4크기 2짜리 극대 클리크공통 친구가 한 명도 없는 단짝.
§7의 {S3,S4} 같은 관계
두 사람만의 폐쇄적 관계다. 한쪽이 결석·전학하면 다른 쪽이 즉시 고립된다

하지 말아야 할 것

  • 극대 클리크 목록을 그대로 "우리 반 무리 목록"으로 발표하지 말 것. 34명에서 36개가 나온다. 겹치고, 대부분 크기 2~3이다
  • 크기 2짜리 극대 클리크를 "집단"이라고 부르지 말 것. 그건 집단이 아니라 고립된 한 쌍이다
  • 클리크에 안 나온다고 "소외 학생"으로 단정하지 말 것. §16의 34번처럼 연결이 가장 많으면서도 큰 클리크에 못 드는 유형이 있다. 클리크는 응집을 재지 소외를 재지 않는다

19. 연습문제 (Exercises)

연습문제 1 — UU에 간선 S2–S4를 하나 추가하면

§3의 35행 표를 다시 보고, 다음을 손으로 답하라.

  1. 새로 삼각형이 되는 삼중항은 어느 것인가? (힌트: 합이 2였던 다섯 개 중에서 찾는다)
  2. 삼각형의 총 개수는 몇 개가 되는가?
  3. {S3,S4}\{S3,S4\}는 여전히 극대 클리크인가? §7처럼 바깥 정점 5명을 전부 검사하라.
  4. 바뀐 네트워크의 극대 클리크 목록을 모두 쓰고, 개수를 세라.
  5. 최대 클리크의 크기 ω\omega는 얼마인가?

→ 먼저 풀고 §20 해설과 맞춰 볼 것.

연습문제 2 — UU에 간선을 딱 하나 더해 4-클리크를 만들 수 있는가?

  1. 4-클리크가 되려면 4인 조 안에 간선이 몇 개 있어야 하는가?
  2. §5의 분포표에서, 간선을 하나만 더하면 완전해지는 4인 조가 되려면 지금 간선이 몇 개여야 하는가? 그런 4인 조가 UU에 있는가?
  3. 답이 "없다"라면, 몇 개의 간선을 더해야 4-클리크가 만들어지는가? 구체적으로 어느 4인 조에 어느 간선을 더하면 되는지 하나만 제시하라.

→ 먼저 풀고 §20 해설과 맞춰 볼 것.

연습문제 3 — 가라테 클럽에서 3번은 왜 특별한가?

§14의 표와 §15의 혼합 클리크 목록·교차 간선 목록을 이용하라.

  1. 3번이 속한 극대 클리크는 몇 개인가? 그중 진영을 넘나드는 것은 몇 개인가?
  2. 진영을 가로지르는 간선 10개 중 3번이 한쪽 끝인 것은 몇 개인가? 비율로는 얼마인가?
  3. 3번의 차수는 10이다. 3번이 5-클리크 {1,2,3,4,8}과 {1,2,3,4,14} 양쪽에 모두 속하면서 동시에 관장 진영과도 이어져 있다는 사실을 교실 상황으로 옮겨 설명하라. 이 학생을 다른 반으로 보내면 무슨 일이 일어나겠는가?

→ 먼저 풀고 §20 해설과 맞춰 볼 것.

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

20-1. 연습문제 1 해설 — S2–S4를 추가하면 (Solution 1)

① 무엇이 바뀌는가 — 인접행렬

바꾸는 칸은 딱 두 개다: A[2,4]A[2,4]A[4,2]A[4,2]를 0에서 1로.

UU'S1S2S3S4S5S6S7새 차수
S101100002
S210110003 (↑1)
S311010003
S401101003 (↑1)
S500010113
S600001012
S700001102

간선 수는 8 → 9가 된다.

② 합이 2였던 다섯 삼중항의 재계산 — 전부 전개

합이 3이던 두 개는 그대로 삼각형이고, 합이 0·1이던 것들은 한 칸 늘어도 3이 될 수 없다. 따라서 합이 2였던 다섯 개만 다시 계산하면 된다.

삼중항빠져 있던 쌍A[i,j]A[i,j]A[i,k]A[i,k]A[j,k]A[j,k]새 합왜 그 값인가
{S1,S3,S4}S1–S41012추가한 것은 S2–S4이지 S1–S4가 아니다 → 그대로 2
{S2,S3,S4}S2–S41113빠져 있던 쌍이 바로 추가한 쌍 → 삼각형 완성 ★
{S3,S4,S5}S3–S51012S3–S5는 여전히 0 → 그대로 2
{S4,S5,S6}S4–S61012S4–S6은 여전히 0 → 그대로 2
{S4,S5,S7}S4–S71012S4–S7은 여전히 0 → 그대로 2

답 (1)·(2) 새로 삼각형이 되는 삼중항은 {S2,S3,S4} 하나다. 삼각형 총 개수는 2 → 3개가 된다.

검산: tr(U3)/6=18/6=3\operatorname{tr}(U'^3)/6 = 18/6 = 3

{S3,S4}\{S3,S4\}의 극대성 재검사 — 바깥 5명 전부

추가 후보 vvA[v,S3]A[v,\text{S3}]A[v,S4]A[v,\text{S4}]둘 다 1?판정
S110S1–S4 없음 → 실패
S211추가 가능! S2–S4가 새로 생겼다
S501S5–S3 없음 → 실패
S600둘 다 남남 → 실패
S700둘 다 남남 → 실패

답 (3) 아니다. S2를 넣을 수 있으므로 {S3,S4}\{S3,S4\}는 더 이상 극대가 아니다. {S2,S3,S4}\{S2,S3,S4\}흡수된다.

④ 극대 클리크 목록 재작성

추가 전 (UU)크기추가 후 (UU')크기무슨 일이 있었나
{S1,S2,S3}3{S1,S2,S3}3그대로. S4를 넣으려면 S1–S4가 필요한데 없다
{S3,S4}2{S2,S3,S4}3크기 2 → 3으로 성장. 새 삼각형
{S4,S5}2{S4,S5}2그대로. S2–S5도 S3–S5도 없다
{S5,S6,S7}3{S5,S6,S7}3그대로. 건드린 곳에서 멀다

답 (4)·(5) 극대 클리크는 {S1,S2,S3}, {S2,S3,S4}, {S4,S5}, {S5,S6,S7} — 개수는 여전히 4개다. 최대 클리크의 크기는 ω(U)=3\omega(U') = \mathbf{3}으로 변하지 않았다.

R 검증: length(max_cliques(g2)) → 4, clique_num(g2) → 3, sum(diag(U2 %*% U2 %*% U2))/6 → 3.

⑤ 값의 의미

간선 하나를 더했는데 극대 클리크의 개수는 그대로다. 대신 크기 2짜리가 하나 줄고 크기 3짜리가 하나 늘었다.

이것이 클리크 지표의 전형적인 반응이다 — 개수보다 크기 분포가 움직인다. 크기 분포는 (2개, 2개) → (1개, 3개)로 바뀌었고, "고립된 한 쌍"이 하나 줄어든 것이 실질적인 개선이다.

교실 해석 — S2와 S4를 짝지어 준 효과다. S4는 이제 {S2,S3,S4}라는 진짜 삼각형의 일원이 되었다. 전에는 어느 무리에도 완전히 속하지 못하고 크기 2짜리 관계 두 개만 갖고 있었는데, 이제 왼쪽 모둠에 발을 확실히 걸쳤다. 주목할 점 — 개입 대상은 S4와 S3(이미 친한 사람)이 아니라 S3의 친구인 S2였다. "친구의 친구를 이어 주는 것"이 새 삼각형을 만드는 가장 값싼 방법이다.

20-2. 연습문제 2 해설 — 간선 하나로 4-클리크를 만들 수 있는가 (Solution 2)

① 무엇을 세는가

4-클리크는 4명 안의 모든 쌍이 연결돼야 하므로 필요한 간선 수는

(42)=432=6 \binom{4}{2} = \frac{4 \cdot 3}{2} = 6

간선을 하나만 더해서 6이 되려면 지금 5개가 있어야 한다.

② §5의 분포표를 다시 읽는다 — 0인 칸도 전부 표기

4인 조 안의 간선 수0123456
그런 4인 조의 개수04191020035
완전까지 부족한 간선6543210

답 (1)·(2) 4-클리크에는 간선 6개가 필요하다. 간선 하나로 완성되려면 지금 5개여야 하는데, UU에는 간선 5개짜리 4인 조가 하나도 없다(개수 0).

가장 좋은 후보조차 간선이 4개뿐이라 2개가 부족하다. 따라서 간선 하나로는 4-클리크를 만들 수 없다.

③ 가장 좋은 두 후보의 6개 쌍 전개

4인 조6개 쌍의 값더해야 하는 간선
{S1,S2,S3,S4}S1–S2S1–S3S1–S4S2–S3S2–S4S3–S44S1–S4S2–S4
(2개)
110101
{S4,S5,S6,S7}S4–S5S4–S6S4–S7S5–S6S5–S7S6–S74S4–S6S4–S7
(2개)
100111

답 (3) 최소 2개의 간선이 필요하다. 예를 들어:

  • {S4,S5,S6,S7}\{S4,S5,S6,S7\}S4–S6S4–S7을 더하면 → S4가 S5·S6·S7 전원과 친해져 4-클리크 완성
  • 또는 {S1,S2,S3,S4}\{S1,S2,S3,S4\}S1–S4S2–S4를 더해도 같다

④ 값의 의미 — 왜 하필 두 후보 다 S4가 문제인가

간선 4개짜리 4인 조가 딱 두 개이고, 둘 다 "삼각형 하나 + S4"의 구조다.

{S1,S2,S3,S4} = 삼각형 {S1,S2,S3} + S4, {S4,S5,S6,S7} = 삼각형 {S5,S6,S7} + S4. 삼각형이 이미 3개의 간선을 채워 주고, S4가 그중 한 명과만 이어져 4가 된다. 남은 2개는 S4가 나머지 두 명과 이어져야 채워진다. §5의 논증("삼각형 2개가 서로소이므로 4-클리크 불가")과 정확히 같은 이야기를 간선 개수로 다시 말한 것이다.

교실 해석 — "4명이 서로 전부 친한 조를 만들어 주고 싶다"면 개입이 한 번으로는 안 된다. 최소 두 번 짝지어 줘야 한다. 그리고 두 경우 모두 S4 한 사람에게 개입이 집중된다 — S4가 이미 있는 삼각형에 두 다리를 더 놓아야 하기 때문이다. 현실적으로는 연습문제 1처럼 삼각형 하나(간선 1개)를 만드는 편이 훨씬 값싸고, 소외 완화 효과는 비슷하다. "가장 큰 클리크를 키우는 것"과 "가장 외로운 학생을 무리에 넣는 것"은 다른 목표이며, 후자가 대개 더 실행 가능하다.

20-3. 연습문제 3 해설 — 3번은 왜 특별한가 (Solution 3)

① 3번이 속한 극대 클리크를 전부 나열

#극대 클리크크기구성원의 진영혼합?
1{1, 2, 3, 4, 8}51·2·3·4·8 전원 Mr. Hi아니오
2{1, 2, 3, 4, 14}51·2·3·4·14 전원 Mr. Hi아니오
3{1, 3, 9}31·3 = Mr. Hi, 9 = John A
4{3, 9, 33}33 = Mr. Hi, 9·33 = John A
5{3, 10}23 = Mr. Hi, 10 = John A
6{3, 28}23 = Mr. Hi, 28 = John A
7{3, 29}23 = Mr. Hi, 29 = John A

답 (1) 3번은 7개의 극대 클리크에 속하고(§14 표와 일치), 그중 5개가 진영을 넘나든다.

§15의 혼합 클리크는 전체 9개였다. 그중 5개가 3번 한 사람 것이다 — 혼합 클리크의 56%.

② 교차 간선 10개를 3번 기준으로 분해

교차 간선1–91–322–313–93–103–283–293–3314–3420–34
3번이 한쪽 끝인가

0+0+0+1+1+1+1+1+0+0=5,510=0.5 0+0+0+1+1+1+1+1+0+0 = 5, \qquad \frac{5}{10} = 0.5

답 (2) 진영을 가로지르는 간선 10개 중 5개(정확히 절반)가 3번에게서 나온다.

3번의 차수는 10이므로, 3번 친구의 절반(5/10)이 반대 진영 사람이라는 뜻이기도 하다. 비교하자면 1번은 차수 16 중 2개(1–9, 1–32)만 교차 = 12.5%, 34번은 차수 17 중 2개(14–34, 20–34)만 교차 = 11.8%다.

③ 3번의 이중 지위 정리

측면3번의 상태읽는 법
최대 클리크 소속5-클리크 두 개 모두에 속함사범 진영의 가장 단단한 핵({1,2,3,4})의 정회원
혼합 클리크9개 중 5개가 3번 것반대 진영과 실질적 관계를 가진 거의 유일한 사람
교차 간선10개 중 5개가 3번 것두 진영을 잇는 다리의 절반을 혼자 지탱
차수10 (전체 4위)34번(17)·1번(16)·33번(12) 다음

답 (3) — 교실로 옮기면

3번은 "한쪽 진영의 핵심 멤버이면서 동시에 반대편에 다리를 놓고 있는 사람"이다. 교실로 옮기면 — 인기 그룹의 정회원인데 그 그룹 바깥 아이들과도 두루 어울리는 학생. 1번(사범)과 34번(관장)은 각자 자기 진영 안에서만 연결이 많다. 두 세계를 실제로 잇고 있는 사람은 3번이다.

이 학생을 다른 반으로 보내면: 두 진영을 잇는 다리 10개 중 5개가 한꺼번에 사라진다. 남는 것은 1–9, 1–32, 2–31, 14–34, 20–34 다섯 개뿐이고, 혼합 극대 클리크는 9개 중 4개로 줄어든다. 학급이 사실상 두 덩어리로 갈라진다. "이 학생이 빠지면 반이 쪼개진다"는 판단은 차수(10, 4위)만 보면 절대 안 나온다연결이 어디로 향하는지를 봐야 나온다.

교실 해석 — 지켜야 할 학생과 키워야 할 학생

  • 3번형(교량형): 모둠을 재편할 때 건드리지 말아야 할 학생. 다른 반으로 보내거나 한쪽 모둠에 묶어 버리면 학급 전체의 소통이 끊긴다
  • 1번·34번형(진영 중심형): 각자 자기 무리 안에서는 강력하지만 서로 말이 통하지 않는다(§15 — 간선조차 없다). 이 둘을 같은 활동에 묶는 것은 위험하기도 하고 기회이기도 하다
  • 실무 요령 — "차수 상위 3명"이 아니라 "교차 간선을 가진 학생"을 따로 세어 보라. 학급 통합에 실제로 기여하는 사람은 후자다. 이 관점을 지표로 만든 것이 단원 3-7의 E-I 지수