그래프 - kocwelearning.kocw.net/kocw/document/2016/cup/weonsumghyun/7.pdf · • 다익스트라...

26
소프트웨어학과 원성현 교수 1 7장 그래프

Upload: others

Post on 06-Jul-2020

3 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: 그래프 - KOCWelearning.kocw.net/KOCW/document/2016/cup/weonsumghyun/7.pdf · • 다익스트라 알고리즘(Dijkstra algorithm) • 네덜란드의 천재 과학자 다익스트라가

소프트웨어학과 원성현 교수 1

7장 그래프

Page 2: 그래프 - KOCWelearning.kocw.net/KOCW/document/2016/cup/weonsumghyun/7.pdf · • 다익스트라 알고리즘(Dijkstra algorithm) • 네덜란드의 천재 과학자 다익스트라가

소프트웨어학과 원성현 교수 2

• 그래프(graph)의 역사 • 1736년, 스위스의 수학자 오일러가 창시자 • Königsberg(러시아의 도시 Kaliningrad의 옛 이름)에 있는 2개의 섬을 잇는 7개의 다리를 딱 한번씩만 건너는 방법을 찾기 위하여 마을 사람들이 오일러에게 오면서부터 그래프라는 개념이 등장함 • 후에 이 문제는 ‘한붓그리기’라는 이름으로 수학적으로 모델링됨

• 한붓그리기는 그래프를 구성하는 모든 정점(vertex)마다 연결선(edge)를 세어 보고, 모든 정점이 짝수 개의 연결선을 갖거나 만일 홀수 개 갖는 정점이 2개 있다면 모든 연결선을 단 한번만 지나서 모든 정점과 연결선을 방문할 수 있다고 판단함

1. 그래프의 기본 개념

그래프

1

3 2

4

5

1

3 2

4

5

모든 정점이 짝수개의 연결선 보유 2개의 정점이 홀수개의 연결선 보유

시작 또는 종료

시작 또는 종료

모든 정점에서 시작 및 종료

Page 3: 그래프 - KOCWelearning.kocw.net/KOCW/document/2016/cup/weonsumghyun/7.pdf · • 다익스트라 알고리즘(Dijkstra algorithm) • 네덜란드의 천재 과학자 다익스트라가

소프트웨어학과 원성현 교수 3

1. 그래프의 기본 개념

B

A

C

D

a b

c d

e

f

g

Kneiphof

Königsberg

Pregel River

a b

c d e

f

g

A

B

C

D 정점의 연결선이 짝수 개인 경우를 닫힌 한붓그리기 또는 오일러 그래프라고 함

Page 4: 그래프 - KOCWelearning.kocw.net/KOCW/document/2016/cup/weonsumghyun/7.pdf · • 다익스트라 알고리즘(Dijkstra algorithm) • 네덜란드의 천재 과학자 다익스트라가

소프트웨어학과 원성현 교수 4

1. 그래프의 기본 개념

• 그래프의 정의 • 그래프 G는 유한 개의 정점의 집합 V와 정점들을 잇는 연결선(간선이라고도 함) E의 집합으로 표현 • G=(V, E) • V={v1, v2, …, vn}, E={(v1,v2), (v1,v3), …, (v1,vn)}

• 그래프의 응용 분야 • 일상생활에서의 예

• 지하철 노선 • 전국의 고속도로망

• 컴퓨터 하드웨어적 응용 • 통신 네트워크 • 논리회로망 또는 전기회로망의 설계 및 분석

• 컴퓨터 소프트웨어적 응용 • 자동차 네비게이션 시스템 • 항공운항정보시스템 • 도로정보시스템 • 학사사관리시스템(대학에서 선수과목 이수여부를 확인하는 시스템에 적용 가능)

Page 5: 그래프 - KOCWelearning.kocw.net/KOCW/document/2016/cup/weonsumghyun/7.pdf · • 다익스트라 알고리즘(Dijkstra algorithm) • 네덜란드의 천재 과학자 다익스트라가

소프트웨어학과 원성현 교수 5

1. 그래프의 기본 개념

그래프의 예 : 동경 지하철 노선도

Page 6: 그래프 - KOCWelearning.kocw.net/KOCW/document/2016/cup/weonsumghyun/7.pdf · • 다익스트라 알고리즘(Dijkstra algorithm) • 네덜란드의 천재 과학자 다익스트라가

소프트웨어학과 원성현 교수 6

1. 그래프의 기본 개념

• 그래프를 이해하는데 필요한 용어 • 방향 그래프(directed graph, digraph)

