본문으로 건너뛰기
김신건의 로그

그래프 이론 기초 (Graph Theory)

· 수정 · 📖 약 4분 · 1,570자/단어 #discrete-math #graph-theory #graphs #trees
Graph Theory, 그래프 이론, 그래프, Graph, graph, 정점, 간선, 차수, 경로, 트리, 이분 그래프, 그래프 색칠

정의

그래프 (Graph) 정점 (vertex) 의 집합 간선 (edge) 의 집합 로 이루어진 이산 구조입니다. 간선은 정점의 쌍 (또는 순서쌍) 을 나타내며 정점 간 관계를 표현합니다.

컴퓨터 과학의 다양한 분야 (네트워크, 자료구조, 알고리즘, 데이터베이스, 컴파일러) 에서 그래프는 근본 언어.

그래프의 종류

무향 그래프 (Undirected Graph)

간선이 방향 없음. 로 표기 (순서 무관).

flowchart LR
  A((A)) --- B((B))
  A --- C((C))
  B --- D((D))
  C --- D

유향 그래프 (Directed Graph, Digraph)

간선이 방향 있음. 순서쌍.

flowchart LR
  A((A)) --> B((B))
  A --> C((C))
  B --> D((D))
  C --> D

가중 그래프 (Weighted Graph)

각 간선에 가중치 (weight, cost). 최단 경로 알고리즘의 대상.

flowchart LR
  A((A)) -->|5| B((B))
  A -->|3| C((C))
  B -->|2| D((D))
  C -->|8| D

다중 그래프 vs 단순 그래프

  • 단순 그래프: 자기 루프 없고 다중 간선 없음
  • 다중 그래프: 두 정점 간 여러 간선 허용

완전 그래프

모든 정점 쌍이 연결. .

이분 그래프 (Bipartite Graph)

정점을 두 집합 로 나눌 수 있고 모든 간선은 사이:

flowchart LR
  X1((X1)) --- Y1((Y1))
  X1 --- Y2((Y2))
  X2((X2)) --- Y2
  X3((X3)) --- Y3((Y3))

  style X1 fill:#fee2e2
  style X2 fill:#fee2e2
  style X3 fill:#fee2e2
  style Y1 fill:#dbeafe
  style Y2 fill:#dbeafe
  style Y3 fill:#dbeafe

정리: 그래프가 이분 그래프 홀수 길이 사이클이 없음.

차수 (Degree)

정점 차수 = 인접한 간선의 수.

악수 정리 (Handshake Theorem)

직관: 각 간선은 두 정점의 차수에 각 1씩 기여.

따름: 홀수 차수 정점의 개수는 짝수.

유향 그래프의 in/out-degree

  • = 들어오는 간선 수 (in-degree)
  • = 나가는 간선 수 (out-degree)

경로와 사이클

경로 (path): 정점의 나열 로 각 이 간선.

단순 경로: 정점이 중복되지 않음.

사이클 (cycle): 시작과 끝이 같은 경로 ().

단순 사이클: 시작/끝 외에 중복 정점 없음.

연결성 (Connectivity)

연결 그래프: 임의의 두 정점 사이에 경로 존재 (무향).

연결 요소 (connected component): 최대 연결 부분 그래프.

유향 그래프:

  • 약한 연결: 무향으로 만들면 연결
  • 강한 연결: 모든 순서쌍 에 대해 경로 존재

트리 (Tree)

연결이며 사이클이 없는 무향 그래프.

성질

  • 개 정점의 트리는 개 간선을 가짐
  • 임의의 두 정점 사이에 유일한 경로 존재
  • 어떤 간선을 제거하면 연결성 잃음
  • 어떤 두 정점 사이에 간선을 추가하면 사이클 생김

트리와 관련 개념

  • 뿌리 트리 (rooted tree): 하나의 정점을 뿌리로 지정
  • 잎 (leaf): 차수 1인 정점
  • 이진 트리: 각 정점의 자식이 최대 2개
  • 완전 이진 트리: 모든 잎이 같은 깊이

자세한 것은 트리 (알고리즘) 참조.

그래프 표현

인접 행렬 (Adjacency Matrix)

행렬. 이면 간선 존재.

장점: 간선 조회. 단점: 공간. 희소 그래프에 낭비.

인접 리스트 (Adjacency List)

각 정점에 인접 정점 리스트.

장점: 공간. 단점: 특정 간선 존재 확인 .

간선 리스트

간선의 순서쌍 목록. 크루스칼 알고리즘 등에 활용.

그래프 탐색

깊이 우선 탐색 (DFS): 스택 (재귀). 사이클 감지, 위상 정렬, SCC.

너비 우선 탐색 (BFS): 큐. 최단 거리 (간선 가중치 1).

자세한 것은 DFS, BFS 참조.

그래프 색칠

색칠 (coloring): 인접한 정점이 다른 색을 갖도록 색을 부여.

색깔 수 최소 = 색채 수 (chromatic number) .

대표 예

  • 이분 그래프:
  • :
  • 홀수 사이클:

4색 정리

평면 그래프는 항상 4개 이하 색으로 색칠 가능. 지도 색칠 문제.

