나뭇잎 교과서

인접행렬

그래프를 컴퓨터에 넣으려면 그림이 아니라 수의 표로 바꿔야 합니다. 이어진 두 꼭짓점의 자리에 1, 아니면 0을 적은 행렬이 인접행렬입니다. 행렬로 바꾸면 행렬의 계산으로 그래프의 성질을 알아낼 수 있습니다. 이 절에서는 그래프와 인접행렬을 오가며 바꿔 보고, 인접행렬의 거듭제곱이 경로의 수를 세어 주는 것을 확인합니다.

본문

인접행렬

본문

네 도시 1, 2, 3, 4 사이에 직항 노선이 1–2, 2–3, 3–1, 3–4로 놓여 있다. 노선마다 양방향으로 다닌다. 도시 1에서 출발해 비행기를 정확히 세 번 타서 도시 4에 도착하는 경로는 몇 가지일까? 같은 도시를 다시 지나도 된다. 노선이 많아지면 그림을 보고 세기가 어렵다. 그래프를 수의 표로 바꾸어 행렬의 곱셈으로 이런 경로의 수를 계산할 수 있다고 한다. 어떻게 할까?

1 2 3 4 인접행렬 A 0 1 1 0 1 0 1 0 1 1 0 1 0 0 1 0 i행 j열이 1이면 i와 j 사이에 노선
그림 1. 그래프를 인접행렬로 바꾸면 각 행의 합이 그 도시의 차수이다.
먼저 알아야 할 것행렬의 곱셈, 꼭짓점의 차수(꼭짓점의 차수와 변의 개수).

4.3.1그래프를 표로 바꾸다

꼭짓점이 \(n\)개인 그래프에서, \(i\)번째와 \(j\)번째 꼭짓점이 변으로 이어져 있으면 1, 아니면 0을 \(i\)행 \(j\)열에 적은 \(n\times n\) 행렬을 인접행렬이라 한다. 변에 방향이 없으면 \(i\)와 \(j\)가 이어진 것과 \(j\)와 \(i\)가 이어진 것이 같으므로 인접행렬은 대칭행렬이다. 자기 자신과 잇는 변이 없으면 대각성분은 모두 0이다. 각 행의 성분을 더하면 그 꼭짓점과 이어진 꼭짓점의 수, 곧 차수가 된다. 그래프를 표로 바꾸면 컴퓨터가 다루기 쉽고, 행렬의 계산으로 그래프의 성질을 구할 수 있다.

정리 4.3.1 인접행렬의 거듭제곱

그래프의 인접행렬을 \(A\)라 하면 \(A^k\)의 \(i\)행 \(j\)열 성분은 꼭짓점 \(i\)에서 \(j\)로 가는 길이 \(k\)인 길(같은 꼭짓점을 다시 지나도 됨)의 개수이다. 특히 \(A^2\)의 대각성분은 각 꼭짓점의 차수이고, \(A^3\)의 대각성분의 합을 6으로 나누면 삼각형의 개수이다.

\(A^2\)의 \(i\)행 \(j\)열 성분은 \(\sum_k a_{ik}a_{kj}\)인데, \(a_{ik}a_{kj}\)는 \(i\)에서 \(k\)로, \(k\)에서 \(j\)로 가는 변이 모두 있을 때만 1이다. 그래서 이 합은 \(i\)에서 한 번 갈아타 \(j\)로 가는 경로의 수이다. 같은 생각을 되풀이하면 \(A^k\)의 성분은 \(k\)번 이동하는 경로의 수이다. 삼각형 하나는 세 꼭짓점 각각에서 두 방향으로 돌아오는 길이 3인 길 6개를 만들므로, \(A^3\)의 대각합을 6으로 나누면 삼각형의 수가 된다.1

4.3.2제곱이 알려 주는 것

