Download - 쉽게 배우는 알고리즘 강의노트leeck/NLP/search.pdf · 2016. 8. 31. · 쉽게 배우는 알고리즘 (한빛미디어) 12장. 상태공간 트리의 탐색
쉽게 배우는 알고리즘 (한빛미디어)
12장. 상태공간 트리의 탐색
- 2 - 한빛미디어㈜
State-Space Tree
• State-space tree (상태공간트리)
– 문제 해결 과정의 중간 상태를 각각 한 노드로 나타낸 트리
• 이 장에서 배우는 세가지 상태공간 탐색 기법
– Backtracking
– Branch-and-bound
– A* algorithm
- 3 - 한빛미디어㈜
1
3
6
4
2
5
1
3
6
4
2
5
1
3
6
4
2
5
TSP 예제 해의 예 최적해
Travelling Salesman Problem의 예 • 물건을 판매하기 위해 여행하는 세일즈맨의 문제
• 물건을 팔기 위해서 어떤 도시를 먼저 방문해서 최소한의 비용으로 도시들을 모두
순회하고 돌아올 수 있는 지를 구하는 것
• TSP는 가장 대표적인 NP-Hard 문제
• NP-Hard란 Nondeterministic Polynomial - Hard의 약자
• 다항식으로 표현될 수 있을 지의 여부가 아직 알려지지 않았다는 의미
• NP-Hard란 TSP문제와 같이 모든 경우의 수를 일일히 확인해보는 방법이외에는
다항식 처럼 답을 풀이 할 수 없는 문제들을 말함
- 4 - 한빛미디어㈜
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
1
2
3
4
5
1 2 3 4 5
1
3
4
2
5
10
10
25 14
10 10
21 11
30 8
3
3
9
10
7
7
14
18
10
10
TSP와 Adjacency Matrix의 예
- 5 - 한빛미디어㈜
1
1-2-3
1-2-3-4 1-2-3-5
1-2-4
48 44
1-2-5
1-3
1-2-5-4
40
1-2-5-3
45
1-2-5-3-4-1 1-2-3-4-5-1 1-2-3-5-4-1 1-2-5-4-3-1
1-5-4-2 1-5-4-3
63 63
1-5-4-2-3-1 1-5-4-3-2-1
1-4 1-5
1
2
10 11
3 6
4 5 40 41
12 22 32
1-2-4-5
54
1-2-4-3
61
1-2-4-3-5-1 1-2-4-5-3-1
7 8
1-2
9
1-5-4
39
… … …
…
사전적 탐색의 State-Space Tree
- 6 - 한빛미디어㈜
Backtracking
• DFS 또는 그와 유사한 스타일의 탐색을
총칭한다
• Go as deeply as possible, backtrack if impossible
– 가능한 지점까지 탐색하다가 막히면 되돌아간다
• 예
– Maze, 8-Queens problem, Map coloring, …
- 7 - 한빛미디어㈜
S
T
2
3
1
4
5
6
S
1
2 3
4
5
T 6
7
8
9 9 8 7
maze
S
T
그래프로 모델링한 미로
Branching tree
Maze
- 8 - 한빛미디어㈜
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);
}
}
- 9 - 한빛미디어㈜
Coloring Problem
• Graph에서
– 인접한 vertex는 같은 색을 칠할 수 없다
– k 개의 색상을 사용해서 전체 graph를 칠할 수
있는가?
- 10 - 한빛미디어㈜
1
3
6
4 2
5
1
3
6
4 2
5
(a) 지도 (b) 구역간의 인접관계
(c) 연결관계를 정점과 간선으로 나타낸 것 (d) (c)와 동일한 그래프
Coloring Problem의 예: Map Coloring
- 11 - 한빛미디어㈜
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;}
}
- 12 - 한빛미디어㈜
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;
}
- 13 - 한빛미디어㈜
1, 1
3, 1 3, 2
2, 1
1
5
2, 2
3
4
4, 1 4, 2 7 6
5, 1
6, 1 6, 2 9
6, 3 10 11
8
2
State-Space Tree
1
3
6
4 2
5
- 14 - 한빛미디어㈜
Branch-and-Bound
• 분기branch와 한정bound의 결합
– 분기를 한정시켜 쓸데없는 시간 낭비를 줄이는 방법
• Backtracking과 공통점, 차이점
– 공통점
• 경우들을 차례로 나열하는 방법 필요
– 차이점
• Backtracking – 가보고 더 이상 진행이 되지 않으면 돌아온다
• Branch-&-Bound – 최적해를 찾을 가능성이 없으면 분기는 하지
않는다
- 15 - 한빛미디어㈜
P1
P2
P3
P4
P5
P6 P1
P2
P3
P4
P5
P6
어느 시점에 가능한 선택들 최적해를 포함하지 않아 제외하는 선택들
- 16 - 한빛미디어㈜
1
1-2
1-2-3
1-2-3-4 1-2-3-5
(33) 0+33
(33) 10+23
(37) 24+13
1-2-4
(44) 31+13
1-2-5
(33) 20+13
1-3 (33) 10+23
1-3-2
(44) 28+16
1-3-4
(33) 17+16
1-3-5 (35) 19+16
1-2-5-4 1-2-5-3 1-3-4-2 1-3-4-5 1-3-5-4 1-3-5-2
1-4
(53) 30+23
1-5
(48) 25+23
1
2
4 5
6 9
7 8
11
12 13 16 15
10 19 18
17 3 14
40 45
1-2-5-3-4-1 1-2-3-4-5-1 1-2-3-5-4-1 1-2-5-4-3-1
40 43 58
1-3-5-2-4-1 1-3-4-2-5-1 1-3-4-5-2-1 1-3-5-4-2-1
48 44 52
TSP 예제를 대상으로 한 Branch-and-Bound 탐색의 예
(State-Space Tree)
- 17 - 한빛미디어㈜
A* Algorithm
• Best-First-Search
– 각 정점이 매력함수값 g(x)를 갖고 있다
– 방문하지 않은 정점들 중 g(x) 값이 가장 매력적인 것부터
방문한다
• A* algorithm은 best-first search에 목적점에 이르는
잔여추정거리를 고려하는 알고리즘이다
– Vertex x로부터 목적점에 이르는 잔여거리의 추정치 h(x)는
실제치보다 크면 안된다
– f(n): 평가함수
– f(n) = g(n) + h(n)
• g(n): 출발노드로부터 노드 n까지의 경로비용
• h(n): 노드 n으로부터 목표 노드까지의 추정 경로비용
- 18 - 한빛미디어㈜
Shortest Path 문제
• Remind: Dijkstra algorithm
– 시작점은 하나
– 시작점으로부터 다른 모든 vertex에 이르는 최단경로를
구한다 (목적점이 하나가 아니다)
• A* algorithm에서는 목적점이 하나다
- 19 - 한빛미디어㈜
30
23
25
24
18
28 20
29
25
39
20
40
28
16 10
19
17
20
17
0 30
23
25
24
18
28 20
29
25
39
∞
20
40
28
16 10
19
17
20
17
10 30
17 23
∞
∞
∞
25
0 30
23
25
24
18
28 20
29
25
39
∞
20
40
28
16 10
19
17
20
17
10 30
17 23
∞
∞
∞
25
0 30
23
25
24
18
28 20
29
25
39
20
40
28
16 10
19
17
20
17
∞ ∞
∞
∞
∞
∞
∞
∞ ∞
s
t
Dijkstra Algorithm의 작동 예
- 20 - 한빛미디어㈜
0 30
23
25
24
18
28 20
29
25
39
∞
20
40
28
16 10
19
17
20
17
10 30
17 23
∞
∞
∞
25
0 30
23
25
24
18
28 20
29
25
39
∞
20
40
28
16 10
19
17
20
17
10 30
17 23
41
∞
∞
25
0 30
23
25
24
18
28 20
29
25
39
∞
20
40
28
16 10
19
17
20
17
10 30
17 23
41
∞
50
25
0 30
23
25
24
18
28 20
29
25
39
61
20
40
28
16 10
19
17
20
17
10 30
17 23
41
64
50
25
- 21 - 한빛미디어㈜
0 30
23
25
24
18
28 20
29
25
39
61
20
40
28
16 10
19
17
20
17
10 30
17 23
41
64
50
25
0 30
23
25
24
18
28 20
29
25
39
61
20
40
28
16 10
19
17
20
17
10 30
17 23
41
64
50
25
- 22 - 한빛미디어㈜
16
25
52
40
39
34
19
19
52
68
61
30
23
25
24
18
28 20
29
25
39
20
40
28
16 10
19
17
20
17
(77)
(57)
(71)
(85)
(70)
0 30
23
25
24
18
28 20
29 39
∞
20
40
28
10
19
17
20
17
10 30
17 23
∞
∞
∞
25
∞
추정 잔여거리
0 30
23
25
24
18
28 20
29
25
39
20
40
28
16 10
19
17
20
17
∞ ∞
∞ ∞
∞
∞
∞
∞
∞
∞
A* Algorithm의 작동 예
- 23 - 한빛미디어㈜
0 30
23
25
24
18
28 20
29
25
39
61
20
40
28
16 10
19
17
20
17
10 30
17 23
41
∞
50
25
(60)
(89)
0 30
23
25
24
18
28 20
29
25
39
61
20
40
28
16 10
19
17
20 17
10 30
17 23
41
∞
50
25
(77)
(57)
(71)
(85)
(70)
(60)
(89)
(77)
(57)
(71)
(85)
(70)
추정잔여거리를 사용함으로써 탐색의 단계가 현저히 줄었다
- 24 - 한빛미디어㈜
1
1-2
1-2-3
1-2-3-4 1-2-3-5
(33) 0+33
(33) 10+23
(37) 24+13
1-2-4
(44) 31+13
1-2-5
(33) 20+13
1-3 (33) 10+23
1-3-2
(44) 28+16
1-3-4
(33) 17+16
1-3-5 (35) 19+16
1-2-5-4
40
1-2-5-3
45
1-2-5-3-4-1 1-2-3-4-5-1 1-2-3-5-4-1 1-2-5-4-3-1
1-3-4-2 1-3-4-5
40
1-3-5-4
43
1-3-5-2
58
1-3-5-2-4-1 1-3-4-2-5-1 1-3-4-5-2-1 1-3-5-4-2-1
1-4
(53) 30+23
1-5
(48) 25+23
1
2
8
7 5
3
4 6
48 44 52
TSP 예제를 대상으로 한 A* Algorithm 탐색의 예
(State-Space Tree)
- 25 - 한빛미디어㈜
예제: 8-퍼즐 문제 (A*)
f(n) = g(n) + h(n)
- 26 - 한빛미디어㈜
A* search for finding path from a start node to a
goal node in a robot motion planning problem.
http://upload.wikimedia.org/wikipedia/commons/5/5d/Astar_progress_animation.gif
- 27 - 한빛미디어㈜
A* Pathfinding Algorithm Visualization
http://www.youtube.com/watch?v=19h1g22hby8
- 28 - 한빛미디어㈜
Local Beam Search
• Best-First search 에서 기억 노드의 수를 제한 하는 방법
• 기억 공간이 축소되지만 너무 빠른 가지치기를 초래
• BFS search로 다음 상태의 해집합을 구함
• 해집합을 Goal에 가까운 순으로 정렬
• 사전 설정된 수만큼의 해집합만을 유지하고 나머지는 잘라냄
- 29 - 한빛미디어㈜
Hill Climbing 기법
• hill climbing 기법은 DFS(depth-first search)를 기초로
하여 heuristic을 적용한 탐색 기법으로 현재 상태와
자식 노드와의 거리(혹은 비용)에 따라 정렬(sort)한 후
각 단계(step)의 선택이 이전 단계의 상태보다
나은지를 평가함
• 지역 최대치(local maxima) 문제 (작은 언덕; foothills)
– 정상 주변에 정상 보다 낮은 봉우리들이 있을 때, 그 주변
봉우리에 오를 경우 그 곳이 정상인 것으로 판단 할 수 있다.
- 30 - 한빛미디어㈜
Genetic Algorithm (유전 알고리즘)
• 자연계 생물의 유전과 진화의 메카니즘을 공학적으로 모델화 하는
일종의 확률 탐색 방법으로, 생물의 유전자 모양으로 탐색을
진행하며, 탐색(search), 최적화(optimization), 기계학습(machine
learning)의 도구로서 많이 사용됨
• 근접한 최적 해를 찾기 쉽고 병렬적 탐색이 가능하며 지역
최적해(local maximum)에 빠지지 않음
• 그러나 만약 탐색이 해의 사이로 진행되는 경우 결과를 찾지 못할
가능성이 있으며, 해를 찾는다 하더라도 찾는 과정을 알 수 없음.
• 적합한 분야
– TSP, 고차함수의 근사최적해 문제, 신경망 최적화, 기타 NP-Hard 문제 중 일부
• 적합하지 않은 분야
– 1:N Shortest path 문제, Sorting, Finding
• 유전 알고리즘의 응용 예들
– 함수 근사, 신경망 최적화, 퍼지 시스템 최적화, 엘리베이터 그룹 스케줄링,
TSP, 네트웍 배치, 그래프 분할, 회로 라우팅