Transcript i+1

쉽게 배우는 알고리즘
12장. 상태공간 트리의 탐색
12장. 상태공간 트리의 탐
색
인공지능은 미국인들
특유의 천진난만함의 표현이다.
-에드거 다익스트라
-2-
학습목표
• 상태공간 트리가 무엇인지 이해한다.
• 백트래킹 기법의 작동 원리를 이해한다.
• 한정분기의 작동 원리를 이해하고, 백트래킹
에 비해 장점이 무엇인지 이해하도록 한다.
• A* 알고리즘의 작동 원리를 이해하고, 어떤
문제들이 A* 알고리즘의 적용 대상인지 감지
하도록 한다.
-3-
State-Space Tree
• State-space tree (상태공간트리)
– 문제 해결 과정의 중간 상태를 각각 한 노드로 나타낸 트리
• 이 장에서 배우는 세가지 상태공간 탐색 기법
– Backtracking
– Branch-and-bound
– A* algorithm
-4-
한빛미디어㈜
TSP의 예
1
1
1
2
2
2
3
3
3
5
4
4
4
6
TSP 예제
6
5
해의 예
-5-
5
6
최적해
한빛미디어㈜
TSP와 Adjacency Matrix의 예
10
25
14
5
10
1
2
10
1
10
10 14
18
10
2
11
3
10
3
7
30
2
3
4
5
0
10
10
30
25
10
0
14
21
10
10
18
0
7
9
8
11
7
0
3
14
10
10
3
0
21
3
9
1
8
4
7
4
5
3
-6-
한빛미디어㈜
사전적 탐색의 State-Space Tree
1
1
12
2
1-2
3
4
1-3
6
1-2-3
7
1-4
1-5
39
40
11
10
8
1-2-3-5
1-2-4-3
1-2-4-5
1-2-5-3
1-2-5-4
48
44
61
54
45
40
1-2-3-5-4-1 1-2-4-3-5-1 1-2-4-5-3-1 1-2-5-3-4-1 1-2-5-4-3-1
-7-
…
…
…
1-2-5
1-2-3-4
1-2-3-4-5-1
32
9
1-2-4
5
22
…
1-5-4
41
1-5-4-2
1-5-4-3
63
63
1-5-4-2-3-1
1-5-4-3-2-1
한빛미디어㈜
Backtracking
• DFS 또는 그와 유사한 스타일의 탐색을
총칭한다
• Go as deeply as possible, backtrack if impossible
– 가능한 지점까지 탐색하다가 막히면 되돌아간다
• 예
– Maze, 8-Queens problem, Map coloring, …
-8-
한빛미디어㈜
Maze
maze
S
T
1
2
S
3
4
4
5
3
T
5
6
T
1
2
7
6
9
8
9
Branching tree
S
그래프로 모델링한 미로
7
8
-9-
한빛미디어㈜
maze(v)
{
visited[v] ← YES;
if (v = T) then {print “성공!”; exit( );}
for each x ∈ L(v) ▷ L(v) : 정점 v의 인접 정점 집합
if (visited[x] = NO) then {
prev[x] ← v;
maze(x);
}
}
- 10 -
한빛미디어㈜
Coloring Problem
• Graph에서
– 인접한 vertex는 같은 색을 칠할 수 없다
– k 개의 색상을 사용해서 전체 graph를 칠할 수
있는가?
- 11 -
한빛미디어㈜
Coloring Problem의 예: Map Coloring
(b) 구역간의 인접관계
(a) 지도
1
1
4
2
2
3
6
5
5
(c) 연결관계를 정점과 간선으로 나타낸 것
- 12 -
3
4
6
(d) (c)와 동일한 그래프
한빛미디어㈜
kColoring(i , c)
▷ i: 정점, c: color
▷ 질문: 정점 i-1까지는 제대로 칠이 된 상태에서 정점 i를 색 c로 칠하려면 k
개의 색으로 충분한가?
{
if (valid(i, c)) then {
color[i] ← c;
if (i = n) then {return TRUE;}
else {
result ← FALSE;
d ← 1;
▷ d: color
while (result = FALSE and d ≤ k) {
result ← kColoring(i+1, d); ▷ i+1: 다음 정점
d++;
}
}
return result;
} else {return FALSE;}
}
- 13 -
한빛미디어㈜
valid(i, c)
▷ i: 정점, c: color
▷ 질문: 정점 i-1까지는 제대로 칠이 된 상태에서 정점 i를 색 c로 칠하려면
이들과 색이 겹치지 않는가?
{
for j ← 1 to i-1 {
▷ 정점 i와 j 사이에 간선이 있고, 두 정점이 같은 색이면 안된다
if ((i, j) ∈ E and color[j] = c) then return FALSE;
}
return TRUE;
}
- 14 -
한빛미디어㈜
State-Space Tree
1
1, 1
3
2
2, 2
2, 1
4
5
3, 1
3, 2
1
7
6
4, 1
2
5
3
4, 2
4
8
6
9
5, 1
11
10
6, 1
- 15 -
6, 2
6, 3
한빛미디어㈜
Branch-and-Bound
• 분기branch와 한정bound의 결합
– 분기를 한정시켜 쓸데없는 시간 낭비를 줄이는 방법
• Backtracking과 공통점, 차이점
– 공통점
• 경우들을 차례로 나열하는 방법 필요
– 차이점
• Backtracking – 가보고 더 이상 진행이 되지 않으면 돌아온다
• Branch-&-Bound – 최적해를 찾을 가능성이 없으면 분기는 하지
않는다
- 16 -
한빛미디어㈜
P6
P1
P6
P5
P1
P5
P2
P2
P4
P4
P3
어느 시점에 가능한 선택들
P3
최적해를 포함하지 않아 제외하는 선택들
- 17 -
한빛미디어㈜
TSP 예제를 대상으로 한 Branch-and-Bound 탐색의 예
(State-Space Tree)
1
1
(33)
0+33
10
2
1-2
6
1-2-3
3
1-2-4
1-2-5
4
1-2-3-4
1-2-3-5
1-2-3-4-5-1
1-2-3-5-4-1
48
44
1-3-2
(33)
20+13
1-2-5-3
1-2-5-4
1-2-5-3-4-1 1-2-5-4-3-1
45
(53)
30+23
(35)
19+16
52
40
- 18 -
15
13
1-3-4-2-5-1
(48)
25+23
1-3-5
(33)
17+16
(44)
28+16
1-3-4-2
1-5
14
1-3-4
12
5
18
1-4
(33)
10+23
11
17
(44)
31+13
8
7
1-3
(33)
10+23
9
(37)
24+13
19
1-3-4-5
16
1-3-5-2
1-3-5-4
1-3-4-5-2-1 1-3-5-2-4-1 1-3-5-4-2-1
40
58
43
한빛미디어㈜
A* Algorithm
• Best-First-Search
– 각 정점이 매력함수값 g(x)를 갖고 있다
– 방문하지 않은 정점들 중 g(x) 값이 가장 매력적인 것부터
방문한다
• A* algorithm은 best-first search에 목적점에 이르는
잔여추정거리를 고려하는 알고리즘이다
– Vertex x로부터 목적점에 이르는 잔여거리의 추정치 h(x)는
실제치보다 크면 안된다
- 19 -
한빛미디어㈜
Shortest Path 문제
• Remind: Dijkstra algorithm
– 시작점은 하나
– 시작점으로부터 다른 모든 vertex에 이르는 최단경로를
구한다 (목적점이 하나가 아니다)
• A* algorithm에서는 목적점이 하나다
- 20 -
한빛미디어㈜
Dijkstra Algorithm의 작동 예
19
s
20 10
17
25
24
30
16
23
28
17
17
30
40
23
28
25
∞
23
18
20
25
∞
20
28
∞
17
29
- 21 -
∞
18
20
∞
20
28
∞
∞
39
30
23
28
25
29
40
24
∞
16
23
18
20
∞
20
28
∞
∞
39
25
40
∞
16
30
25
17
24
19
20 10
17 0
∞
39
23
28
25
24
16
30
∞
10
30
25
17
25
∞
19
10
17 0
17
t
28
29
∞
20 10
17 0
39
10
20
20
18
20
25
19
∞
29
40
한빛미디어㈜
19
10
30
20 10
17 0
23
28
25
17
17
30
25
20
18
20
28
∞
29
∞
25
17
∞
17
25
30
23
28
25
41
23
18
20
25
50
20
28
17
29
- 22 -
23
18
20
∞
20
28
∞
∞
39
30
23
28
25
29
40
24
41
16
23
18
20
50
20
28
∞
∞
39
25
40
41
16
30
25
17
61
24
19
20 10
17 0
64
39
23
28
25
40
24
16
30
25
10
30
20 10
17 0
30
10
17 0
19
10
17
23
20
∞
39
25
17
24
16
19
10
29
40
한빛미디어㈜
19
10
30
20 10
17 0
25
17
17
30
23
28
25
24
41
16
23
18
20
50
20
20
28
61
29
30
10
17 0
25
17
17
64
39
25
19
10
30
23
28
25
- 23 -
41
16
23
18
20
50
20
28
61
64
39
25
40
24
29
40
한빛미디어㈜
A* Algorithm의 작동 예
추정 잔여거리
19
61
24
20 10
17
30
25
16
20
18
20
23
28
17
40
39
25
19
52
28
34
68
19
52
29
40
39
∞
∞
20 10
17 0
25
∞
17
(71)
19
30
23
28
∞
39
25
∞
16
∞
∞
∞
24
18
20
∞
29
∞
25
17
(85)
40
17
30
23
28
25
(77) 25
- 24 -
(70)
30
20 10
17 0
20
28
19
10
24
∞
16
23
18
20
(57)
20
28
∞
∞
39
∞
∞
29
40
한빛미디어㈜
(71)
19
10
30
20 10
17 0
25
17
(85)
17
30
23
28
25
(77)
23
(57)
50
19
10
24
18
20
20
28
∞
29
61
25
17
(85)
17
(89)
30
23
28
25
(77)
40
(70)
30
20 10
17 0
(60)
41
16
39
25
(71)
(70)
23
(57)
50
(60)
41
16
39
25
24
18
20
20
28
61
∞
29
40
(89)
 추정잔여거리를 사용함으로써 탐색의 단계가 현저히 줄었다
