본문으로 건너뛰기

Graphs

Discrete Mathematics and Its Applications · Kenneth H. Rosen · Ch. 09

Intuition

그래프는 객체들(정점) 사이의 관계(간선)를 수학적으로 추상화한 도구로, 네트워크, 경로 탐색, 자원 할당 등 실세계의 복잡한 연결성을 해결하는 강력한 이산 구조이다.

One-liner

객체 간의 관계를 정점과 간선으로 정의하고, 연결성, 경로 최적화, 평면성 및 채색 문제를 통해 다양한 공학적 문제를 해결하는 이론이다.

Prerequisites

Goals

  • 그래프의 다양한 유형(단순, 멀티, 의사, 방향 그래프)을 구분하고 정의할 수 있다.
  • 핸드셰이킹 정리(Handshaking Theorem) 등 차수와 관련된 정리를 활용할 수 있다.
  • 인접 행렬 및 인접 리스트를 이용해 그래프를 컴퓨터 상에 표현할 수 있다.
  • 연결성(Connectivity), 오일러 경로, 해밀턴 경로의 존재 조건을 판별할 수 있다.
  • 다익스트라(Dijkstra) 알고리즘을 사용하여 최단 경로 문제를 해결할 수 있다.
  • 그래프의 평면성(Planarity)과 채색(Coloring)의 기본 원리를 이해한다.

Core Concepts

9.1 Graphs and Graph Models

그래프는 기본적으로 정점(Vertex)과 이들을 잇는 간선(Edge)의 집합으로 구성된다. (p.589)

9.2 Graph Terminology and Special Types

그래프의 성질을 기술하기 위한 기초 용어와 특수 그래프를 다룬다. (p.598)

Definition: Degree

무방향 그래프에서 정점 vv차수 (Degree, deg(v)deg(v))는 해당 정점에 부속된 간선의 수이다. 단, 루프(Loop)는 차수에 2번 기여한다. (p.598)

  • Isolated Vertex: 차수가 0인 정점.
  • Pendant Vertex: 차수가 1인 정점.
  • Complete Graph (KnK_n): 모든 정점 쌍 사이에 간선이 하나씩 있는 단순 그래프. (p.601)
  • Bipartite Graph (이분 그래프): 정점 집합을 두 개의 서로소 집합 V1,V2V_1, V_2로 나누어 모든 간선이 한쪽 집합의 정점과 다른 쪽 집합의 정점을 잇게 할 수 있는 그래프. (p.602)

9.3 Representing Graphs and Isomorphism

그래프를 행렬이나 리스트로 표현하고, 두 그래프의 구조적 동일성을 확인한다. (p.611)

  • Adjacency Matrix (인접 행렬): 정점 간 인접 여부를 0과 1로 표현한 n×nn \times n 행렬. (p.612)
  • Isomorphism (동형): 두 그래프 사이의 정점 일대일 대응 함수가 존재하여 인접 관계가 보존되는 경우. (p.615)

9.4 Connectivity

정점들이 경로로 연결되어 있는 상태를 정의한다. (p.621)

Definition: Path

길이 nn경로 (Path)는 정점과 간선의 교대 열로, 단순 경로(Simple Path)는 같은 간선을 두 번 포함하지 않는다. (p.622)

  • Connected Graph: 모든 정점 쌍 사이에 경로가 존재하는 무방향 그래프. (p.624)
  • Strongly Connected: 방향 그래프에서 모든 a,ba, b 정점 쌍에 대해 aa에서 bb, bb에서 aa로 가는 방향 경로가 모두 존재하는 경우. (p.626)

9.5 Euler and Hamilton Paths

  • Euler Circuit: 모든 간선을 정확히 한 번씩 지나는 회로. 모든 정점의 차수가 짝수여야 한다. (p.633)
  • Hamilton Circuit: 모든 정점을 정확히 한 번씩 지나는 회로. 필요충분조건은 아직 밝혀지지 않았다. (p.638)

9.6 Shortest-Path Problems

간선에 가중치가 부여된 그래프에서 두 정점 사이의 최소 비용 경로를 찾는다. (p.647)

  • Dijkstra's Algorithm: 단일 출발지에서 다른 모든 정점까지의 최단 경로를 찾는 알고리즘 (O(n2)O(n^2)). (p.651)
  • Traveling Salesman Problem (외판원 문제): 모든 정점을 방문하고 돌아오는 가중치 합이 최소인 해밀턴 회로를 찾는 문제 (NP-Hard). (p.653)

9.7 Planar Graphs

평면 위에서 간선들이 교차하지 않게 그릴 수 있는 그래프이다. (p.657)

Theorem: Euler's Formula

연결된 평면 단순 그래프의 정점 수 vv, 간선 수 ee, 면 수 rr 사이에는 다음 관계가 성립한다.

r=ev+2r = e - v + 2

(p.660)

  • Kuratowski's Theorem: 그래프가 비평면일 필요충분조건은 K3,3K_{3,3}이나 K5K_5와 동상(homeomorphic)인 부분 그래프를 포함하는 것이다. (p.664)

9.8 Graph Coloring

인접한 정점을 서로 다른 색으로 칠할 때 필요한 최소 색상을 연구한다. (p.666)

  • Chromatic Number (χ(G)\chi(G)): 그래프 GG를 채색하는 데 필요한 최소 색의 수. (p.667)
  • Four Color Theorem: 모든 평면 그래프의 채색수는 4 이하이다. (p.668)

Notation

