30
쉽게 배우는 알고리즘 (한빛미디어) 12장. 상태공간 트리의 탐색

쉽게 배우는 알고리즘 강의노트leeck/NLP/search.pdf · 2016. 8. 31. · 쉽게 배우는 알고리즘 (한빛미디어) 12장. 상태공간 트리의 탐색

  • Upload
    others

  • View
    11

  • Download
    0

Embed Size (px)

Citation preview

Page 1: 쉽게 배우는 알고리즘 강의노트leeck/NLP/search.pdf · 2016. 8. 31. · 쉽게 배우는 알고리즘 (한빛미디어) 12장. 상태공간 트리의 탐색

쉽게 배우는 알고리즘 (한빛미디어)

12장. 상태공간 트리의 탐색

Page 2: 쉽게 배우는 알고리즘 강의노트leeck/NLP/search.pdf · 2016. 8. 31. · 쉽게 배우는 알고리즘 (한빛미디어) 12장. 상태공간 트리의 탐색

- 2 - 한빛미디어㈜

State-Space Tree

• State-space tree (상태공간트리)

– 문제 해결 과정의 중간 상태를 각각 한 노드로 나타낸 트리

• 이 장에서 배우는 세가지 상태공간 탐색 기법

– Backtracking

– Branch-and-bound

– A* algorithm

Page 3: 쉽게 배우는 알고리즘 강의노트leeck/NLP/search.pdf · 2016. 8. 31. · 쉽게 배우는 알고리즘 (한빛미디어) 12장. 상태공간 트리의 탐색

- 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문제와 같이 모든 경우의 수를 일일히 확인해보는 방법이외에는

다항식 처럼 답을 풀이 할 수 없는 문제들을 말함

Page 4: 쉽게 배우는 알고리즘 강의노트leeck/NLP/search.pdf · 2016. 8. 31. · 쉽게 배우는 알고리즘 (한빛미디어) 12장. 상태공간 트리의 탐색

- 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의 예

Page 5: 쉽게 배우는 알고리즘 강의노트leeck/NLP/search.pdf · 2016. 8. 31. · 쉽게 배우는 알고리즘 (한빛미디어) 12장. 상태공간 트리의 탐색

- 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

Page 6: 쉽게 배우는 알고리즘 강의노트leeck/NLP/search.pdf · 2016. 8. 31. · 쉽게 배우는 알고리즘 (한빛미디어) 12장. 상태공간 트리의 탐색

- 6 - 한빛미디어㈜

Backtracking

• DFS 또는 그와 유사한 스타일의 탐색을

총칭한다

• Go as deeply as possible, backtrack if impossible

– 가능한 지점까지 탐색하다가 막히면 되돌아간다

• 예

– Maze, 8-Queens problem, Map coloring, …

Page 7: 쉽게 배우는 알고리즘 강의노트leeck/NLP/search.pdf · 2016. 8. 31. · 쉽게 배우는 알고리즘 (한빛미디어) 12장. 상태공간 트리의 탐색

- 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

Page 8: 쉽게 배우는 알고리즘 강의노트leeck/NLP/search.pdf · 2016. 8. 31. · 쉽게 배우는 알고리즘 (한빛미디어) 12장. 상태공간 트리의 탐색

- 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);

}

}

Page 9: 쉽게 배우는 알고리즘 강의노트leeck/NLP/search.pdf · 2016. 8. 31. · 쉽게 배우는 알고리즘 (한빛미디어) 12장. 상태공간 트리의 탐색

- 9 - 한빛미디어㈜

Coloring Problem

• Graph에서

– 인접한 vertex는 같은 색을 칠할 수 없다

– k 개의 색상을 사용해서 전체 graph를 칠할 수

있는가?

Page 10: 쉽게 배우는 알고리즘 강의노트leeck/NLP/search.pdf · 2016. 8. 31. · 쉽게 배우는 알고리즘 (한빛미디어) 12장. 상태공간 트리의 탐색

- 10 - 한빛미디어㈜

1

3

6

4 2

5

1

3

6

4 2

5

(a) 지도 (b) 구역간의 인접관계

(c) 연결관계를 정점과 간선으로 나타낸 것 (d) (c)와 동일한 그래프

Coloring Problem의 예: Map Coloring