• 그래프 G의 정점을 잇는 연결선들이 방향이 있는 그래프 • 무방향 그래프(undirected graph, undigraph)

• 그래프 G의 정점을 잇는 연결선들이 방향이 없는 그래프. 일반적으로 그래프라고 하면 무방향 그래프를 말함

• 경로(path) • 모든 1≤i<k에 대해 연결선 (vi,vi+1)이 존재할 때 정점들의 나열 v1, v2, …, vk

• 사이클(cycle) • 경로의 특별한 형태로 v1= vk 즉, 시작 정점과 종료 정점이 동일한 경로

3

2 1

4

3

2 1

4

무방향 그래프 방향 그래프

Page 7: 그래프 - KOCWelearning.kocw.net/KOCW/document/2016/cup/weonsumghyun/7.pdf · • 다익스트라 알고리즘(Dijkstra algorithm) • 네덜란드의 천재 과학자 다익스트라가

소프트웨어학과 원성현 교수 7

1. 그래프의 기본 개념

• 선행자(predecessor)와 후속자(successor) • 방향 그래프에서 임의 정점에서 다른 임의의 정점을 연결하는 연결선이 있을 때 이것을 v→w로 표현한다면 v는 w의 선행자, w는 v의 후속자라고 말함

• 트리(tree) • 트리는 사이클이 존재하지 않으며, 루트(root)라고 불리는 특별한 정점이 존재하여 루트로부터 모든 연결선이 출발하는 그래프의 특수한 형태임

3 2 1 4

방향 그래프

(1, 2), (2, 3), (3, 4), (1, 3), (2, 4), (1, 4)

선행자

후속자

A

B C

D E F

G H 트리

Page 8: 그래프 - KOCWelearning.kocw.net/KOCW/document/2016/cup/weonsumghyun/7.pdf · • 다익스트라 알고리즘(Dijkstra algorithm) • 네덜란드의 천재 과학자 다익스트라가

소프트웨어학과 원성현 교수 8

• 단순 그래프(simple graph) • 모든 정점은 자기 자신으로의 연결선이 없으며, 동일한 정점과 정점 사이를 잇는 연결선이 많아야 하나 있는 그래프

• 멀티 그래프(multi graph) • 두 정점을 잇는 연결선이 2개 이상인 것이 포함된 그래프

• 인접(adjacent) • 두 정점 사이에 연결선이 있는 경우 연결선의 양쪽 끝에 있는 두 정점들은 상호 ‘인접한다’라고 말함

• 근접(incident) • 두 정점 사이를 잇는 연결선은 두 정점에 ‘근접한다’라고 말함

• 부분 그래프(subgraph) • 두 개의 그래프 G={V, E}와 G’={V’, E’}가 있을 때 V’⊆V, E’⊆E이면 G’는 G의 부분 그래프임 • 만일, V=V’이고, E’⊂E이면 G’은 G의 생성 부분 그래프(spanning subgraph)임

2. 그래프의 용어

그래프 용어

Page 9: 그래프 - KOCWelearning.kocw.net/KOCW/document/2016/cup/weonsumghyun/7.pdf · • 다익스트라 알고리즘(Dijkstra algorithm) • 네덜란드의 천재 과학자 다익스트라가

소프트웨어학과 원성현 교수 9

2. 그래프의 용어

3

2 1

4

단순 그래프

3

2 1

4

멀티 그래프

• 옆의 멀티 그래프의 정점 1의 차수 deg(1)은 4

• 정점 3의 차수는 deg(3)은 2

a

b

f

g

c

d

h

e

a

b

f

g

c

d

h

e 그래프 G 그래프 G’

• 그래프 G’는 G의 부분 그래프이자 생성 부분 그래프

Page 10: 그래프 - KOCWelearning.kocw.net/KOCW/document/2016/cup/weonsumghyun/7.pdf · • 다익스트라 알고리즘(Dijkstra algorithm) • 네덜란드의 천재 과학자 다익스트라가

소프트웨어학과 원성현 교수 10

• 단순 경로(simple path) • 경로가 같은 연결선을 두 번 이상 포함하지 않는 경로

• 기본 경로(elementary path) • 어떤 정점들도 두 번 만나지 않는 경로

• 단순 사이클(simple cycle) • 같은 연결선을 반복해서 방문하지 않는 사이클

• 기본 사이클(elementary cycle) • 시작 정점을 제외한 어떤 정점도 반복해서 방문하지 않는 사이클

