SlideShare a Scribd company logo
6장 그래프 알고리즘 공봉식
6.1 방향성 그래프와 이진관계: Warshall알고리즘 6.2 Euler 경로와 Hamilton 회로 6.3 최단 경로와 최소 신장 트리 6.4 그래프 순회 알고리즘
병렬 아크가 없는 n개의 노드를 갖는 방향성 그래프 n x n 부울 행렬 1 2 0   1   1   0 0   0   0   0 0   0   1   0 1   1   1   0 3 4
병렬 아크가 없는 n개의 노드를 갖는 방향성 그래프 n 개의 원소를 갖는 집합에 대한 이진 관계 n x n 부울 행렬 {(1, 2), (1, 3), (3, 3), (4, 1), (4, 2), (4, 3)} 0   1   1   0 0   0   0   0 0   0   1   0 1   1   1   0 1 2 4 3 이거나 이거나 매 한가지다
정의 : 도달가능성 노드 방향성 그래프에서 노드에서 까지 경로(path)가존재하는 경우 는 로부터 도달가능(reachable)하다고 한다.  이면, 노드    에서    까지 길이가 m 인 경로가 존재한다.
2 0   1   0   0   0 0   0   1   0   0 0   0   1   0 0   0   0   0   0 1   0   1   0   0 3 1 A = 4 5 0   0   1   0   0 0   0   1   0 0   1   0   0   0 0   0   0   0   0 1   1   01   0 1   0   0   1   0 0   1   0   0   0 0   0   1   0   0 0   0   0   0   0 0   1   1   0   0   =   = 0   0   1   0   0 1   0   0   1   0 0   1   0   0   0 0   0   0   0   0 1   1   01   0 0   1   0   0   0 0   0   1   0   0 1   0   0   1   0 0   0   0   0   0 1   0   1   1   0   =   =
1   1   1   1   0 1   1   1   1   0 1   1   1   0 0   0   0   0   0 1   1   1   1   0 R = {(1,1), (1,2), (1,3), (1,4), (2,1), (2,2), (2,3), (2,4),  (3,1), (3,2), (3,3), (3,4), (5,1), (5,2), (5,3), (5,4)} 이 방법은           알고리즘이다.
알고리즘 Warshall Warshall(n X n Boolean matrix M) // Initially, M = adjacency matrix of a directed graph G with no parallel arcs for k = 0 to n – 1 do   for i = 1 to n do  	       for j = 1 to n do            M[i, j] = M[i, j] ∨ (M[i, k + 1] ∧ M[k + 1, j])       end for    end for end for // at termination, M = reachability matrix of G End Warshall
6.1 방향성 그래프와 이진관계: Warshall알고리즘 6.2 Euler 경로와 Hamilton 회로 6.3 최단 경로와 최소 신장 트리 6.4 그래프 순회 알고리즘
Euler 경로 그래프 G 에서 Euler 경로는 G 의 모든 아크들을 단 한 번만 방문하는 경로이다 그래프에서 홀수 노드에 대한 정리 어떠한 그래프에서든 홀수 노드의 수는 항상 짝수이다. Euler 경로에 대한 정리 연결된 그래프에서 Euler 경로가 존재하기 위한 필요 충분 조건은, 그 그래프에 홀수 노드가 하나도 없거나 혹은 두 개만 있어야 한다. 홀수 노드가 없는 경우에는, 임의의 어떤 노드에서 시작하여 그 노드에서 끝날 것이고, 홀수 노드가 두 개 있는 경우에는, 하나의 홀수 노드에서 시작하여 또 다른 하나의 홀수 노드로 끝나야 한다.
Hamilton 회로 문제 그래프의 모든 노드를 한 번씩만 방문하는 사이클 경로이다 효과적인 알고리즘이 없다. 그냥 시행착오 방법을 사용해야 한다 N > 2 인 완전 그래프는 Hamilton 회로가 존재한다
6.1 방향성 그래프와 이진관계: Warshall알고리즘 6.2 Euler 경로와 Hamilton 회로 6.3 최단 경로와 최소 신장 트리 6.4 그래프 순회 알고리즘
x	1	2	3	4	y ∞	3	8	4	∞	10 3		∞	∞	6	∞	∞ 8		∞	∞	∞	7	∞ 4		6	∞	∞	1	3 ∞		∞	7	1	∞	1 10		∞	∞	3	1	∞ x x 1 2 3 4 y 8 3 2 1 4 10 6 7 1 x	1	2	3	4	y 3 4 3 1 d	0	3	8	4	∞	10  s	-	x	xxxx y p = 1 IN = {x, 1} d[2] = min(8, 3 + A[1,2]) = min(8, ∞) = 8 d[3] = min(4, 3 + A[1,3]) = min(4, 9) = 4 d[4] = min(∞, 3 + A[1,4]) = min(∞,∞) = ∞ d[y] = min(10, 3+ A[1,y]) = min(10, ∞) = 10
p = 3 (8, 4, ∞, 10 중 가장 작은 3번 노드) IN = {x, 1, 3} d[2] = min(8, 4 + A[3,2]) = min(8, 4 + ∞) = 8 d[4] = min(∞, 4 + A[3,4]) = min(8, 4 + 1) = 5 (a change, so update s[4] to 3 d[y] = min(10, 4 + A[3,y]) = min(10, 4 + 3) = 7 (a change, so update s[y] to 3 x	1	2	3	4	y d	0	3	8	4	5	7  s	-	x	xx	3	3 p = 4 (d-value = 5) IN = {x, 1, 3, 4} d[2] = min(8, 5 + 7) = 8 d[y] = min(7, 5+ 1) = 6 (a change, update s[y] x	1	2	3	4	y d	0	3	8	4	5	6  s	-	x	xx	3	4
p = y IN = {x, 1, 3, 4, y} d[2] = min(8, 6 + ∞) = 8 x	1	2	3	4	y d	0	3	8	4	5	6  s	-	x	xx	3	4 최종 경로: x – 3 – 4 – y
Open: priorityqueue of searchnode Closed : List of searchnode AStarSearch( location StartLoc, location GoalLoc, agenttype Agent) { 	clear Open and Closed 	// 시작 노드를 초기화 한다. StartNode.Loc = StartLoc StartNode.CostFromStart = 0 StartNode.CostToGoal = PathCostEstimate( StartLoc, GoalLoc, Agent ) StartNode.Parent = null 	push StartNode on Open 	// 성공 또는 실패에 이를 때까지 목록을 처리한다. 	while Open is not empty { 		pop Node from Open // 노드가 최저의 TotalCost를 가지는 경우 // 목표에 도달했으면 성공으로 끝낸다 if (Node is a goal node) { 			construct a path backward from Node to StartLoc 			return Success 		} else { 			for each successor NewNode of Node { NewCost = Node.CostFromStart + TraverseCost( Node, NewNode, Agent ) 			// 이 노드가 존재하며 더 나은 결과가 아니라면 무시한다. 			if (NewNode is in Open or Closed) and (NewNode.CostFromStart <= NewCost) { 				continue 			} else {	// 새로운, 즉 더 나은 정보를 저장한다 NewNode.Parent= Node NewNode.CostFromStart = NewCost NewNode.CostToGoal = PathCostEstimate( NewNode.Loc, GoalLoc, Agent ) NewNode.TotalCost = NewNode.CostFromStart + NewNode.CostToGoal
if (NewNode is in Open or Closed) and (NewNode.CostFromStart <= NewCost) { 				continue 			} else {	// 새로운, 즉 더 나은 정보를 저장한다 NewNode.Parent= Node NewNode.CostFromStart = NewCost NewNode.CostToGoal = PathCostEstimate( NewNode.Loc, GoalLoc, Agent ) NewNode.TotalCost = NewNode.CostFromStart + NewNode.CostToGoal 				if (NewNode is in Closed) { 					remove NewNode from Closed 				} 				if (NewNode is in Open) { 					adjust NewNode's location in Open 				} else { 					push NewNode onto Open 				} 			} // 이 노드에 대한 처리가 끝났다 } 		push Node onto Closed 	} 	return failure		// 목표에 도달하기 전에 Open이 빈 경우는 실패 }
x 1 3 4 y x Open = {1(3), 3(4), 2(8), y(10)} Open = {3(4), 2(8), y(10)} Open = {4(5), 2(8), y(10)} Open = {y(6)} 8 3 2 1 4 10 6 7 1 3 4 3 1 y
정의: 신장 트리 연결된 그래프의 신장 트리(spanning tree) 는 노드 및 아크가 그래프의 일부와 일치하는 비루트트리이다. 최소 신장 트리 최소한의 비중을 가지고 모든 노드를 연결하는 신장 트리 Prim 알고리즘 초기의 임의의 노드를IN 에 넣고, IN 에 속하지 않는 모든 노드 z 에 대해서 임의의 노드와z 사이의 최단 거리를 갖는 노드를IN에 추가한다. 이런식으로 반복해서 그래프의 모든 노드가IN 에 추가되면 알고리즘은 종료한다.
x 8 1 노드선택시IN 에 1을 넣고, 1에 인접한 x 와 3 노드 중 최소 거리를 갖는 x 를 IN 에 추가한다. 다시 1 과 x 에 인접한 2, 3, 4, y 노드 중 거리가 가장 짧은 3을 넣는다 이런식으로 반복하면 {1, x, 3, 4, y, 2} 가 선택된다 3 2 1 4 10 6 7 1 3 4 3 1 y
6.1 방향성 그래프와 이진관계: Warshall알고리즘 6.2 Euler 경로와 Hamilton 회로 6.3 최단 경로와 최소 신장 트리 6.4 그래프 순회 알고리즘
깊이 우선 탐색 DepthFirst(graph G; node a) 	mark a visited write(a) for each node n adjacent to a do 	if n not visited then DepthFirst(G, n) 	end if end for end DepthFirst
너비 우선 탐색 BreadthFirst(graph G; node a) Queue of nodes Q 	initialize Q to be empty mark a visited write(a) enqueue(a, Q) while Q is not empty do for each node n adjacent to front(Q) do if n not visited then 			mark n visited 			write(n) enqueue(n, Q) end if end for dequeue(Q) end while endBreadthFirst
깊이 우선 탐색과 너비 우선 탐색을 이용하면 Warshall알고리즘을 이용하지 않고도 도달 가능성을 계산할 수 있다. 이것은 O(n * max(n, m) (m: 아크 수) 만약 아크수가노드수와같아면          이다. Warshall알고리즘은         이기 때문에 더 빠르다. 방향성이 있는 그래프에서는 깊이 우선 탐색을 사용해 위상 정렬을 구할 수 있다. 6 5 1 7 2 3 4 깊이 우선 탐색 결과를 역순하면 선행자를 구할 수 있다.

More Related Content

What's hot

Quaternion and Rotation
Quaternion and RotationQuaternion and Rotation
Quaternion and Rotation
Young-Min kang
 
HI-ARC Number Theory
HI-ARC Number TheoryHI-ARC Number Theory
HI-ARC Number Theory
Jae-yeol Lee
 
마칭 큐브 알고리즘 - ZP 2019 데캠
마칭 큐브 알고리즘 - ZP 2019 데캠마칭 큐브 알고리즘 - ZP 2019 데캠
마칭 큐브 알고리즘 - ZP 2019 데캠
동환 김
 
approximation algorithm
approximation algorithmapproximation algorithm
approximation algorithm
Gyeongwook Choi
 
[기초수학] 미분 적분학
[기초수학] 미분 적분학[기초수학] 미분 적분학
[기초수학] 미분 적분학KyeongWon Koo
 
2009 PPT 발표 대회 - P.S.R.
2009 PPT 발표 대회 - P.S.R.2009 PPT 발표 대회 - P.S.R.
2009 PPT 발표 대회 - P.S.R.Kyunghoon Kim
 
게임수학 강의노트 1부
게임수학 강의노트 1부게임수학 강의노트 1부
게임수학 강의노트 1부
Young-Min kang
 
Eigenvalues of regular graphs
Eigenvalues of regular graphsEigenvalues of regular graphs
Eigenvalues of regular graphs
Jungkyu Lee
 
제4강 명제와 논리-정보
제4강 명제와 논리-정보제4강 명제와 논리-정보
제4강 명제와 논리-정보csungwoo
 
머신 러닝을 해보자 2장 (2022년 스터디)
머신 러닝을 해보자 2장 (2022년 스터디)머신 러닝을 해보자 2장 (2022년 스터디)
머신 러닝을 해보자 2장 (2022년 스터디)
ssusercdf17c
 
introduction to dynamic programming and linear programming
introduction to dynamic programming and linear programmingintroduction to dynamic programming and linear programming
introduction to dynamic programming and linear programming
Gyeongwook Choi
 
SAT Problem (2015.02.25)
SAT Problem (2015.02.25)SAT Problem (2015.02.25)
SAT Problem (2015.02.25)
Jaehyun Koo
 
Ray-triangle intersection
Ray-triangle intersectionRay-triangle intersection
Ray-triangle intersection
동환 김
 
IOI 2005 정원 분할 (2015.03.05)
IOI 2005 정원 분할 (2015.03.05)IOI 2005 정원 분할 (2015.03.05)
IOI 2005 정원 분할 (2015.03.05)
Jaehyun Koo
 
부울 대수와 컴퓨터 논리
부울 대수와 컴퓨터 논리부울 대수와 컴퓨터 논리
부울 대수와 컴퓨터 논리suitzero
 

What's hot (15)

Quaternion and Rotation
Quaternion and RotationQuaternion and Rotation
Quaternion and Rotation
 
HI-ARC Number Theory
HI-ARC Number TheoryHI-ARC Number Theory
HI-ARC Number Theory
 
마칭 큐브 알고리즘 - ZP 2019 데캠
마칭 큐브 알고리즘 - ZP 2019 데캠마칭 큐브 알고리즘 - ZP 2019 데캠
마칭 큐브 알고리즘 - ZP 2019 데캠
 
approximation algorithm
approximation algorithmapproximation algorithm
approximation algorithm
 
[기초수학] 미분 적분학
[기초수학] 미분 적분학[기초수학] 미분 적분학
[기초수학] 미분 적분학
 
2009 PPT 발표 대회 - P.S.R.
2009 PPT 발표 대회 - P.S.R.2009 PPT 발표 대회 - P.S.R.
2009 PPT 발표 대회 - P.S.R.
 
게임수학 강의노트 1부
게임수학 강의노트 1부게임수학 강의노트 1부
게임수학 강의노트 1부
 
Eigenvalues of regular graphs
Eigenvalues of regular graphsEigenvalues of regular graphs
Eigenvalues of regular graphs
 
제4강 명제와 논리-정보
제4강 명제와 논리-정보제4강 명제와 논리-정보
제4강 명제와 논리-정보
 
머신 러닝을 해보자 2장 (2022년 스터디)
머신 러닝을 해보자 2장 (2022년 스터디)머신 러닝을 해보자 2장 (2022년 스터디)
머신 러닝을 해보자 2장 (2022년 스터디)
 
introduction to dynamic programming and linear programming
introduction to dynamic programming and linear programmingintroduction to dynamic programming and linear programming
introduction to dynamic programming and linear programming
 
SAT Problem (2015.02.25)
SAT Problem (2015.02.25)SAT Problem (2015.02.25)
SAT Problem (2015.02.25)
 
Ray-triangle intersection
Ray-triangle intersectionRay-triangle intersection
Ray-triangle intersection
 
IOI 2005 정원 분할 (2015.03.05)
IOI 2005 정원 분할 (2015.03.05)IOI 2005 정원 분할 (2015.03.05)
IOI 2005 정원 분할 (2015.03.05)
 
부울 대수와 컴퓨터 논리
부울 대수와 컴퓨터 논리부울 대수와 컴퓨터 논리
부울 대수와 컴퓨터 논리
 

Similar to 6장 그래프 알고리즘

선형대수 06. 영벡터공간과 해집합
선형대수 06. 영벡터공간과 해집합선형대수 06. 영벡터공간과 해집합
선형대수 06. 영벡터공간과 해집합
AHRA CHO
 
선형대수 08. 선형 변환 (Linear Transformation)
선형대수 08. 선형 변환 (Linear Transformation)선형대수 08. 선형 변환 (Linear Transformation)
선형대수 08. 선형 변환 (Linear Transformation)
AHRA CHO
 
Neural network (perceptron)
Neural network (perceptron)Neural network (perceptron)
Neural network (perceptron)
Jeonghun Yoon
 
Variational AutoEncoder(VAE)
Variational AutoEncoder(VAE)Variational AutoEncoder(VAE)
Variational AutoEncoder(VAE)
강민국 강민국
 
Spherical Harmonics.pdf
Spherical Harmonics.pdfSpherical Harmonics.pdf
Spherical Harmonics.pdf
Bongseok Cho
 
Data Structure 2
Data Structure 2Data Structure 2
Data Structure 2yonsei
 
Chapter 19 Variational Inference
Chapter 19 Variational InferenceChapter 19 Variational Inference
Chapter 19 Variational Inference
KyeongUkJang
 
Higher order procedure2 with conventional interface
Higher order procedure2 with conventional interface Higher order procedure2 with conventional interface
Higher order procedure2 with conventional interface
fromitive
 
[데브루키]노대영_알고리즘 스터디
[데브루키]노대영_알고리즘 스터디[데브루키]노대영_알고리즘 스터디
[데브루키]노대영_알고리즘 스터디
대영 노
 
04. logistic regression ( 로지스틱 회귀 )
04. logistic regression ( 로지스틱 회귀 )04. logistic regression ( 로지스틱 회귀 )
04. logistic regression ( 로지스틱 회귀 )
Jeonghun Yoon
 
python 수학이해하기
python 수학이해하기python 수학이해하기
python 수학이해하기
Yong Joon Moon
 
07. PCA
07. PCA07. PCA
07. PCA
Jeonghun Yoon
 
Linear algebra.pptx
Linear algebra.pptxLinear algebra.pptx
Linear algebra.pptx
GeonWooYoo1
 
선형대수 12강 Gram-Schmidt Orthogonalization
선형대수 12강 Gram-Schmidt Orthogonalization선형대수 12강 Gram-Schmidt Orthogonalization
선형대수 12강 Gram-Schmidt Orthogonalization
AHRA CHO
 
0131 1 spectral_theorem_transformation
0131 1 spectral_theorem_transformation0131 1 spectral_theorem_transformation
0131 1 spectral_theorem_transformation
Jeonghun Yoon
 
선형연립방정식 가우스소거법
선형연립방정식 가우스소거법선형연립방정식 가우스소거법
선형연립방정식 가우스소거법KyeongWon Koo
 
[D2 CAMPUS] 부산대 Alcall 프로그래밍 경시대회 문제 풀이
[D2 CAMPUS] 부산대 Alcall 프로그래밍 경시대회 문제 풀이[D2 CAMPUS] 부산대 Alcall 프로그래밍 경시대회 문제 풀이
[D2 CAMPUS] 부산대 Alcall 프로그래밍 경시대회 문제 풀이
NAVER D2
 
8. Logistic Regression
8. Logistic Regression8. Logistic Regression
8. Logistic Regression
Jungkyu Lee
 
Random walk, brownian motion, black scholes equation
Random walk, brownian motion, black scholes equationRandom walk, brownian motion, black scholes equation
Random walk, brownian motion, black scholes equation
창호 손
 
선형대수 04. Inverse and Transpose
선형대수 04. Inverse and Transpose선형대수 04. Inverse and Transpose
선형대수 04. Inverse and Transpose
AHRA CHO
 

Similar to 6장 그래프 알고리즘 (20)

선형대수 06. 영벡터공간과 해집합
선형대수 06. 영벡터공간과 해집합선형대수 06. 영벡터공간과 해집합
선형대수 06. 영벡터공간과 해집합
 
선형대수 08. 선형 변환 (Linear Transformation)
선형대수 08. 선형 변환 (Linear Transformation)선형대수 08. 선형 변환 (Linear Transformation)
선형대수 08. 선형 변환 (Linear Transformation)
 
Neural network (perceptron)
Neural network (perceptron)Neural network (perceptron)
Neural network (perceptron)
 
Variational AutoEncoder(VAE)
Variational AutoEncoder(VAE)Variational AutoEncoder(VAE)
Variational AutoEncoder(VAE)
 
Spherical Harmonics.pdf
Spherical Harmonics.pdfSpherical Harmonics.pdf
Spherical Harmonics.pdf
 
Data Structure 2
Data Structure 2Data Structure 2
Data Structure 2
 
Chapter 19 Variational Inference
Chapter 19 Variational InferenceChapter 19 Variational Inference
Chapter 19 Variational Inference
 
Higher order procedure2 with conventional interface
Higher order procedure2 with conventional interface Higher order procedure2 with conventional interface
Higher order procedure2 with conventional interface
 
[데브루키]노대영_알고리즘 스터디
[데브루키]노대영_알고리즘 스터디[데브루키]노대영_알고리즘 스터디
[데브루키]노대영_알고리즘 스터디
 
04. logistic regression ( 로지스틱 회귀 )
04. logistic regression ( 로지스틱 회귀 )04. logistic regression ( 로지스틱 회귀 )
04. logistic regression ( 로지스틱 회귀 )
 
python 수학이해하기
python 수학이해하기python 수학이해하기
python 수학이해하기
 
07. PCA
07. PCA07. PCA
07. PCA
 
Linear algebra.pptx
Linear algebra.pptxLinear algebra.pptx
Linear algebra.pptx
 
선형대수 12강 Gram-Schmidt Orthogonalization
선형대수 12강 Gram-Schmidt Orthogonalization선형대수 12강 Gram-Schmidt Orthogonalization
선형대수 12강 Gram-Schmidt Orthogonalization
 
0131 1 spectral_theorem_transformation
0131 1 spectral_theorem_transformation0131 1 spectral_theorem_transformation
0131 1 spectral_theorem_transformation
 
선형연립방정식 가우스소거법
선형연립방정식 가우스소거법선형연립방정식 가우스소거법
선형연립방정식 가우스소거법
 
[D2 CAMPUS] 부산대 Alcall 프로그래밍 경시대회 문제 풀이
[D2 CAMPUS] 부산대 Alcall 프로그래밍 경시대회 문제 풀이[D2 CAMPUS] 부산대 Alcall 프로그래밍 경시대회 문제 풀이
[D2 CAMPUS] 부산대 Alcall 프로그래밍 경시대회 문제 풀이
 
8. Logistic Regression
8. Logistic Regression8. Logistic Regression
8. Logistic Regression
 
Random walk, brownian motion, black scholes equation
Random walk, brownian motion, black scholes equationRandom walk, brownian motion, black scholes equation
Random walk, brownian motion, black scholes equation
 
선형대수 04. Inverse and Transpose
선형대수 04. Inverse and Transpose선형대수 04. Inverse and Transpose
선형대수 04. Inverse and Transpose
 

More from Vong Sik Kong

UPnP 발표자료
UPnP 발표자료UPnP 발표자료
UPnP 발표자료
Vong Sik Kong
 
Lambda 란 무엇인가
Lambda 란 무엇인가Lambda 란 무엇인가
Lambda 란 무엇인가
Vong Sik Kong
 
TDD in gameserver 발표자료
TDD in gameserver 발표자료TDD in gameserver 발표자료
TDD in gameserver 발표자료
Vong Sik Kong
 
HolubOnPatterns/chapter3_2
HolubOnPatterns/chapter3_2HolubOnPatterns/chapter3_2
HolubOnPatterns/chapter3_2Vong Sik Kong
 
게임 서버 기술 현황 및 전망
게임 서버 기술 현황 및 전망게임 서버 기술 현황 및 전망
게임 서버 기술 현황 및 전망
Vong Sik Kong
 
버클리Db 를 이용한 게임 서버 제작
버클리Db 를 이용한 게임 서버 제작버클리Db 를 이용한 게임 서버 제작
버클리Db 를 이용한 게임 서버 제작
Vong Sik Kong
 

More from Vong Sik Kong (8)

UPnP 발표자료
UPnP 발표자료UPnP 발표자료
UPnP 발표자료
 
Lambda 란 무엇인가
Lambda 란 무엇인가Lambda 란 무엇인가
Lambda 란 무엇인가
 
TDD in gameserver 발표자료
TDD in gameserver 발표자료TDD in gameserver 발표자료
TDD in gameserver 발표자료
 
Hadoop발표자료
Hadoop발표자료Hadoop발표자료
Hadoop발표자료
 
HolubOnPatterns/chapter3_2
HolubOnPatterns/chapter3_2HolubOnPatterns/chapter3_2
HolubOnPatterns/chapter3_2
 
Chap10
Chap10Chap10
Chap10
 
게임 서버 기술 현황 및 전망
게임 서버 기술 현황 및 전망게임 서버 기술 현황 및 전망
게임 서버 기술 현황 및 전망
 
버클리Db 를 이용한 게임 서버 제작
버클리Db 를 이용한 게임 서버 제작버클리Db 를 이용한 게임 서버 제작
버클리Db 를 이용한 게임 서버 제작
 

6장 그래프 알고리즘

  • 2. 6.1 방향성 그래프와 이진관계: Warshall알고리즘 6.2 Euler 경로와 Hamilton 회로 6.3 최단 경로와 최소 신장 트리 6.4 그래프 순회 알고리즘
  • 3. 병렬 아크가 없는 n개의 노드를 갖는 방향성 그래프 n x n 부울 행렬 1 2 0 1 1 0 0 0 0 0 0 0 1 0 1 1 1 0 3 4
  • 4. 병렬 아크가 없는 n개의 노드를 갖는 방향성 그래프 n 개의 원소를 갖는 집합에 대한 이진 관계 n x n 부울 행렬 {(1, 2), (1, 3), (3, 3), (4, 1), (4, 2), (4, 3)} 0 1 1 0 0 0 0 0 0 0 1 0 1 1 1 0 1 2 4 3 이거나 이거나 매 한가지다
  • 5. 정의 : 도달가능성 노드 방향성 그래프에서 노드에서 까지 경로(path)가존재하는 경우 는 로부터 도달가능(reachable)하다고 한다. 이면, 노드 에서 까지 길이가 m 인 경로가 존재한다.
  • 6. 2 0 1 0 0 0 0 0 1 0 0 0 0 1 0 0 0 0 0 0 1 0 1 0 0 3 1 A = 4 5 0 0 1 0 0 0 0 1 0 0 1 0 0 0 0 0 0 0 0 1 1 01 0 1 0 0 1 0 0 1 0 0 0 0 0 1 0 0 0 0 0 0 0 0 1 1 0 0 = = 0 0 1 0 0 1 0 0 1 0 0 1 0 0 0 0 0 0 0 0 1 1 01 0 0 1 0 0 0 0 0 1 0 0 1 0 0 1 0 0 0 0 0 0 1 0 1 1 0 = =
  • 7. 1 1 1 1 0 1 1 1 1 0 1 1 1 0 0 0 0 0 0 1 1 1 1 0 R = {(1,1), (1,2), (1,3), (1,4), (2,1), (2,2), (2,3), (2,4), (3,1), (3,2), (3,3), (3,4), (5,1), (5,2), (5,3), (5,4)} 이 방법은 알고리즘이다.
  • 8. 알고리즘 Warshall Warshall(n X n Boolean matrix M) // Initially, M = adjacency matrix of a directed graph G with no parallel arcs for k = 0 to n – 1 do for i = 1 to n do for j = 1 to n do M[i, j] = M[i, j] ∨ (M[i, k + 1] ∧ M[k + 1, j]) end for end for end for // at termination, M = reachability matrix of G End Warshall
  • 9. 6.1 방향성 그래프와 이진관계: Warshall알고리즘 6.2 Euler 경로와 Hamilton 회로 6.3 최단 경로와 최소 신장 트리 6.4 그래프 순회 알고리즘
  • 10. Euler 경로 그래프 G 에서 Euler 경로는 G 의 모든 아크들을 단 한 번만 방문하는 경로이다 그래프에서 홀수 노드에 대한 정리 어떠한 그래프에서든 홀수 노드의 수는 항상 짝수이다. Euler 경로에 대한 정리 연결된 그래프에서 Euler 경로가 존재하기 위한 필요 충분 조건은, 그 그래프에 홀수 노드가 하나도 없거나 혹은 두 개만 있어야 한다. 홀수 노드가 없는 경우에는, 임의의 어떤 노드에서 시작하여 그 노드에서 끝날 것이고, 홀수 노드가 두 개 있는 경우에는, 하나의 홀수 노드에서 시작하여 또 다른 하나의 홀수 노드로 끝나야 한다.
  • 11. Hamilton 회로 문제 그래프의 모든 노드를 한 번씩만 방문하는 사이클 경로이다 효과적인 알고리즘이 없다. 그냥 시행착오 방법을 사용해야 한다 N > 2 인 완전 그래프는 Hamilton 회로가 존재한다
  • 12. 6.1 방향성 그래프와 이진관계: Warshall알고리즘 6.2 Euler 경로와 Hamilton 회로 6.3 최단 경로와 최소 신장 트리 6.4 그래프 순회 알고리즘
  • 13. x 1 2 3 4 y ∞ 3 8 4 ∞ 10 3 ∞ ∞ 6 ∞ ∞ 8 ∞ ∞ ∞ 7 ∞ 4 6 ∞ ∞ 1 3 ∞ ∞ 7 1 ∞ 1 10 ∞ ∞ 3 1 ∞ x x 1 2 3 4 y 8 3 2 1 4 10 6 7 1 x 1 2 3 4 y 3 4 3 1 d 0 3 8 4 ∞ 10 s - x xxxx y p = 1 IN = {x, 1} d[2] = min(8, 3 + A[1,2]) = min(8, ∞) = 8 d[3] = min(4, 3 + A[1,3]) = min(4, 9) = 4 d[4] = min(∞, 3 + A[1,4]) = min(∞,∞) = ∞ d[y] = min(10, 3+ A[1,y]) = min(10, ∞) = 10
  • 14. p = 3 (8, 4, ∞, 10 중 가장 작은 3번 노드) IN = {x, 1, 3} d[2] = min(8, 4 + A[3,2]) = min(8, 4 + ∞) = 8 d[4] = min(∞, 4 + A[3,4]) = min(8, 4 + 1) = 5 (a change, so update s[4] to 3 d[y] = min(10, 4 + A[3,y]) = min(10, 4 + 3) = 7 (a change, so update s[y] to 3 x 1 2 3 4 y d 0 3 8 4 5 7 s - x xx 3 3 p = 4 (d-value = 5) IN = {x, 1, 3, 4} d[2] = min(8, 5 + 7) = 8 d[y] = min(7, 5+ 1) = 6 (a change, update s[y] x 1 2 3 4 y d 0 3 8 4 5 6 s - x xx 3 4
  • 15. p = y IN = {x, 1, 3, 4, y} d[2] = min(8, 6 + ∞) = 8 x 1 2 3 4 y d 0 3 8 4 5 6 s - x xx 3 4 최종 경로: x – 3 – 4 – y
  • 16. Open: priorityqueue of searchnode Closed : List of searchnode AStarSearch( location StartLoc, location GoalLoc, agenttype Agent) { clear Open and Closed // 시작 노드를 초기화 한다. StartNode.Loc = StartLoc StartNode.CostFromStart = 0 StartNode.CostToGoal = PathCostEstimate( StartLoc, GoalLoc, Agent ) StartNode.Parent = null push StartNode on Open // 성공 또는 실패에 이를 때까지 목록을 처리한다. while Open is not empty { pop Node from Open // 노드가 최저의 TotalCost를 가지는 경우 // 목표에 도달했으면 성공으로 끝낸다 if (Node is a goal node) { construct a path backward from Node to StartLoc return Success } else { for each successor NewNode of Node { NewCost = Node.CostFromStart + TraverseCost( Node, NewNode, Agent ) // 이 노드가 존재하며 더 나은 결과가 아니라면 무시한다. if (NewNode is in Open or Closed) and (NewNode.CostFromStart <= NewCost) { continue } else { // 새로운, 즉 더 나은 정보를 저장한다 NewNode.Parent= Node NewNode.CostFromStart = NewCost NewNode.CostToGoal = PathCostEstimate( NewNode.Loc, GoalLoc, Agent ) NewNode.TotalCost = NewNode.CostFromStart + NewNode.CostToGoal
  • 17. if (NewNode is in Open or Closed) and (NewNode.CostFromStart <= NewCost) { continue } else { // 새로운, 즉 더 나은 정보를 저장한다 NewNode.Parent= Node NewNode.CostFromStart = NewCost NewNode.CostToGoal = PathCostEstimate( NewNode.Loc, GoalLoc, Agent ) NewNode.TotalCost = NewNode.CostFromStart + NewNode.CostToGoal if (NewNode is in Closed) { remove NewNode from Closed } if (NewNode is in Open) { adjust NewNode's location in Open } else { push NewNode onto Open } } // 이 노드에 대한 처리가 끝났다 } push Node onto Closed } return failure // 목표에 도달하기 전에 Open이 빈 경우는 실패 }
  • 18. x 1 3 4 y x Open = {1(3), 3(4), 2(8), y(10)} Open = {3(4), 2(8), y(10)} Open = {4(5), 2(8), y(10)} Open = {y(6)} 8 3 2 1 4 10 6 7 1 3 4 3 1 y
  • 19. 정의: 신장 트리 연결된 그래프의 신장 트리(spanning tree) 는 노드 및 아크가 그래프의 일부와 일치하는 비루트트리이다. 최소 신장 트리 최소한의 비중을 가지고 모든 노드를 연결하는 신장 트리 Prim 알고리즘 초기의 임의의 노드를IN 에 넣고, IN 에 속하지 않는 모든 노드 z 에 대해서 임의의 노드와z 사이의 최단 거리를 갖는 노드를IN에 추가한다. 이런식으로 반복해서 그래프의 모든 노드가IN 에 추가되면 알고리즘은 종료한다.
  • 20. x 8 1 노드선택시IN 에 1을 넣고, 1에 인접한 x 와 3 노드 중 최소 거리를 갖는 x 를 IN 에 추가한다. 다시 1 과 x 에 인접한 2, 3, 4, y 노드 중 거리가 가장 짧은 3을 넣는다 이런식으로 반복하면 {1, x, 3, 4, y, 2} 가 선택된다 3 2 1 4 10 6 7 1 3 4 3 1 y
  • 21. 6.1 방향성 그래프와 이진관계: Warshall알고리즘 6.2 Euler 경로와 Hamilton 회로 6.3 최단 경로와 최소 신장 트리 6.4 그래프 순회 알고리즘
  • 22. 깊이 우선 탐색 DepthFirst(graph G; node a) mark a visited write(a) for each node n adjacent to a do if n not visited then DepthFirst(G, n) end if end for end DepthFirst
  • 23. 너비 우선 탐색 BreadthFirst(graph G; node a) Queue of nodes Q initialize Q to be empty mark a visited write(a) enqueue(a, Q) while Q is not empty do for each node n adjacent to front(Q) do if n not visited then mark n visited write(n) enqueue(n, Q) end if end for dequeue(Q) end while endBreadthFirst
  • 24. 깊이 우선 탐색과 너비 우선 탐색을 이용하면 Warshall알고리즘을 이용하지 않고도 도달 가능성을 계산할 수 있다. 이것은 O(n * max(n, m) (m: 아크 수) 만약 아크수가노드수와같아면 이다. Warshall알고리즘은 이기 때문에 더 빠르다. 방향성이 있는 그래프에서는 깊이 우선 탐색을 사용해 위상 정렬을 구할 수 있다. 6 5 1 7 2 3 4 깊이 우선 탐색 결과를 역순하면 선행자를 구할 수 있다.