Page 11: 쉽게 배우는 알고리즘 강의노트leeck/NLP/search.pdf · 2016. 8. 31. · 쉽게 배우는 알고리즘 (한빛미디어) 12장. 상태공간 트리의 탐색

- 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;}

}

Page 12: 쉽게 배우는 알고리즘 강의노트leeck/NLP/search.pdf · 2016. 8. 31. · 쉽게 배우는 알고리즘 (한빛미디어) 12장. 상태공간 트리의 탐색

- 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;

}

Page 13: 쉽게 배우는 알고리즘 강의노트leeck/NLP/search.pdf · 2016. 8. 31. · 쉽게 배우는 알고리즘 (한빛미디어) 12장. 상태공간 트리의 탐색

- 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

Page 14: 쉽게 배우는 알고리즘 강의노트leeck/NLP/search.pdf · 2016. 8. 31. · 쉽게 배우는 알고리즘 (한빛미디어) 12장. 상태공간 트리의 탐색

- 14 - 한빛미디어㈜

Branch-and-Bound

• 분기branch와 한정bound의 결합

– 분기를 한정시켜 쓸데없는 시간 낭비를 줄이는 방법

• Backtracking과 공통점, 차이점

– 공통점

• 경우들을 차례로 나열하는 방법 필요

– 차이점

• Backtracking – 가보고 더 이상 진행이 되지 않으면 돌아온다

• Branch-&-Bound – 최적해를 찾을 가능성이 없으면 분기는 하지

않는다

Page 15: 쉽게 배우는 알고리즘 강의노트leeck/NLP/search.pdf · 2016. 8. 31. · 쉽게 배우는 알고리즘 (한빛미디어) 12장. 상태공간 트리의 탐색

- 15 - 한빛미디어㈜

P1

P2

P3

P4

P5

P6 P1

P2

P3

P4

P5

P6

어느 시점에 가능한 선택들 최적해를 포함하지 않아 제외하는 선택들

Page 16: 쉽게 배우는 알고리즘 강의노트leeck/NLP/search.pdf · 2016. 8. 31. · 쉽게 배우는 알고리즘 (한빛미디어) 12장. 상태공간 트리의 탐색

- 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)

Page 17: 쉽게 배우는 알고리즘 강의노트leeck/NLP/search.pdf · 2016. 8. 31. · 쉽게 배우는 알고리즘 (한빛미디어) 12장. 상태공간 트리의 탐색

- 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으로부터 목표 노드까지의 추정 경로비용

Page 18: 쉽게 배우는 알고리즘 강의노트leeck/NLP/search.pdf · 2016. 8. 31. · 쉽게 배우는 알고리즘 (한빛미디어) 12장. 상태공간 트리의 탐색

- 18 - 한빛미디어㈜

Shortest Path 문제

• Remind: Dijkstra algorithm

– 시작점은 하나

– 시작점으로부터 다른 모든 vertex에 이르는 최단경로를

구한다 (목적점이 하나가 아니다)

• A* algorithm에서는 목적점이 하나다

Page 19: 쉽게 배우는 알고리즘 강의노트leeck/NLP/search.pdf · 2016. 8. 31. · 쉽게 배우는 알고리즘 (한빛미디어) 12장. 상태공간 트리의 탐색

- 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의 작동 예

Page 20: 쉽게 배우는 알고리즘 강의노트leeck/NLP/search.pdf · 2016. 8. 31. · 쉽게 배우는 알고리즘 (한빛미디어) 12장. 상태공간 트리의 탐색

- 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

Page 21: 쉽게 배우는 알고리즘 강의노트leeck/NLP/search.pdf · 2016. 8. 31. · 쉽게 배우는 알고리즘 (한빛미디어) 12장. 상태공간 트리의 탐색

- 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

Page 22: 쉽게 배우는 알고리즘 강의노트leeck/NLP/search.pdf · 2016. 8. 31. · 쉽게 배우는 알고리즘 (한빛미디어) 12장. 상태공간 트리의 탐색

- 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의 작동 예

Page 23: 쉽게 배우는 알고리즘 강의노트leeck/NLP/search.pdf · 2016. 8. 31. · 쉽게 배우는 알고리즘 (한빛미디어) 12장. 상태공간 트리의 탐색

- 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)

