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

평면 그래프 (Planar Graph)

· 수정 · 📖 약 3분 · 1,047자/단어 #algorithm #geometry #planar-graph
planar graph, 평면 그래프, planar, Euler formula, Kuratowski

정의

평면 그래프 (Planar Graph) 는 간선끼리 교차하지 않고 평면에 그릴 수 있는 그래프. 연결된 평면 그래프는 항상 Euler 공식 V - E + F = 2 를 만족한다, 여기서 V = 꼭짓점, E = 간선, F = 면(face). 평면 그래프의 대표적인 비존재 정리로 Kuratowski 정리: 그래프가 평면 iff K_5 또는 K_{3,3} 을 세부 그래프로 포함하지 않는다.

문제 상황과 동기

회로 기판(PCB) 배선, 지도 색칠(4색 정리), VLSI 설계 등에서 간선 교차를 허용할 수 없는 상황. 컴퓨터 비전의 planar SLAM, 그래프 마이닝의 genus 계산까지 확장됨. Naive planar embedding 은 NP-hard 이지만, 평면성 검사는 O(V+E) 에 가능 (Hopcroft-Tarjan).

핵심 통찰: 면(faces)까지 포함한 combinatorial count가 V, E 만으로 결정된다 는 Euler 공식이 평면 그래프 이론의 기둥.

시각화

핵심 아이디어

Euler's formula (connected planar graph):
  V - E + F = 2

Necessary condition (V >= 3):
  E <= 3V - 6

Kuratowski's theorem:
  G is planar  <=>  G has no subgraph homeomorphic to K_5 or K_{3,3}

평면 그래프의 면에는 바깥 면(outer face) 도 포함된다. Triangulation (최대 평면 그래프) 은 E = 3V - 6 을 만족.

  • Euler 지표: V - E + F = 2(C - G) 로 일반화 (C = 연결 성분 수, G = genus)
  • K_5: 5개의 꼭짓점이 모두 연결 (K_5 = 10 간선). 3V-6 = 9 이므로 평면 불가.
  • K_{3,3}: 3+3 완전 이분 그래프 (9 간선). E = 9 > 3V-6 = 12(v=6), 필연 조건은 통과하지만 non-planar (Kuratowski).

알고리즘

planarity_test(V, E, adj):
  if V < 3: return true
  if E > 3V - 6: return false          # necessary condition
  # Hopcroft-Tarjan O(V+E) planarity test
  # DFS-free numbering + lowlink 로 embedding 시도
  # 세부 Kuratowski subgraph 탐지
  return planarity_embedding(V, adj)   # 성공시 true

구현

// Planar graph necessary condition + Euler formula verification
#include <bits/stdc++.h>
using namespace std;
int main() {
  int v, e; cin >> v >> e;
  vector<vector<int>> adj(v);
  for (int i = 0; i < e; i++) {
      int a, b; cin >> a >> b;
      adj[a].push_back(b);
      adj[b].push_back(a);
  }
  // Necessary condition: E <= 3V - 6 (for V >= 3)
  if (v >= 3 && e > 3 * v - 6) {
      cout << "NOT PLANAR (E > 3V-6: " << e << " > " << 3*v-6 << ")\n";
      return 0;
  }
  // Euler test: given face count F
  int f; cin >> f;
  if (v - e + f == 2) {
      cout << "Euler formula holds: V-E+F = " << v << "-" << e << "+" << f << " = 2\n";
      cout << "PLANAR (consistent with planar embedding)\n";
  } else {
      cout << "Euler formula fails: V-E+F = " << v-e+f << " != 2\n";
  }
  return 0;
}
stdin
4 6
0 1
0 2
0 3
1 2
1 3
2 3
4
결과
Euler holds: 4-6+4=2
PLANAR

복잡도

항목
필연 조건 검사O(V+E)
Planarity test (Hopcroft-Tarjan)O(V+E)
Euler formula 검증O(1) (V, E, F 입력)
Kuratowski subgraph 검출O(V+E)
공간O(V+E)

변형 / 활용

변형설명
Maximum planar graph (triangulation)E = 3V - 6, 모든 면이 삼각형
Outerplanar graph모든 꼭짓점이 바깥 면에 속함. E <= 2V - 3
Genus (종수)평면 대신 g 개 손잡이를 가진 곡면. Euler: V - E + F = 2 - 2g
Dual graph면을 꼭짓점으로, 인접 면을 간선으로
4-color theorem평면 그래프는 4색으로 vertex-coloring 가능

응용: PCB / VLSI routing (간선 교차 금지), 지도 제작 (4색 정리), 네트워크 다이어그램, Feynman diagram.

함정

1. 필요 조건 vs 충분 조건

E <= 3V - 6 은 필요 조건일 뿐 충분하지 않음. K_{3,3}V=6, E=9 <= 12 이지만 planar 가 아님.

2. 면의 정의

바깥 면(outer face) 도 면의 개수에 포함. Disconnected graph 는 V - E + F = 1 + C (C=연결성분).

3. K_4 는 planar, K_5 는 non-planar

K_4 (V=4, E=6, F=4) 는 Euler 를 만족하고 평면에 교차 없이 그릴 수 있음. K_5 (V=5, E=10) 는 간선이 하나 비껴서 교차가 불가피.

BOJ 연습 문제

번호제목정답률링크
BOJ 1709평면그래프-kokoa-lab
BOJ 2613번호표 교환-kokoa-lab
BOJ 1997사분면-kokoa-lab

참고

이 개념을 다룬 위키 페이지 (1)

💬 댓글

사이트 검색 / 명령어

검색

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