200 likes | 736 Views
알고리즘 CHAPTER 9. 그래프 알고리즘. 천주희 wngml1205@kunsan.ac.kr 군산대학교 통계컴퓨터과학과 정보과학기술 연구실 2012.11.6. 목차. 그래 프 그래프 표현 너비우선탐색과 깊이우선탐색 최소신장트리 위상정 렬. 철수. 철수. 준호. 준호. 영희. 영희. 승우. 승우. 동건. 동건. 재상. 재상. 그래프. 6. 9. 6. 9. 8. 8. 5. 5. 5. 5. 7. 7. 2. 9. 6. 9. 1. 1. 5. 5.
E N D
알고리즘CHAPTER 9. 그래프 알고리즘 천주희 wngml1205@kunsan.ac.kr • 군산대학교 통계컴퓨터과학과 정보과학기술 연구실 2012.11.6
목차 그래프 그래프 표현 너비우선탐색과 깊이우선탐색 최소신장트리 위상정렬 IST (Information Sciences & Technology) Laboratory
철수 철수 준호 준호 영희 영희 승우 승우 동건 동건 재상 재상 그래프 6 9 6 9 8 8 5 5 5 5 7 7 2 9 6 9 1 1 5 5 [유향 그래프] [무향 그래프] IST (Information Sciences & Technology) Laboratory • 개념 • 현상이나 사물을 정점(V)과 간선(E)으로 표현 • G = (V, E)
철수 철수 준호 준호 영희 영희 승우 승우 재상 동건 동건 재상 그래프의표현 (1/2) 장점 : 이해하기 쉽고 간선의 존재 여부를 즉시 알 수 있음 단점 : nxn행렬이 필요하므로 n제곱에 비례하는 공간 필요 간선의 밀도가 높은 그래프에 적합 6 5 4 1 1 2 3 1 6 1 2 3 4 5 6 8 9 1 5 8 1 2 6 6 2 4 9 5 5 7 2 3 5 6 2 4 7 6 3 9 2 4 1 3 5 9 5 4 5 1 5 5 6 3 5 6 가중치 있는 유향 그래프의 예 가중치 있는 무향 그래프의 예 인접 행렬을 이용한 방법 IST (Information Sciences & Technology) Laboratory
철수 1 4 6 2 준호 영희 승우 3 5 동건 재상 그래프의표현 (2/2) 장점 : 행렬 표현에 비해 공간 낭비가 없음 모든 가능한 정점 쌍에 비해 간선 수가 적을 때 유용 단점 : 리스트를 차례로 훑어야 하므로 인접행렬 표현보다 많은 시간 소요 정점 번호 | 가중치 | 다음 정점 포인터 정점 번호 | 다음 정점의 포인터 1 • 9 2 3 4 무향 그래프의 예 5 6 IST (Information Sciences & Technology) Laboratory 인접 리스트을 이용한 방법
깊이우선탐색과 너비우선탐색 BFS DFS IST (Information Sciences & Technology) Laboratory
너비우선탐색 (1/2) 2 (b) 1 (a) 3 1 4 (c) 2 5 1 3 6 4 (e) (d) 2 2 7 5 1 5 1 8 3 8 3 6 4 6 4 7 7 IST (Information Sciences & Technology) Laboratory BFS 수행 예
너비우선탐색 (2/2) • BFS(G, s) • { • for each v ∈ V –{s} • visited[v] ← NO; visited[s] ← YES; ▷ s: 시작 정점 enqueue(Q, s); ▷ Q: 큐 while (Q ≠ ∮ ) { u ← dequeue(Q); for eachv∈ L(u) ▷ L(u): 정점 u의 인접 리스트 if (visited[v] = NO) then visited[u] ← YES; enqueue(Q, v); } } } • 수행시간: Θ(|V|+|E|) BFS 알고리즘 IST (Information Sciences & Technology) Laboratory
깊이우선탐색(1/3) (b) 1 (a) 1 2 (c) 1 2 (e) (d) 3 1 1 4 4 5 2 2 3 3 IST (Information Sciences & Technology) Laboratory DFS 수행 예
깊이우선탐색(2/3) (f) (g) 7 1 1 4 4 6 6 5 5 2 2 3 3 (i) (h) 8 8 7 7 1 1 4 6 4 6 5 5 2 2 3 3 IST (Information Sciences & Technology) Laboratory DFS 수행 예
깊이우선탐색(3/3) DFS(G) { for each v ∈ V visited[v] ← NO; for each v ∈ V if (visited[v] = NO) then aDFS(v); } aDFS (v) { visited[v] ← YES; for each x ∈ L(v) ▷ L(v) : 정점 v의 인접 리스트 if (visited[x] = NO) then aDFS(x); } • 수행시간: Θ(|V|+|E|) DFS 알고리즘 IST (Information Sciences & Technology) Laboratory
최소신장트리 프림 알고리즘 크루스칼 알고리즘 • 개념 • 간선들의 가중치를 갖는 그래프에서 간선 가중치의 합이 가장 작은 트리 • n 개의 정점을 가진 트리는 항상 n-1개의 간선을 가짐 • 싸이클을 만들지 않는 범위 내 IST (Information Sciences & Technology) Laboratory
11 프림 알고리즘 (1/2) (b) (a) 8 8 S ∞ 8 10 10 r ∞ 0 ∞ 0 9 5 9 5 9 ∞ 11 11 12 13 12 13 ∞ ∞ 11 ∞ 7 8 7 8 ∞ ∞ (c) (d) 8 8 10 8 10 S 0 10 5 0 9 5 9 9 5 11 12 13 9 12 13 ∞ 11 12 11 7 8 ∞ 7 8 ∞ IST (Information Sciences & Technology) Laboratory • 프림 알고리즘 작동
프림 알고리즘 (2/2) Prim(G, r) { Q ← V; • for each u ∈ Q • d[u]← ∞ • d[r] ← 0; • while (Q ≠∮) { • u ← deleteMin(Q,d); • for each v ∈ L(u) • if(v∈ Q and w(u,v) < d[v]) then{ • d[v] ← w(u,v); • tree[v] ← u; } } } deleteMin(Q,d[]) { 집합 Q에서 d값이 가장 작은 정점 u를 리턴하고, u를 집합 Q에서 제거; } • 수행시간: O(E logV) • 프림 알고리즘 IST (Information Sciences & Technology) Laboratory
크루스칼 알고리즘 (1/2) • 크루스칼 알고리즘 작동 IST (Information Sciences & Technology) Laboratory
크루스칼 알고리즘 (2/2) Kruskal (G, r) { T ← Ф; ▷ T : 신장트리 단 하나의 정점만으로 이루어진 n 개의 집합을 초기화; 모든 간선을 가중치가 작은 순으로 정렬; while (T의 간선수 < n-1) { 최소비용 간선 (u, v)를 제거; 정점 u와 정점 v가 서로 다른 집합에 속하면 { • T ← T∪{u, v)}; 두 집합을 하나로 합침; } } } • 수행시간: O(|E | log |V |) • 크루스칼 알고리즘 IST (Information Sciences & Technology) Laboratory
위상정렬 (1/3) 진입차수 진출차수 • 개념 • 조건 • 사이클이 없는 유향 그래프 G = (V, E) • 간선 (i,j)가 존재하면 정렬 결과에서 정점 i는 반드시 정점 j보다 앞에 나열되야 함 IST (Information Sciences & Technology) Laboratory
위상정렬 (2/3) topologicalSort1(G, v) { for← 1 ton { 진입간선이 없는 정점u를 선택; A[i] ← u; 정점u와, u의 진출간선을 모두 제거; } ▷ 이 시점에 배열A[1…n]에는 정점들이위상 정렬되어 있음 } • 수행시간: Θ(|V|+|E|) • 위상정렬 알고리즘 1 IST (Information Sciences & Technology) Laboratory
위상정렬 (3/3) topologicalSort2(G) { for eachv∈V visited[v] ← NO; for eachv∈V▷ 정점의 순서는 무관 if(visited[v] = NO) then DFS-TS(v) ; - } DFS-TS(v) { visited[v] ← YES; for each x∈L(v)▷ L(v): v의 인접 리스트 if (visited[x] = NO) then DFS-TS(x) ; 연결 리스트 R 의 맨 앞에 정점 v를 삽입; } • 수행시간: Θ(|V|+|E|) • 위상정렬 알고리즘 2 IST (Information Sciences & Technology) Laboratory
감사합니다천주희wngml1205@kunsan.ac.kr IST (Information Sciences & Technology) Laboratory