SNA 이론 · 단계별 학습 차례

단원 1-7Reachability Matrix & Strong/Weak Components

도달가능성 행렬과 강한·약한 컴포넌트

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

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

단원 1-6에서 거리행렬 DD를 만들었다. 오늘은 거기서 숫자를 버리고 0/1만 남긴다.

"몇 단계냐"는 잊고, "닿기는 하냐"만 묻는다. 그리고 "서로 닿는 학생끼리 묶으면 몇 덩어리인가?"

이 두 질문의 답이 도달가능성 행렬컴포넌트다. 단원 1-6의 DD를 보면 답이 이미 절반은 보인다 — \infty가 아닌 칸이 곧 "닿는" 칸이다.

D=M1M2M3M4M5M101121M220123M312012M40M512230R=M1M2M3M4M5M111111M211111M311111M400010M511111 D=\begin{array}{c|ccccc} & M_1 & M_2 & M_3 & M_4 & M_5\\ \hline M_1 & 0 & 1 & 1 & 2 & 1\\ M_2 & 2 & 0 & 1 & 2 & 3\\ M_3 & 1 & 2 & 0 & 1 & 2\\ M_4 & \infty & \infty & \infty & 0 & \infty\\ M_5 & 1 & 2 & 2 & 3 & 0 \end{array} \qquad\Longrightarrow\qquad R=\begin{array}{c|ccccc} & M_1 & M_2 & M_3 & M_4 & M_5\\ \hline M_1 & 1 & 1 & 1 & 1 & 1\\ M_2 & 1 & 1 & 1 & 1 & 1\\ M_3 & 1 & 1 & 1 & 1 & 1\\ M_4 & 0 & 0 & 0 & 1 & 0\\ M_5 & 1 & 1 & 1 & 1 & 1 \end{array}

오늘은 이 RR거리행렬 없이 곧바로 만드는 법(§2~§4)과, RR에서 학생 집단을 갈라내는 법(§6~§7)을 배운다.

2. 도달가능성 행렬의 정의 (Definition of Reachability)

정의. 도달가능성 행렬(reachability matrix) RR