• 연결 그래프(connected graph) • 그래프의 모든 정점들이 하나 이상의 연결선으로 이어져 있는 그래프

• 강한 연결 그래프(strongly connected graph) • 그래프의 임의의 정점 a, b에 대하여 a에서 b로의 연결선과 b에서 a로의 연결선이 동시에 존재하는 그래프를 말하고, 방향 그래프에서만 유효함

• 연결 요소(connectivity component) • 그래프를 구성하는 연결된 요소

2. 그래프의 용어

Page 11: 그래프 - KOCWelearning.kocw.net/KOCW/document/2016/cup/weonsumghyun/7.pdf · • 다익스트라 알고리즘(Dijkstra algorithm) • 네덜란드의 천재 과학자 다익스트라가

소프트웨어학과 원성현 교수 11

2. 그래프의 용어

3

2 1

4

1-2-4-3 단순 경로이자 기본 경로

3

2 1

4

1-2-4-1 단순 사이클이자 기본 사이클

a

b

f

g

c

d

h

e

a

b

f

g

c

d

h

e

연결 그래프

2개의 연결 요소로 구성

3

2 1

4

강한 연결 그래프

Page 12: 그래프 - KOCWelearning.kocw.net/KOCW/document/2016/cup/weonsumghyun/7.pdf · • 다익스트라 알고리즘(Dijkstra algorithm) • 네덜란드의 천재 과학자 다익스트라가

소프트웨어학과 원성현 교수 12

• 차수(degree) • 무방향 그래프에서 임의의 정점 v에 인접한 연결선의 개수(deg(v))

• 진입 차수와 진출 차수(in degree & out degree) • 진입 차수는 방향 그래프에서 임의의 정점으로 진입하는 차수를 말하고, 진출 차수는 임의의 정점으로부터 진출하는 차수를 말함

• 완전 그래프(complete graph) • 그래프를 구성하는 모든 정점들이 상호 연결선을 갖는 그래프

• 정규 그래프(regular graph) • 그래프를 구성하는 모든 정점들의 차수가 동일한 그래프 • 차수가 n이면 n차 정규 그래프라고 말함

2. 그래프의 용어

3

2 1

4

정점 4의 진입 차수는 1, 진출 차수는 3

3

2 1

4

정점 2의 차수는 2

3

2 1

4

완전 그래프이자 3차 정규 그래프

Page 13: 그래프 - KOCWelearning.kocw.net/KOCW/document/2016/cup/weonsumghyun/7.pdf · • 다익스트라 알고리즘(Dijkstra algorithm) • 네덜란드의 천재 과학자 다익스트라가

소프트웨어학과 원성현 교수 13

• 그래프를 그림 이외의 방법으로 표현해야 하는 이유 • 그래프는 일상적으로는 그림 형태로 표현되기 때문에 이해는 쉽지만 프로그램은 이해할 수 없음 • 그래프 뿐 아니라 모든 수학적 모델은 프로그램이 이해할 수 있는 형태로 변환되어야 함

• 인접 행렬(adjacency matrix) • 그래프 G를 구성하는 모든 정점을 행과 열로 갖고, 정점과 정점 사이에 연결선이 있는 경우는 1, 없는 경우는 0을 행렬의 값으로 갖도록 하는 방법

3. 그래프의 표현 방법

그래프의 표현

3

2 1

4

그래프 G

0 1 1 1

1 0 0 1

1 0 0 1

1 1 1 0

[1]

[2]

[3]

[4]

[1] [2] [3] [4]

그래프 G의 인접 행렬

Page 14: 그래프 - KOCWelearning.kocw.net/KOCW/document/2016/cup/weonsumghyun/7.pdf · • 다익스트라 알고리즘(Dijkstra algorithm) • 네덜란드의 천재 과학자 다익스트라가

소프트웨어학과 원성현 교수 14

• 인접 리스트(adjacency list) • 그래프 G를 구성하는 모든 정점에 대해 헤드 포인터를 부여하고, 연결선이 있는 모든 정점을 헤드 포인터로부터 연결시켜 표현하는 방법

3. 그래프의 표현 방법

3

2 1

4

그래프 G

1

2

3

4

2 3 4 NULL

1 4 NULL

1 4 NULL

1 2 3 NULL

그래프 G의 인접 리스트

• 연습 문제 • V={a, b, c, d, e}이고, E={(a,a), (a,b), (a,c), (b,d), (c,a), (c,b), (c,d), (d,a), (d,e), (e,a), (e,b), (e,d)}인 그래프 G에 대하여 인접 행렬과 인접 리스트 방법으로 표현하라.