- 25 -
한빛미디어㈜
TSP 예제를 대상으로 한 A* Algorithm 탐색의 예
(State-Space Tree)
1
1
(33)
0+33
3
2
1-2
1-3
(33)
10+23
7
4
1-2-3
1-2-4
5
1-2-5
(44)
31+13
(37)
24+13
1-3-2
(33)
20+13
1-4
(33)
10+23
(53)
30+23
(48)
25+23
6
1-3-4
1-3-5
(35)
19+16
(33)
17+16
(44)
28+16
1-5
8
1-2-3-4
1-2-3-5
1-2-3-4-5-1
1-2-3-5-4-1
48
44
1-2-5-3
1-2-5-3-4-1 1-2-5-4-3-1
45
1-3-4-2
1-2-5-4
1-3-4-2-5-1
52
40
- 26 -
1-3-4-5
1-3-5-2
1-3-5-4
1-3-4-5-2-1 1-3-5-2-4-1 1-3-5-4-2-1
40
58
43
한빛미디어㈜
A* Algorithm이 첫 Leaf Node를 방문하는 순간 종료되는 이유
영역의 leaf node들이 모두
영역과
40
보다 커질 수 없는 이유를 이해할 것
1-5
(48)
25+23
1-3-5
1-2-5
(35)
19+16
(33)
20+13
…
1-2-5-3 1-2-5-4
…
125341
125431
125341
125431
45
40
58
41
방문된 leaf node
…
1-3-5-2 1-3-5-4
152351
계산된 leaf node들
- 27 -
152431
153241
153421
154231
154321
계산되지 않은 leaf node들
한빛미디어㈜
Thank you
- 28 -