그림 1의 인접행렬을 제곱하면 첫째 행은 \((2, 1, 1, 1)\)이다. 대각성분 2는 도시 1의 차수이고, 나머지 성분 1은 도시 1에서 한 번 갈아타 도시 2, 3, 4에 가는 경로가 하나씩 있다는 뜻이다. 예를 들어 1에서 4로는 1→3→4 하나뿐이다. 이렇게 행렬을 곱하는 계산이 경로를 일일이 따라가는 일을 대신한다. 노선이 수백 개인 실제 항공망에서도 행렬의 곱셈만으로 경로의 수를 셀 수 있다.

행렬1행 (도시 1에서 출발)뜻 A(0, 1, 1, 0)직항 A²(2, 1, 1, 1)두 번 타기 A³(2, 3, 4, 1)세 번 타기, 4로 1가지
그림 2. 인접행렬을 거듭 곱하면 정해진 횟수만큼 이동하는 경로의 수가 나온다.

4.3.3예제 풀이

예제 4.3.2

처음 질문의 인접행렬로 \(A^3\)의 1행 4열 성분을 구해, 도시 1에서 세 번 타서 도시 4에 가는 경로의 수를 구하여라. 그 경로를 적어라. 또 \(A^3\)의 대각합으로 삼각형의 개수를 구하여라.

\(A^2\)의 1행은 \((2, 1, 1, 1)\)이고, \(A\)의 4열은 \((0, 0, 1, 0)\)이므로 \(A^3\)의 1행 4열은 \(2\times0 + 1\times0 + 1\times1 + 1\times0 = 1\)이다. 그래서 경로는 한 가지이고, 1→2→3→4이다. 1→3에서 바로 4로 가면 두 번이고, 세 번 타려면 3에 도착하기 전에 한 번 더 갈아타야 하는데 그런 길은 2를 거치는 것뿐이다.

\(A^3\)의 대각성분은 같은 방법으로 \((2, 2, 2, 0)\)이므로 대각합은 6이고, 삼각형은 \(6/6 = 1\)개이다. 실제로 그래프에는 1, 2, 3으로 이루어진 삼각형 하나가 있다. 도시 4는 삼각형에 속하지 않아 대각성분이 0이다. 즉 인접행렬은 그래프를 수의 표로 바꾼 것이며, 그 거듭제곱의 성분은 정해진 횟수만큼 이동하는 경로의 수여서, 그림을 따라가지 않고도 경로와 삼각형을 셀 수 있다.

아래 탐구 카드에서 그래프를 인접행렬로 바꾸어 보고, 행렬의 곱셈으로 세 번 갈아타는 항공편 경로의 수를 세어 보자.

  1. 사회 연결망 연구에서는 인접행렬로 친구의 친구 수나 삼각형의 비율을 계산한다. 내 친구 둘이 서로도 친구인 비율을 뭉침 계수라 하며, 실제 사람들의 연결망은 아무렇게나 이은 그래프보다 이 값이 훨씬 크다.
마무리

인접행렬은 두 꼭짓점이 이어져 있으면 1, 아니면 0을 적은 정사각행렬로, 방향 없는 그래프에서는 대칭이고 행의 합이 차수이다. 인접행렬의 \(k\)제곱의 성분은 두 꼭짓점 사이의 길이 \(k\)인 길의 개수이고, \(A^3\)의 대각합을 6으로 나누면 삼각형의 수이다. 처음 질문에서 도시 1에서 세 번 타서 도시 4에 가는 경로는 \(A^3\)의 1행 4열 성분인 1가지, 곧 1→2→3→4이다.

탐구 1

그래프를 수의 표로 바꾸면 무엇을 계산할 수 있을까?