Page 15: 그래프 - KOCWelearning.kocw.net/KOCW/document/2016/cup/weonsumghyun/7.pdf · • 다익스트라 알고리즘(Dijkstra algorithm) • 네덜란드의 천재 과학자 다익스트라가

소프트웨어학과 원성현 교수 15

• 오일러 경로(Eulerian path) • 그래프에서 각 연결선을 단 한 차례씩만 통과하는 경로

• 오일러 순회(Eulerian circuit) • 그래프에서 정점은 여러 차례 지날 수 있지만, 각 연결선은 단 한 차례씩만 통과하여 다시 출발 정점으로 돌아오는 순회

4. 특수 형태의 그래프

오일러 경로와 순회

a

b c

d e

그래프 G의 오일러 경로

1

2

3 4

5

6

7 8

• 오일러 경로가 성립하기 위해서는 모든 정점의 차수가 짝수이거나 차수가 홀수인 정점이 2개인 조건을 만족해야 함

출발 도착

Page 16: 그래프 - KOCWelearning.kocw.net/KOCW/document/2016/cup/weonsumghyun/7.pdf · • 다익스트라 알고리즘(Dijkstra algorithm) • 네덜란드의 천재 과학자 다익스트라가

소프트웨어학과 원성현 교수 16

• 해밀턴 경로(Hamiltonian path) • 그래프에서 모든 정점을 단 한 차례씩만 통과하지만 시작 정점으로 돌아오지 않는 경로

• 해밀턴 순회(Hamiltonian circuit) • 그래프에서 모든 정점을 단 한 차례씩만 통과하여 다시 출발 정점으로 돌아오는 순회

4. 특수 형태의 그래프

해밀턴 경로와 순회

해밀턴 순회의 예

e

b

d a

c

f

해밀턴 경로의 예 : a-b-e-f-d-c

출발 및 도착 출발

도착

Page 17: 그래프 - KOCWelearning.kocw.net/KOCW/document/2016/cup/weonsumghyun/7.pdf · • 다익스트라 알고리즘(Dijkstra algorithm) • 네덜란드의 천재 과학자 다익스트라가

소프트웨어학과 원성현 교수 17

• 가중 그래프(weighted graph) • 그래프의 연결선에 값(가중치)이 할당된 그래프

• 동형 그래프(isomorphic graph) • 그래프의 생김새가 다르더라도 동일한 정점의 집합과 연결선의 집합으로 구성된 그래프

• 평면 그래프(planar graph) • 정점과 정점을 잇는 모든 연결선이 평면상에서 교차하지 않는 그래프

4. 특수 형태의 그래프

그 밖의 그래프

a

b c

d e

가중 그래프 10

20

30 40

50

60

70 80

3

2 1

4

3

2 1

4

상호 동형 그래프

평면 그래프

Page 18: 그래프 - KOCWelearning.kocw.net/KOCW/document/2016/cup/weonsumghyun/7.pdf · • 다익스트라 알고리즘(Dijkstra algorithm) • 네덜란드의 천재 과학자 다익스트라가

소프트웨어학과 원성현 교수 18

• 이분 그래프(bipartite graph) • 그래프 G=(V,E)에서 정점의 집합 V가 V=V1∪V2, V1∩V2=Ø을 만족하는 두 집합 V1과 V2로 분리되고, 그래프의 모든 연결선이 V1의 한 정점에서 V2의 한 정점으로 연결되는 그래프

• 완전 이분 그래프(complete bipartite graph) • 그래프 G=(V,E)에서 V1의 모든 정점과 V2의 모든 정점 사이에 연결선이 있는 그래프로 |V1|=m, |V1|=n일 때 Km,n으로 표기함

• 방향 비사이클 그래프(DAG, Directed Acyclic Graph) • 사이클이 없는 방향 그래프

4. 특수 형태의 그래프

a

b

c

d

e

이분 그래프

a

b

c

d

e

K2,3 완전 이분 그래프

a

b c

d

DAG

e

Page 19: 그래프 - KOCWelearning.kocw.net/KOCW/document/2016/cup/weonsumghyun/7.pdf · • 다익스트라 알고리즘(Dijkstra algorithm) • 네덜란드의 천재 과학자 다익스트라가

소프트웨어학과 원성현 교수 19