응용

  • 레지스터 할당: 컴파일러가 변수를 레지스터에 배치. 겹치는 라이프타임 = 인접 간선.
  • 스케줄링: 시험 시간표 (같은 학생 = 인접 = 다른 시간).
  • 주파수 할당: 인접 기지국 = 다른 주파수.

오일러 경로와 해밀턴 경로

오일러 경로 (Eulerian Path)

모든 간선을 정확히 한 번씩 지나는 경로.

정리: 오일러 경로 존재 홀수 차수 정점 수가 0 또는 2. (2이면 그 두 정점이 시작/끝).

해밀턴 경로 (Hamiltonian Path)

모든 정점을 정확히 한 번씩 지나는 경로.

결정 문제 NP-완전 (오일러와 대조적).

매칭 (Matching)

매칭: 간선의 부분집합으로, 어떤 두 간선도 공통 정점을 갖지 않음.

완벽 매칭: 모든 정점이 매칭에 포함.

이분 그래프 매칭

이분 그래프 에서 만큼의 매칭.

Hall 의 정리: 를 모두 매칭 임의의 에 대해 .

응용: 작업 할당, 자원 배분.

그래프의 활용

네트워크

  • 인터넷 라우팅: 최단 경로 (다익스트라, BGP)
  • 소셜 네트워크: 친구 관계 (연결성, 커뮤니티 감지)
  • P2P: 그래프 위상

컴파일러

  • CFG (Control Flow Graph): 프로그램 실행 흐름
  • DFG (Data Flow Graph): 데이터 의존
  • SSA 변환: 지배자 트리
  • 레지스터 할당: 색칠

데이터베이스

  • 관계형: 외래 키 = 간선
  • 그래프 DB: Neo4j, Neptune

기계학습

  • 베이지안 네트워크: DAG
  • CRF: 무향 그래프
  • GNN (Graph Neural Networks): 그래프 위 학습

게임

  • 미로: 그래프 최단 경로
  • 체스, 오목: 상태 그래프

함정

1. 방향/무방향 혼동

무향 그래프에서 와 같음. 유향은 다름.

2. 다중 간선

인접 행렬은 다중 간선 표현 힘듦. 인접 리스트 사용.

3. 그래프 vs 트리

트리는 그래프의 특수 케이스. 사이클 없는 연결 그래프.

4. 자기 루프

형태 간선. 차수 계산 시 보통 2로 카운트 (양끝 같음).

관련 위키

이 글의 용어 (9개)
[Graph] 매칭 (Matching)algorithm
정의 그래프 $G = (V, E)$ 에서 매칭 (Matching) 은 간선의 부분집합 $M \subseteq E$ 이면서 어느 두 간선도 공통 정점을 공유하지 않는 것. - 각 …
깊이 우선 탐색 (DFS)algorithm
정의 깊이 우선 탐색 (Depth-First Search, DFS) 는 그래프 G=(V, E) 에서 갈 수 있는 만큼 깊이 들어가다가 막히면 백트래킹하는 알고리즘. 스택 (LIF…
너비 우선 탐색 (BFS)algorithm
정의 너비 우선 탐색 (Breadth-First Search, BFS) 는 그래프 G=(V, E) 에서 시작 정점 s 로부터 가까운 정점부터 순서대로 방문하는 알고리즘. 큐 (F…
다익스트라 알고리즘 (Dijkstra's Algorithm)algorithm
정의 다익스트라 알고리즘 (Dijkstra's Algorithm) 은 음이 아닌 가중치 그래프에서 단일 시작점 s 로부터 모든 정점까지의 최단 거리를 찾는 그리디 알고리즘. Ed…
위상 정렬 (Topological Sorting)algorithm
정의 위상 정렬 (Topological Sorting) 은 방향 비순환 그래프 (DAG) 의 모든 정점을 간선 방향을 어기지 않도록 일렬로 나열하는 것. 간선 가 있으면 정렬 결…
이산수학 (Discrete Mathematics)discrete-math
정의 이산수학 (Discrete Mathematics) 은 이산 (discrete, 셀 수 있는) 대상을 다루는 수학의 분야입니다. 연속 (continuous) 대상 을 다루는 …
조합론 기초 (Combinatorics)discrete-math
정의 조합론 (Combinatorics) 은 유한 집합의 원소를 세거나 배열하는 방법을 다루는 수학 분야입니다. "경우의 수 계산" 과 "구조의 존재/구성" 이 핵심 주제. 컴퓨…
집합, 관계, 함수 (Sets, Relations, Functions)discrete-math
정의 - 집합 (set): 서로 다른 원소들의 모음 - 관계 (relation): 두 집합 사이의 원소들의 대응 규칙 - 함수 (function): 정의역의 각 원소를 치역의 유…
트리 (Trees)algorithm
정의 트리 (Tree) 는 사이클이 없는 연결 그래프 (acyclic connected graph). N 개 정점이면 정확히 N-1 개 간선. 임의의 두 정점 사이에 유일한 경로…

💬 댓글

사이트 검색 / 명령어

검색

스크롤 = 확대/축소 · 드래그 = 이동 · 0 = 원래 크기 · ESC = 닫기