R[i,j]={1i에서 j로 가는 길이 있다0없다 R[i,j] = \begin{cases} 1 & i \text{에서 } j \text{로 가는 길이 있다} \\ 0 & \text{없다} \end{cases}

이며, 행렬로는 다음과 같이 계산한다:

R=(  I+A+A2+A3++An1  )>0 R = \Big(\; I + A + A^2 + A^3 + \cdots + A^{n-1} \;\Big) > 0

세 부분으로 나눠 읽는다.

부분왜 필요한가
II0걸음 — 제자리d(i,i)=0d(i,i)=0 관례를 반영 (§3에서 자세히)
A+A2+A + A^2 + \cdots1걸음, 2걸음, … 걷기의 개수길이가 몇이든 하나라도 있으면 닿는다
An1A^{n-1}에서 멈춤4걸음까지 (n=5n=5)경로는 최대 n1n-1걸음 — 단원 1-6 §2와 같은 이유
>0> 0양수면 1, 0이면 0개수는 버리고 유무만 남긴다

더하는 이유는 "합"이 필요해서가 아니다. 실제로 필요한 건 논리합(OR) — A,A2,A, A^2, \dots어느 하나라도 그 칸이 0이 아니면 1이다. 행렬은 음수가 없으므로 그냥 더한 뒤 > 0을 씌워도 결과가 같아서 이렇게 쓴다. 그래서 §4에서 나오는 합계 숫자 8, 7, 4 …는 버려질 값이다. 개수 자체에는 의미를 두지 말 것 (단원 1-3에서 배운 대로, 그 숫자는 걷기의 개수라 부풀려져 있다).

3. 왜 II를 더하는가 (Why Add the Identity)

II를 빼고 A+A2+A3+A4A + A^2 + A^3 + A^4만 더하면 대각선이 어떻게 되는지 보자. 단원 1-3에서 대각선의 뜻은 "자기에게 돌아오는 순환"이었다.

학생AAA2A^2A3A^3A4A^4II 없는 합순환에 속하는가
M102147 > 0예 — M1→M3→M1
M200101 > 0예 — M2→M3→M1→M2
M301124 > 0
M400000아니오 — 나가는 화살표가 없다
M501023 > 0예 — M5→M1→M5

II가 없으면 M4는 자기 자신에게조차 도달하지 못한다고 기록된다. 그러면 "M4는 어느 컴포넌트에도 속하지 않는" 이상한 결과가 나온다. II를 더하는 것은 "누구나 자기 자신에게는 0걸음으로 닿아 있다"는 관례를 행렬에 심는 일이다. 수학적으로는 A0=IA^0 = I이므로 II는 "0걸음 걷기"를 세는 항이라고 봐도 된다.

4. 손 계산 — 25칸 전부 더하기 (Summing All 25 Cells)

다섯 행렬 I,A,A2,A3,A4I, A, A^2, A^3, A^4를 칸별로 더한다. 단원 1-6 §1에 다 있는 값이다. 0인 항도 빼지 않고 다섯 항을 전부 쓴다.

IIAAA2A^2A3A^3A4A^4RR
[1,1][1,1]1021481
[1,2][1,2]0102141
[1,3][1,3]0112371
[1,4][1,4]0011241
[1,5][1,5]0102141
[2,1][2,1]0010231
[2,2][2,2]1001021
[2,3][2,3]0101131
[2,4][2,4]0010121
[2,5][2,5]0001011
[3,1][3,1]0102141
[3,2][3,2]0010231
[3,3][3,3]1011251
[3,4][3,4]0101131
[3,5][3,5]0010231
[4,1][4,1]0000000
[4,2][4,2]0000000
[4,3][4,3]0000000
[4,4][4,4]1000011
[4,5][4,5]0000000
[5,1][5,1]0102141
[5,2][5,2]0010231
[5,3][5,3]0011241
[5,4][5,4]0001121
[5,5][5,5]1010241

합계 행렬과 그 결과인 RR:

I+A+A2+A3+A4=M1M2M3M4M5M184744M232321M343533M400010M543424  >0    R=M1M2M3M4M5M111111M211111M311111M400010M511111 I{+}A{+}A^2{+}A^3{+}A^4=\begin{array}{c|ccccc} & M_1 & M_2 & M_3 & M_4 & M_5\\ \hline M_1 & 8 & 4 & 7 & 4 & 4\\ M_2 & 3 & 2 & 3 & 2 & 1\\ M_3 & 4 & 3 & 5 & 3 & 3\\ M_4 & 0 & 0 & 0 & 1 & 0\\ M_5 & 4 & 3 & 4 & 2 & 4 \end{array} \;>0\;\Longrightarrow\; R=\begin{array}{c|ccccc} & M_1 & M_2 & M_3 & M_4 & M_5\\ \hline M_1 & 1 & 1 & 1 & 1 & 1\\ M_2 & 1 & 1 & 1 & 1 & 1\\ M_3 & 1 & 1 & 1 & 1 & 1\\ M_4 & 0 & 0 & 0 & 1 & 0\\ M_5 & 1 & 1 & 1 & 1 & 1 \end{array}

§1에서 거리행렬의 \infty를 0으로 바꿔 만든 RR정확히 같다 ✓. 두 길(거리행렬에서 오는 길 / 행렬 거듭제곱을 더하는 길)이 같은 답을 준다는 것은 R[i,j]=1d(i,j)<R[i,j]=1 \Longleftrightarrow d(i,j) < \infty라는 관계를 확인해 주는 셈이다.

5. 행과 열로 읽기 (Reading Rows and Columns)

단원 1-4에서 행합·열합의 뜻이 달랐던 것처럼, RR의 행과 열도 다른 질문에 답한다. 자기 자신(대각선)은 빼고 센다.

학생행합 − 1
out-reach
내가 소식을 보낼 수 있는 사람열합 − 1
in-reach
나에게 소식을 보낼 수 있는 사람
M14전원3M2, M3, M5
M24전원3M1, M3, M5
M34전원3M1, M2, M5
M40아무도 없음4전원
M54전원3M1, M2, M3

M4는 완벽한 비대칭이다 — 도달 범위 0, 피도달 범위 4. 반면 나머지 넷은 모두 out-reach 4(전원에게 닿는다). 즉 도달가능성만으로는 M1~M3, M5를 구별할 수 없다. "닿냐 안 닿냐"는 거친 질문이라 학생 간 차이를 대부분 지워 버린다. 그래서 얼마나 빨리 닿는지(거리, 단원 1-6)와 얼마나 중심적으로 닿는지(중심성, 2단계)를 따로 재는 것이다.

6. 강한 컴포넌트 — RRTR \wedge R^{\mathsf T} (Strong Components)

정의. 두 학생 i,ji, j강하게 연결(strongly connected)되어 있다는 것은 iji \to jjij \to i둘 다 가능하다는 뜻이다:

R[i,j]=1   이고   R[j,i]=1(RRT)[i,j]=1 R[i,j] = 1 \;\text{ 이고 }\; R[j,i] = 1 \quad\Longleftrightarrow\quad \big(R \ast R^{\mathsf T}\big)[i,j] = 1

강한 컴포넌트(strongly connected component)는 이렇게 서로 오갈 수 있는 학생들의 최대 집합이다.

RTR^{\mathsf T}RR의 행과 열을 바꾼 것이므로 RT[i,j]=R[j,i]R^{\mathsf T}[i,j] = R[j,i]다. 따라서 RRRTR^{\mathsf T}칸끼리 곱하면(둘 다 1일 때만 1) 양방향 도달 여부가 나온다. RR의 4행만 0이므로 RTR^{\mathsf T}는 4만 0이다:

RT=M1M2M3M4M5M111101M211101M311101M411111M511101 R^{\mathsf T}=\begin{array}{c|ccccc} & M_1 & M_2 & M_3 & M_4 & M_5\\ \hline M_1 & 1 & 1 & 1 & 0 & 1\\ M_2 & 1 & 1 & 1 & 0 & 1\\ M_3 & 1 & 1 & 1 & 0 & 1\\ M_4 & 1 & 1 & 1 & 1 & 1\\ M_5 & 1 & 1 & 1 & 0 & 1 \end{array}

칸별로 곱한다. 값이 갈리는 칸(4행·4열)만 전개해 보면:

R[i,j]R[i,j]R[j,i]R[j,i]읽기
[1,4][1,4]100M1→M4는 되지만 M4→M1이 안 된다 → 강하게 연결 아님
[4,1][4,1]010위와 같은 쌍을 반대에서 본 것
[2,4][2,4]100M4는 누구와도 상호 도달이 안 된다
[1,2][1,2]111M1→M2 M1→M2, M2→M1 M2→M3→M1
[2,5][2,5]111M2→M5 3걸음, M5→M2 2걸음 ✓
[4,4][4,4]111자기 자신과는 항상 강하게 연결 (II를 더한 효과)
RRT=M1M2M3M5M4M111110M211110M311110M511110M400001 R \ast R^{\mathsf T}=\begin{array}{c|ccccc} & M_1 & M_2 & M_3 & M_5 & M_4\\ \hline M_1 & 1 & 1 & 1 & 1 & 0\\ M_2 & 1 & 1 & 1 & 1 & 0\\ M_3 & 1 & 1 & 1 & 1 & 0\\ M_5 & 1 & 1 & 1 & 1 & 0\\ \hline M_4 & 0 & 0 & 0 & 0 & 1 \end{array}

(M4를 맨 아래로 옮겨 적었다. 이렇게 순서를 바꾸면 1로 채워진 정사각 블록이 드러난다.)

결과. 강한 컴포넌트는 2개다:

  • {M1,M2,M3,M5}\{M_1, M_2, M_3, M_5\} — 크기 4. 이 넷은 서로 오갈 수 있다.
  • {M4}\{M_4\} — 크기 1. 혼자다.

RRTR \ast R^{\mathsf T}의 블록이 학생을 깔끔하게 분할한다는 것(겹치지도, 남지도 않는다)은 "강하게 연결됨"이 동치관계이기 때문이다 — 자기 자신과 연결되고(반사), iji{\leftrightarrow}jjij{\leftrightarrow}i이고(대칭), iji{\leftrightarrow}j, jkj{\leftrightarrow}kiki{\leftrightarrow}k다(추이). 뒤에 나오는 클리크(단원 3단계)와 달리 컴포넌트는 서로 겹칠 수 없다.

7. 약한 컴포넌트 — 방향을 지우고 보기 (Weak Components)

정의. 약한 컴포넌트(weakly connected component)는 화살표 방향을 모두 무시했을 때 서로 연결된 학생의 최대 집합이다. 계산은 단원 1-5의 대칭화(OR 규칙)를 먼저 하고 도달가능성을 구하면 된다: S=max(A,AT)S = \max(A, A^{\mathsf T}) 로 바꾼 뒤 Rw=(I+S++Sn1)>0R_w = (I + S + \cdots + S^{n-1}) > 0.

M4는 M3에게서 지명을 받았으므로, 방향을 지우면 M3–M4 선이 생긴다. 그러면:

Rw=M1M2M3M4M5M111111M211111M311111M411111M511111 R_w=\begin{array}{c|ccccc} & M_1 & M_2 & M_3 & M_4 & M_5\\ \hline M_1 & 1 & 1 & 1 & 1 & 1\\ M_2 & 1 & 1 & 1 & 1 & 1\\ M_3 & 1 & 1 & 1 & 1 & 1\\ M_4 & 1 & 1 & 1 & 1 & 1\\ M_5 & 1 & 1 & 1 & 1 & 1 \end{array}

전부 1이므로 약한 컴포넌트는 1개(크기 5)다. 세 지표를 나란히 놓으면:

약한 컴포넌트강한 컴포넌트
개수12
크기54, 1
"방향을 무시하면 반이 한 덩어리다" — 그림이 조각나 있지 않다"소식이 돌아오는 집단은 넷뿐이다" — M4는 그 순환에서 빠져 있다

강한 ⊆ 약한, 항상. 양방향으로 닿으면 방향을 무시해도 닿으므로, 강한 컴포넌트는 반드시 어떤 약한 컴포넌트 안에 들어간다. 따라서 강한 컴포넌트 개수 ≥ 약한 컴포넌트 개수다. 무방향 네트워크에서는 둘의 구분이 사라져 그냥 "컴포넌트"라 부른다.

8. R 검증 (Verification in R)

library(igraph)
g <- graph_from_adjacency_matrix(A, mode = "directed")

igraph::components(g, mode = "strong")
# $membership  M1 M2 M3 M4 M5
#                1  1  1  2  1     ← M4만 다른 번호
# $csize  4 1
# $no     2

igraph::components(g, mode = "weak")$no    # 1
is_connected(g, mode = "strong")           # FALSE
is_connected(g, mode = "weak")             # TRUE

두 가지 함정.sna를 함께 불러오면 components가 가려지므로 igraph::components()로 명시해야 한다(안 하면 "as.edgelist.sna input must be an adjacency matrix…" 에러). ② $membership의 번호 1, 2는 이름표일 뿐 순위나 크기 순이 아니다. 연습문제 2에서는 같은 네트워크 구조인데도 M4가 1번, 나머지가 2번으로 붙는다. 컴포넌트를 크기순으로 보려면 $csize를 따로 정렬할 것.

§2의 정의를 직접 구현해 손 계산과 맞춰 본다:

I <- diag(5)
P <- I; SUM <- I
for (k in 1:4) { P <- P %*% A; SUM <- SUM + P }   # I + A + A^2 + A^3 + A^4
R <- (SUM > 0) * 1
R
#    M1 M2 M3 M4 M5
# M1  1  1  1  1  1
# M2  1  1  1  1  1
# M3  1  1  1  1  1
# M4  0  0  0  1  0
# M5  1  1  1  1  1     ← §4 손 계산과 동일

rowSums(R) - diag(R)      # 4 4 4 0 4   도달 범위
colSums(R) - diag(R)      # 3 3 3 4 3   피도달 범위
R * t(R)                  # 강한 연결 블록 — §6과 동일

# 거리행렬에서 오는 길 (단원 1-6과의 연결)
all( (distances(g, mode="out") < Inf) * 1 == R )   # TRUE

# sna 패키지
library(sna)
reachability(A)                                 # 위 R과 동일
component.dist(A, connected = "strong")$csize   # 4 1
component.dist(A, connected = "weak")$csize     # 5

9. 교실 해석 (Classroom Interpretation)

① 약한 컴포넌트가 2개 이상이면 학급이 쪼개져 있다. 이것이 가장 먼저 확인할 진단이다. 약한 컴포넌트가 여러 개라는 것은 "방향을 무시해도 두 무리 사이에 선이 하나도 없다"는 뜻으로, 서로 완전히 모르는 집단이 공존한다는 강한 신호다(전학생 집단, 남녀 분리, 통학 구역 분리 등). 우리 반은 1개이므로 이 문제는 없다.

② 강한 컴포넌트는 "소식이 돌아오는 집단"이다. {M1,M2,M3,M5}\{M_1,M_2,M_3,M_5\} 안에서는 누가 말을 꺼내도 결국 다시 자기에게 돌아온다. 소문이 증폭되고, 서로에 대한 평판이 순환한다. M4는 이 순환 밖에 있어 반의 대화가 M4를 거치지 않고 돌아간다.

③ 도달가능성은 무딘 칼이다. §5에서 봤듯 M1, M2, M3, M5는 도달 범위가 모두 4로 동일하다. "모두에게 닿는다"는 사실만으로는 인기 학생과 그렇지 않은 학생을 구별할 수 없다. 컴포넌트 분석은 학급의 큰 조각을 찾는 데 쓰고, 개별 학생 비교는 중심성으로 해야 한다.

④ 설문 문항이 방향을 결정한다. "같이 놀고 싶은 친구"처럼 일방 지명이 가능한 문항은 방향 네트워크이므로 강한/약한 컴포넌트가 갈린다. 반면 "짝 활동을 함께 한 친구"처럼 사실 관계를 묻는 문항은 본래 무방향이라 컴포넌트가 하나뿐이다. 어떤 컴포넌트를 보고할지는 문항의 성격에서 정해진다.

⑤ 주의 — 컴포넌트는 "무리"가 아니다. 약한 컴포넌트 1개는 "반 전체가 어떻게든 이어져 있다"는 뜻일 뿐, 반 안에 또래 무리가 없다는 뜻이 아니다. 30명 학급은 거의 항상 컴포넌트가 1개로 나오므로 그것만으로는 아무 정보가 없다. 한 덩어리 안에서 촘촘한 부분집단을 찾는 일은 커뮤니티 탐지의 몫이다. → 3단계

10. 연습문제 (Exercises)

문제 1. M4가 M3을 지명했다고 하자(A[4,3]=1A[4,3]=1 추가). ① 새 RRM4 행 다섯 칸을 채우시오 (힌트: M4에서 나가는 길은 모두 M3을 거치므로, 기존 RR의 M3 행을 이용할 수 있다). ② RRTR \ast R^{\mathsf T}의 M4 행·열은 어떻게 바뀌는가? ③ 강한 컴포넌트는 몇 개가 되는가?

문제 2. 반대로 M3이 M4를 지명하지 않았다고 하자(A[3,4]=0A[3,4]=0으로 삭제). ① 새 RR에서 M4 행과 M4 열을 각각 쓰시오. ② 강한 컴포넌트 개수와 약한 컴포넌트 개수는 각각 몇 개인가? ③ 두 개수 중 하나는 변하지 않고 하나만 변한다. 어느 쪽이 변하며, 그 차이가 교실 진단에서 왜 중요한가?

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

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

11-1. 문제 1 — M4가 지명을 하면 (Giving M4 an Out-Tie)

① M4 행 채우기. A[4,3]=1A[4,3]=1이 유일한 나가는 지명이므로, M4에서 출발하는 모든 길의 첫 걸음은 M3이다. 따라서 "M4가 jj에 닿는다 ⟺ M3이 jj에 닿는다(또는 jj가 M3 자신)". 기존 RR의 M3 행이 전부 1이었으므로 그대로 옮겨진다. 칸마다 근거를 붙여 쓰면:

M4→M3M3이 jj에 닿는가R[4,j]R[4,j]실제 경로
[4,1][4,1]1R[3,1]=1R[3,1]=11M4→M3→M1
[4,2][4,2]1R[3,2]=1R[3,2]=11M4→M3→M1→M2
[4,3][4,3]1(목적지가 M3 자신)1M4→M3
[4,4][4,4]R[3,4]=1R[3,4]=1 (M3→M4 지명이 살아 있다)1M4→M3→M4 — 순환 발생
[4,5][4,5]1R[3,5]=1R[3,5]=11M4→M3→M1→M5

RRTR \ast R^{\mathsf T}.RR25칸이 모두 1이 되었다. 그러면 RTR^{\mathsf T}도 전부 1이므로 칸별 곱도 전부 1이다. 특히 §6에서 0이었던 칸들을 다시 확인하면:

R[i,j]R[i,j]R[j,i]R[j,i]바뀐 이유
[1,4][1,4]11 (전엔 0)1M4→M3→M1이 새로 생겼다
[2,4][2,4]11 (전엔 0)1M4→M3→M1→M2
[3,4][3,4]11 (전엔 0)1M4→M3 — 이제 M3·M4가 상호 지명
[5,4][5,4]11 (전엔 0)1M4→M3→M1→M5

① 새 RR의 M4 행 = (1,1,1,1,1)(1,1,1,1,1) — 즉 RR 전체가 1로 가득 찬다. ② RRTR \ast R^{\mathsf T}의 M4 행·열도 모두 1이 되어 0이 사라진다. ③ 강한 컴포넌트는 1개(크기 5) — 반 전체가 하나의 강한 컴포넌트가 된다 (is_connected(gx, "strong") = TRUE, 단원 1-6 연습문제 2와 같은 결론).

왜 한 줄 추가로 이렇게 바뀌는가: 이미 나머지 넷이 강한 컴포넌트를 이루고 있었고 M4로 들어오는 길도 있었다. 부족한 것은 나가는 길 하나뿐이었다. 연결정도로 말하면 dout(4)=01d_{\text{out}}(4) = 0 \to 1이 된 것이고, 그 한 걸음이 M4를 순환 안으로 끌어들였다.

교실 해석. 소외되어 보이는 학생을 순환에 넣는 데 필요한 것은 "많은 친구"가 아니라 본인이 내보내는 연결 하나일 수 있다. M4는 이미 M3에게 지명을 받고 있었으므로(내향 1), M4가 M3에게 말을 걸 수 있게 되는 것만으로 반의 대화 순환에 들어온다. 개입 설계에서 "누구와 짝을 지어 줄 것인가"보다 "이미 이 학생을 지명한 사람이 누구인가"를 먼저 보는 이유다.

11-2. 문제 2 — M4로 가는 유일한 통로를 끊으면 (Cutting M4's Only In-Tie)

① 새 RR의 M4 행과 열. A[3,4]A[3,4]가 M4로 들어오는 유일한 지명이었다 (단원 1-4에서 din(4)=1d_{\text{in}}(4)=1). 이것을 지우면 M4는 나가는 것도 들어오는 것도 없는 완전 고립자가 된다. 행·열을 각각 근거와 함께 쓰면:

방향M1M2M3M4M5근거
M4 R[4,]R[4,\cdot]00010dout(4)=0d_{\text{out}}(4)=0 — 원래부터 나갈 수 없었다 (변화 없음)
M4 R[,4]R[\cdot,4]00010din(4)=0d_{\text{in}}(4)=0이 되어 전원 1 → 전원 0으로 바뀜

(대각선 R[4,4]=1R[4,4]=1II를 더했기 때문에 남는다 — §3.)

② 컴포넌트 개수. 두 정의를 각각 적용한다:

원래M3→M4 삭제 후이유
강한 컴포넌트2개 (4, 1)2개 (4, 1)M4는 전에도 혼자였다 — 상호 도달이 없었으므로 이미 별도 컴포넌트
약한 컴포넌트1개 (5)2개 (4, 1)방향을 지웠을 때 M4를 잇던 유일한 선 M3–M4가 사라졌다

① M4 행 = (0,0,0,1,0)(0,0,0,1,0), M4 열 = (0,0,0,1,0)(0,0,0,1,0). ② 강한 컴포넌트 2개(크기 4, 1) — 변화 없음. 약한 컴포넌트 1개 → 2개(크기 4, 1) — 변화 있음. ③ 약한 컴포넌트만 변한다.

왜 중요한가: 강한 컴포넌트 개수(2)만 보고하면 지명이 하나 사라져 학생이 완전히 떨어져 나간 사건을 전혀 감지할 수 없다. 같은 "2개"가 삭제 전에는 "M4가 순환 밖에 있다"였고, 삭제 후에는 "M4가 반과 단절되었다"를 뜻한다. 두 지표를 함께 봐야 어떤 종류의 고립인지 구별된다: 약한 컴포넌트가 1개면 "받기만 하는 학생", 2개면 "완전 고립 학생"이다.

교실 해석. 삭제 후 M4는 지명하지도, 지명받지도 않는 학생이 된다. 사회성 측정에서 가장 주의해야 하는 유형이며, 밀도(0.35 → 0.30)나 평균거리 같은 전체 요약값은 거의 움직이지 않는다(지명 7개 중 1개가 줄었을 뿐). 학급 수준 지표만 보면 놓치고, 약한 컴포넌트 개수 또는 RR에서 0으로만 채워진 행·열을 확인해야 잡힌다. 학기 중 두 시점의 설문을 비교할 때는 "밀도가 비슷하다"가 아니라 "고립된 학생이 새로 생겼는가"를 먼저 볼 것.
# 문제 1
Ax <- A; Ax["M4","M3"] <- 1
gx <- graph_from_adjacency_matrix(Ax, mode="directed")
Rx <- (distances(gx, mode="out") < Inf) * 1
Rx["M4", ]                              # 1 1 1 1 1  ✓
all(Rx == 1)                            # TRUE  — R 전체가 1
igraph::components(gx, "strong")$no     # 1     ✓

# 문제 2
Ay <- A; Ay["M3","M4"] <- 0
gy <- graph_from_adjacency_matrix(Ay, mode="directed")
Ry <- (distances(gy, mode="out") < Inf) * 1
Ry["M4", ]; Ry[ , "M4"]                 # 0 0 0 1 0 / 0 0 0 1 0  ✓
igraph::components(gy, "strong")$csize  # 1 4   ← 개수 2, 그대로
igraph::components(gy, "weak")$csize    # 4 1   ← 개수 1에서 2로!
sum(Ay) / (5*4)                         # 0.3   ← 밀도는 0.35에서 거의 안 움직인다
igraph::degree(gy, mode="all")          # 5 2 3 0 2  ← M4의 총 연결정도가 0

다음 단원 — 1-8: 무방향(대칭)·가중 네트워크의 행렬 표현. 지금까지 쓴 5명 방향 네트워크를 졸업하고, 2단계(중심성)에서 계속 쓸 7명 무방향 네트워크를 새로 만든다. 여기에는 "다리 역할 학생"이 심어져 있다. · 이 문서: notes/07_단원1-7_도달가능성_강한약한컴포넌트.html