• 최단 경로(shortest path) • 그래프를 구성하는 정점을 ‘도시’, 정점과 정점을 잇는 연결선을 두 도시 간의 ‘도로’, 연결선 위에 부여된 값을 두 도시간의 이동 ‘거리’라고 가정했을 때, 한 도시에서 다른 한 도시로 이동하는데 가장 짧은 거리를 구하는 문제를 최단 경로 문제(shortest path problem)라고 말함

5. 그래프의 응용

최단 경로

1

2

3

4 5

6

7 8

샌프란시스코

로스앤젤레스

덴버

300

800

1000

1200

1500

1000 250

900

1000

1400

1700

시카고 보스턴

뉴욕

마이애미 뉴올리언즈

연결선에 거리가 반영된 방향 그래프

• 5(보스턴)에서 3(덴버)으로 가는 경로는 5(보스턴)-4(시카고)-3(덴버), 5(보스턴)-6(뉴욕)-4(시카고)-3(덴버)이고, 경유지는 한 개 더 많지만 5(보스턴)-6(뉴욕)-4(시카고)-3(덴버)가 최단 경로임

Page 20: 그래프 - KOCWelearning.kocw.net/KOCW/document/2016/cup/weonsumghyun/7.pdf · • 다익스트라 알고리즘(Dijkstra algorithm) • 네덜란드의 천재 과학자 다익스트라가

소프트웨어학과 원성현 교수 20

• 다익스트라 알고리즘(Dijkstra algorithm) • 네덜란드의 천재 과학자 다익스트라가 제안한 알고리즘 • 출발 정점으로부터 거리가 최소인 정점들의 집합 S를 유지하면서 가장 짧은 거리를 갖는 정점 v를 차례로 S에 표시함으로써 최단 경로를 찾는 알고리즘 • 현재의 정점에서의 거리가 가장 짧은 정점을 찾는 것이 아니라 시작 정점으로부터의 토탈 가중치가 최소인 정점을 찾는다는 것이 가장 큰 특징임

5. 그래프의 응용

v0 v1

v2 v3

v4

v5

50

45

연결선에 거리가 반영된 방향 그래프

10

10 20 15

20

15

35

30

3

v0v2v3v1 45

v0v2 10

v0v2v3 25

v0v4 45

v0→v1

v0→v2

v0→v3

v0→v4

최단 경로 거리

V0에서 각 정점에 이르는 최단 경로

Page 21: 그래프 - KOCWelearning.kocw.net/KOCW/document/2016/cup/weonsumghyun/7.pdf · • 다익스트라 알고리즘(Dijkstra algorithm) • 네덜란드의 천재 과학자 다익스트라가

소프트웨어학과 원성현 교수 21

5. 그래프의 응용

1

2

4

5

3

50

100 10

20

60

30

10

단계 S w D[2] D[3] D[4] D[5]

0 {1} - 10 ∞ 30 100

1 {1,2} 2 10 60 30 100

2 {1,2,4} 4 10 50 30 90

3 {1,2,4,3} 3 10 50 30 60

4 {1,2,4,3,5} 5 10 50 30 60

다익스트라 알고리즘에 의한 최단 경로

시작 정점

void Dijkstra() { S={1}; V={2, 3, 4, …, n} for(i=2; i≤n; i++) D[i]=C[1,i]; for(i=1; i≤n-1; i++) { choose vertex in V-S such that D[w] is a minimum; add w to S; for(each vertex v in V-S) D[v]=min(D[v], D[w]+C[w,v]); } }

· 집합 S는 방문하는 정점의 집합으로 최초에는 시작 정점 하나부터 시작 · 집합 V는 방문해야 할 정점의 집합으로 모든 단계가 끝나고 나면 공집합이 되어야 함 · D[i]는 시작 정점에서 현재의 정점에 이르는 가장 짧은 거리 · C[i,j]는 정점 i에서 j까지의 거리이고, i에서 j에 이르는 경로가 없으면 ∞로 간주함

Page 22: 그래프 - KOCWelearning.kocw.net/KOCW/document/2016/cup/weonsumghyun/7.pdf · • 다익스트라 알고리즘(Dijkstra algorithm) • 네덜란드의 천재 과학자 다익스트라가

소프트웨어학과 원성현 교수 22

• 해밀턴 순회의 응용, 순회 판매원 문제(travelling salesperson problem) • 해밀턴 순회란 그래프에서 모든 정점을 단 한 차례씩만 통과하여 다시 출발 정점으로 돌아오는 순회라고 앞서 설명했고, 어떤 회사의 영업사원이 회사를 출발하여 모든 거래처를 한번씩 방문해서 업무를 처리하고 회사로 돌아오는 문제와 흡사하다고 하여 순회 판매원 문제라고 이름붙힘