기호의미
G=(V,E)G = (V, E)정점 집합 VV와 간선 집합 EE로 구성된 그래프
deg(v)deg(v)정점 vv의 차수
deg+(v),deg(v)deg^+(v), deg^-(v)방향 그래프에서의 외차수(Out-degree)와 내차수(In-degree)
KnK_nnn개의 정점을 가진 완전 그래프
Km,nK_{m,n}m,nm, n개의 정점으로 나뉜 완전 이분 그래프
χ(G)\chi(G)그래프 GG의 채색수

Key Theorems & Formulas

Theorem (The Handshaking Theorem)

조건: G=(V,E)G = (V, E)가 무방향 그래프일 때.

결론:

2e=vVdeg(v)2e = \sum_{v \in V} deg(v)

즉, 모든 정점 차수의 합은 간선 수의 2배이며, 따라서 차수가 홀수인 정점의 개수는 항상 짝수이다. (p.599)

Theorem (Dirac's Theorem)

조건: n3n \ge 3인 단순 그래프 GG에서 모든 정점의 차수가 n/2n/2 이상일 때.

결론: GG는 해밀턴 회로를 가진다. (p.641)

Intuitions

  • 핸드셰이킹 정리: 악수를 하면 두 사람이 손을 한 번씩 내밀듯, 간선 하나는 두 정점의 차수를 각각 1씩 올리기 때문에 전체 합은 항상 짝수가 된다.
  • 이분 그래프: 집합 내부에서는 서로 적대적이라 연결되지 않고, 오직 다른 집합하고만 상호작용하는 구조로 이해할 수 있다.
  • 오일러 vs 해밀턴: 오일러는 '길(간선)'을 다 밟는 것이 중요하고(청소차), 해밀턴은 '지점(정점)'을 다 방문하는 것이 중요하다(택배 배송).
  • 평면성: 입체적으로 꼬인 전선을 평면에 겹치지 않게 배치할 수 있는지를 묻는 회로 설계 문제와 직결된다.

Worked Examples

Example 1: Handshaking Theorem 적용

문제: 정점이 10개이고 모든 정점의 차수가 6인 그래프의 간선 수는? (p.599)

핵심 단계:

  1. 모든 차수의 합을 구한다: 10×6=6010 \times 6 = 60.
  2. 공식 2e=602e = 60에 대입한다.
  3. e=30e = 30.

요점: 차수의 합은 간선의 중복 계산을 포함함을 이해한다.

Example 2: Dijkstra's Algorithm

문제: 가중치 그래프에서 출발점 aa부터 목적지 zz까지의 최단 거리 찾기. (p.650)

핵심 단계:

  1. 출발점 aa의 라벨을 0, 나머지를 \infty로 초기화한다.
  2. 방문하지 않은 정점 중 라벨이 가장 작은 정점 uu를 선택한다.
  3. uu와 인접한 정점 vv들에 대해 L(v)>L(u)+w(u,v)L(v) > L(u) + w(u,v)이면 라벨을 갱신한다.
  4. zz를 방문할 때까지 반복한다.

요점: 탐욕적 선택(Greedy choice)이 전역적 최적해를 보장함을 보여준다.

Common Pitfalls

Pitfall

오일러 회로와 경로의 혼동: 모든 정점의 차수가 짝수여야 회로(출발지로 복귀)가 존재하며, 홀수 차수 정점이 정확히 2개일 때는 경로(복귀 불가)만 존재한다. 2개를 초과하면 둘 다 불가능하다. (p.636)

Pitfall

단순 그래프의 오해: 인접 행렬 AA에서 대각 성분 aiia_{ii}가 0이 아니거나, aija_{ij}가 1보다 크면 그것은 단순 그래프가 아니라 루프나 멀티 간선이 있는 그래프이다. (p.613)

Connections

  • 선행 개념: Ch. 2 집합론 (정의), Ch. 3 행렬 (인접 행렬 표현 및 복잡도), Ch. 8 관계 (유향 그래프의 대수적 기초).
  • 후속 개념: Ch. 10 트리를 포함한 그래프의 세부 알고리즘, 네트워크 흐름(Network Flow). Ch. 12 계산 모델링 (상태 전이도는 유향 그래프).
  • 응용 분야: 소셜 네트워크 분석(연결성), 구글 페이지랭크(방향 그래프), 물류 최적화(TSP), 지도 제작(채색).

Critical Notes

교재가 강조하는 것

  • 그래프 모델링의 다양성: 생태학, 조직도, 컴퓨터 네트워크 등 실사례를 통한 접근.
  • 정형화된 표현법: 알고리즘 구현을 위한 행렬 및 리스트 표현의 중요성.

실제로 중요한 것

  • 다익스트라 알고리즘: 실무에서 경로 탐색 엔진의 기초가 되며 면접 등에서도 자주 등장.
  • NP-완전 문제의 인식: 해밀턴 회로와 TSP가 계산적으로 매우 어렵다는 것을 인지하고 근사 알고리즘의 필요성을 이해하는 것.

교재가 생략하거나 얼버무리는 것

  • 4색 정리의 증명: 컴퓨터를 이용한 수천 시간의 계산이 포함되어 있어 직관적 증명은 생략됨. (p.668)
  • Kuratowski 정리의 복잡한 증명: 정리의 진술만 하고 상세 증명은 범위를 벗어남. (p.664)

Open Questions

이해하지 못한 것

  • 왜 해밀턴 회로의 존재 여부를 판별하는 간단한 필요충분조건은 발견되지 않았는가? (계산 복잡도 이론과의 연계 학습 필요)

더 알고 싶은 것

  • 평면 그래프가 아닌 그래프를 평면에 그릴 때 교차점을 최소화하는 알고리즘(Crossing Number)의 최신 연구 현황. (p.666)
  • 그래프 채색 문제를 활용한 실제 컴파일러의 레지스터 할당(Register Allocation) 최적화 과정. (p.672)