추정잔여거리를 사용함으로써 탐색의 단계가 현저히 줄었다

Page 24: 쉽게 배우는 알고리즘 강의노트leeck/NLP/search.pdf · 2016. 8. 31. · 쉽게 배우는 알고리즘 (한빛미디어) 12장. 상태공간 트리의 탐색

- 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)

Page 25: 쉽게 배우는 알고리즘 강의노트leeck/NLP/search.pdf · 2016. 8. 31. · 쉽게 배우는 알고리즘 (한빛미디어) 12장. 상태공간 트리의 탐색

- 25 - 한빛미디어㈜

예제: 8-퍼즐 문제 (A*)

f(n) = g(n) + h(n)

Page 26: 쉽게 배우는 알고리즘 강의노트leeck/NLP/search.pdf · 2016. 8. 31. · 쉽게 배우는 알고리즘 (한빛미디어) 12장. 상태공간 트리의 탐색

- 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

Page 27: 쉽게 배우는 알고리즘 강의노트leeck/NLP/search.pdf · 2016. 8. 31. · 쉽게 배우는 알고리즘 (한빛미디어) 12장. 상태공간 트리의 탐색

- 27 - 한빛미디어㈜

A* Pathfinding Algorithm Visualization

http://www.youtube.com/watch?v=19h1g22hby8

Page 28: 쉽게 배우는 알고리즘 강의노트leeck/NLP/search.pdf · 2016. 8. 31. · 쉽게 배우는 알고리즘 (한빛미디어) 12장. 상태공간 트리의 탐색

- 28 - 한빛미디어㈜

Local Beam Search

• Best-First search 에서 기억 노드의 수를 제한 하는 방법

• 기억 공간이 축소되지만 너무 빠른 가지치기를 초래

• BFS search로 다음 상태의 해집합을 구함

• 해집합을 Goal에 가까운 순으로 정렬

• 사전 설정된 수만큼의 해집합만을 유지하고 나머지는 잘라냄

Page 29: 쉽게 배우는 알고리즘 강의노트leeck/NLP/search.pdf · 2016. 8. 31. · 쉽게 배우는 알고리즘 (한빛미디어) 12장. 상태공간 트리의 탐색

- 29 - 한빛미디어㈜

Hill Climbing 기법

• hill climbing 기법은 DFS(depth-first search)를 기초로

하여 heuristic을 적용한 탐색 기법으로 현재 상태와

자식 노드와의 거리(혹은 비용)에 따라 정렬(sort)한 후

각 단계(step)의 선택이 이전 단계의 상태보다

나은지를 평가함

• 지역 최대치(local maxima) 문제 (작은 언덕; foothills)

– 정상 주변에 정상 보다 낮은 봉우리들이 있을 때, 그 주변

봉우리에 오를 경우 그 곳이 정상인 것으로 판단 할 수 있다.

Page 30: 쉽게 배우는 알고리즘 강의노트leeck/NLP/search.pdf · 2016. 8. 31. · 쉽게 배우는 알고리즘 (한빛미디어) 12장. 상태공간 트리의 탐색

- 30 - 한빛미디어㈜

Genetic Algorithm (유전 알고리즘)

• 자연계 생물의 유전과 진화의 메카니즘을 공학적으로 모델화 하는

일종의 확률 탐색 방법으로, 생물의 유전자 모양으로 탐색을

진행하며, 탐색(search), 최적화(optimization), 기계학습(machine

learning)의 도구로서 많이 사용됨

• 근접한 최적 해를 찾기 쉽고 병렬적 탐색이 가능하며 지역

최적해(local maximum)에 빠지지 않음

• 그러나 만약 탐색이 해의 사이로 진행되는 경우 결과를 찾지 못할

가능성이 있으며, 해를 찾는다 하더라도 찾는 과정을 알 수 없음.

• 적합한 분야

– TSP, 고차함수의 근사최적해 문제, 신경망 최적화, 기타 NP-Hard 문제 중 일부

• 적합하지 않은 분야

– 1:N Shortest path 문제, Sorting, Finding

• 유전 알고리즘의 응용 예들

– 함수 근사, 신경망 최적화, 퍼지 시스템 최적화, 엘리베이터 그룹 스케줄링,

TSP, 네트웍 배치, 그래프 분할, 회로 라우팅