5. 그래프의 응용

B A

C D

5

6 7 10

3

8

A

5

C

6

A

5

C

6

A

5

D 3

C

6

A 5

D 3

10

출발

B B B

B

도착

Page 23: 그래프 - KOCWelearning.kocw.net/KOCW/document/2016/cup/weonsumghyun/7.pdf · • 다익스트라 알고리즘(Dijkstra algorithm) • 네덜란드의 천재 과학자 다익스트라가

소프트웨어학과 원성현 교수 23

• 깊이 우선 탐색(DFS, Depth First Search) • 시작 정점 v가 정해지면 정점 v를 먼저 방문하고, 다음 순서로는 정점 v에 인접한 정점 중에서 방문하지 않은 정점을 방문함 • 방문하지 않은 정점이 없던가, 더 이상 방문할 수 없는 상황이 발생하면 이전에 방문했던 정점으로 돌아와서 새롭게 방문할 정점을 모색함 • 모든 정점을 방문하게 되면 자연스럽게 시작 정점으로 돌아오게 되고, 방문을 종료함

6. 그래프의 탐색

깊이 우선 탐색

· visited는 정점들이 저장된 배열이고, 모두 FALSE로 초기화한 후 방문할 때마다 TRUE로 값을 변경함

void DFS(int v) { int w; visited[v]=TRUE; for(each vertex w adjacent to v) if(!visited[w]) DFS(w); }

1

2 3

4 5 6 7

8

1

2 3

4 5 6 7

8

Page 24: 그래프 - KOCWelearning.kocw.net/KOCW/document/2016/cup/weonsumghyun/7.pdf · • 다익스트라 알고리즘(Dijkstra algorithm) • 네덜란드의 천재 과학자 다익스트라가

소프트웨어학과 원성현 교수 24

• 너비 우선 탐색(BFS, Breadth First Search) • 시작 정점 v가 정해지면 정점 v를 먼저 방문하고, 다음 순서로는 정점 v에 인접한 정점 중 방문하지 않은 모든 정점을 방문함 • v에 인접한 정점 중 더 이상 방문할 정점이 없으면 v의 인접 정점 중 가장 먼저 방문했던 정점에 인접한 정점을 모두 방문함 • 위의 작업을 계속 반복하고, 더 이상 방문할 정점이 없으면 방문을 종료함

6. 그래프의 탐색

너비 우선 탐색

1

2 3

4 5 6 7

8

1

2 3

4 5 6 7

8

Page 25: 그래프 - KOCWelearning.kocw.net/KOCW/document/2016/cup/weonsumghyun/7.pdf · • 다익스트라 알고리즘(Dijkstra algorithm) • 네덜란드의 천재 과학자 다익스트라가

소프트웨어학과 원성현 교수 25

• 색칠 문제(coloring problem) • 그래프 G에 대해 인접한 두 영역이 같은 색이 안되도록 각 정점에 색을 칠하는 문제 • 그래프 G를 색칠하는데 필요한 최소한의 색의 수를 x(G)로 표현하고, G의 색 수(chromatic number)라고 말함

7. 그래프와 색칠 문제

색칠 문제

A B

C

D E

빨강색 검정색

초록색

파랑색 갈색

빨강색

빨강색 파랑색

검정색

초록색

A

B

C

D

E

5색 표현 4색 표현 각 지역을 정점, 인접해 있어서 직접 이동할 수 있는 지역은 연결선으로 표현

Page 26: 그래프 - KOCWelearning.kocw.net/KOCW/document/2016/cup/weonsumghyun/7.pdf · • 다익스트라 알고리즘(Dijkstra algorithm) • 네덜란드의 천재 과학자 다익스트라가

소프트웨어학과 원성현 교수 26

• 4-색 문제(4-coloring problem) • 모든 평면 그래프는 4개의 색만으로 색칠이 가능함 • 현재 수학적으로 증명은 안되어 있어서 수학계에서는 공식 인정을 안하고 있지만 불가능한 경우를 찾을 수 없어서 컴퓨터계에서는 이미 인정하고 있는 문제임 • 사용 예

• 4색 세계지도 • 서로 반응하는 화학물질에 대한 색상을 통한 사고 예방 • 방송 주파수가 동일함으로 인해 발생하는 난시청 문제 해결 • 애완동물 중 상극인 관계의 애완동물 구분 관리

7. 그래프와 색칠 문제