인접행렬 · 조작

  1. 질문컴퓨터는 그림을 볼 수 없다. 꼭짓점이 수천 개인 연결망을 컴퓨터에 넣으려면 그래프를 어떤 모양의 자료로 바꿔야 할까?
  2. 복원행렬의 \((i, j)\) 성분은 \(i\)행 \(j\)열의 수이다.
  3. 설명꼭짓점이 \(n\)개인 그래프에서 \(i\)와 \(j\)가 변으로 이어져 있으면 1, 아니면 0을 \((i, j)\) 성분으로 하는 \(n \times n\) 행렬을 인접행렬이라 한다. 방향 없는 그래프의 인접행렬은 대각선에 대해 대칭이고, 대각성분은 0(고리 없음)이며, \(i\)행의 합이 꼭짓점 \(i\)의 차수이다. 방향그래프에서는 \(i \to j\)일 때만 \((i, j)\) 성분이 1이라 대칭이 아닐 수 있고, 행의 합은 나가는 변, 열의 합은 들어오는 변의 수이다.
  4. 연결인접행렬을 거듭제곱하면 경로의 수를 셀 수 있다(다음 카드). 고급 대수의 페이지랭크도 방향그래프의 인접행렬에서 시작했다.
  5. 적용그래프에서 변을 잇고 행렬이 어떻게 바뀌는지, 행렬의 칸을 눌러 그래프가 어떻게 바뀌는지 보자. "방향 있음"으로 바꾸면 행렬의 대칭이 어떻게 되는가? 행의 합과 차수를 비교해 보자.
  6. 판단꼭짓점의 번호를 바꾸면 인접행렬의 모양은 달라지지만 그래프는 같다. 그래서 두 행렬이 다르게 생겼다고 두 그래프가 다르다고 단정할 수 없다.

확인조건이 달라지면

방향 없는 그래프의 인접행렬에서 모든 성분의 합이 14이다. 변은 몇 개일까?

탐구 2

세 번 갈아타서 도착하는 항공편 경로는 몇 가지일까?

인접행렬의 거듭제곱 · 활용

  1. 질문다섯 도시 사이에 직항 노선이 있다. 서울에서 출발해 비행기를 정확히 세 번 타고 부산에 도착하는 경로(같은 도시를 다시 들러도 됨)는 몇 가지일까? 하나하나 세지 않고 계산할 수 있을까?
  2. 복원인접행렬 \(A\)의 \((i, j)\) 성분은 \(i\)와 \(j\) 사이의 변의 수이다. 행렬의 곱 \(AB\)의 \((i, j)\) 성분은 \(A\)의 \(i\)행과 \(B\)의 \(j\)열에서 같은 순서의 성분끼리 곱해 더한 값이다.
  3. 설명\((A^2)_{ij} = A_{i1}A_{1j} + A_{i2}A_{2j} + \cdots + A_{in}A_{nj}\)는 "\(i\)에서 \(m\)으로, \(m\)에서 \(j\)로" 가는 길을 중간 도시 \(m\)마다 세어 더한 것이므로 길이 2인 경로의 수이다. 같은 이유로 \((A^k)_{ij}\)는 \(i\)에서 \(j\)로 가는 길이 \(k\)인 경로(같은 꼭짓점을 다시 지나도 됨)의 수이다. 대각성분 \((A^2)_{ii}\)는 꼭짓점 \(i\)의 차수와 같다.
  4. 연결\((A^3)_{ii}\)의 합을 6으로 나누면 그래프 속 삼각형의 개수가 된다. 사회 연결망 분석에서 "친구의 친구의 친구" 수를 세거나, 고급 대수의 마르코프 연쇄에서 여러 단계 뒤의 확률을 계산할 때 같은 원리를 쓴다.
  5. 적용출발, 도착, \(k\)를 바꾸며 표의 강조된 수와 아래 경로 목록의 개수가 같은지 확인해 보자. \(k = 2\)에서 대각선의 수는 각 도시의 노선 수와 같은가?
  6. 판단\((A^k)_{ij}\)는 같은 도시를 여러 번 지나는 경로까지 센다. 한 도시를 한 번만 지나는 경로(단순 경로)의 수는 이렇게 쉽게 구할 수 없다. 노선은 수업용으로 만든 가상의 것이다.

확인조건이 달라지면

삼각형 그래프(세 꼭짓점이 서로 모두 이어짐)에서 한 꼭짓점에서 출발해 길이 2로 같은 꼭짓점에 돌아오는 경로의 수는?

AI 출제 문항연습문제 풀어보기11문항 수능·모의평가·학력평가기출문제 풀어보기12문항
Esc

↑↓ 고르기Enter 열기