Transcript 경험적 탐색의 개요
문제풀이 방식 - 탐색 경험적 탐색 1 / 45 지난 학습 내용 그래프 탐색 : 상태 공간을 그래프로 모델링 상태 - 노드, 연산자 적용 - 아크 출발 노드로부터 목표 노드까지 도달하는 경로를 탐색하는 문제 탐색 방법의 분류 목표 노드에 대한 정보 사용 탐색 목적 - 임의 경로 또는 최적 경로 맹목적 탐색 깊이 우선, 넓이 우선 탐색 균일 비용 탐색 - 최소 비용 경로의 탐색 2 / 45 이번 학습 내용 경험적 탐색 방법 경험적 탐색의 개요 언덕 오르기 방법 최적 우선 방법 A*-알고리즘 3 / 45 학습내용 경험적 탐색의 개요 언덕 오르기 방법 최적 우선 방법 A*-알고리즘 4 / 45 효율적 탐색방법의 필요성 맹목적 탐색의 문제점 상당히 소모적인 방법 너무 많은 노드 확장비 실용적 연산 시간 및 컴퓨터 메모리의 제한 등의 문제 경험적 탐색방법 등장 5 / 45 경험적 탐색의 개요 경험적 지식 : 해에 대한 완벽한 경험적 탐색 정보는 아니지만, 많은 경우 유용하게 사용할 수 있는 경험적으로 얻은 지식 목표 상태를 보다 신속하게 탐색하기 위해 경험적 지식을 활용하는 탐색 방법 평가 함수를 사용 6 / 45 평가 함수 어떤 상태가 주어졌을 때 그 상태를 거쳐 가는 것이 목표 상태로 가는 데 얼마나 바람직 한가를 나타내는 함수 해를 향해 가는데 필요한 비용, 해로 향하는 경로상에 존재할 가능성 등 7 / 45 학습내용 경험적 언덕 탐색의 개요 오르기 방법 최적 우선 방법 A*-알고리즘 8 / 45 언덕 오르기 탐색 평가 함수 g(N) : 출발 노드로부터 현재 상태를 나타내는 노드N까지의 경로 비용 h(N) : 노드N으로부터 목표 노드까지의 경로 비용 아직 탐색하지 않은 경로이므로 정확한 h(N) 값은 알 수 없다. 예측 비용 ĥ( N사용 ) 9 / 45 S g(N) N ^ h(N) → h(N) G 10 / 45 언덕 오르기 탐색 알고리즘1/2 1. 출발 노드를 OPEN에 삽입 2. OPEN에 남은 노드가 있으면 다음을 반복 (1)OPEN 의 제 일 앞 노 드 를 꺼 내 어 CLOSED에 넣는다. (노드n) (2)노드n을 확장하여 후계 노드 n1, n2, ..., ni를 생성 11 / 45 언덕 오르기 탐색 알고리즘2/2 (3)후계노드가 존재한다면 a) 후계 노드 중 목표노드가 있다면 탐색 성공 b) 후계 노드들의 평가 함수 ,, …, 를 계산 c) n1, n2, ..., ni를 가장 유망한 후계 노드가 앞에 오도록 OPEN에 추가 3. 탐색 실패 12 / 45 언덕 오르기 기법의 특징 현재 상태까지 도달하는 데 소비한 경로비용은 무시 앞으로 남은 목표까지의 비용만 고려 현재 진행중인 경로가 우선적으로 탐색 13 / 45 경로 탐색 문제 5 b 5 a 4 6 c 7 e 8 d 3 3 3 g f 1 14 / 45 도시 사이의 직선거리(평가함수) b e 6.5 9 a c 2.5 g 4 d 1 f 15 / 45 6 b 5 5 a 4 c 7 6.5 a 9 c g f 1 e d 4 6.5 c 7 b c d 4 7 c e 7 3 2.5 g 7 a 3 8 d 3 3 b e f 1 g 0 16 / 45 계수 최적화 문제 언덕 오르기 탐색과 같은 문제풀이 형식은 계수 최적화 문제에 흔히 이용 최적의 결과를 낼 수 있도록 시스템의 계수를 조정하는 문제 17 / 45 계수 최적화 문제의 예 예 - 등산가 문제 어떤 사람이 초행길의 산을 등산하는 도중 짙은 안개를 만났다. 지도도 없고, 사람이 다니는 길도 없다. 다만 나침반을 가지고 있으며, 산의 정상에 오르고자 한다. 어떻게 정상에 도달할 수 있겠는가? 18 / 45 19 / 45 등산가 문제 상태 : 좌표 및 고도 연산자 : 동, 서, 남, 북 방향으로 이동 20 / 45 언덕 오르기 기법을 이용한 해결 노드의 확장 : 현재 위치를 기준으로 해서 각 방향의 눈으로 확인할 수 있는 거리만큼 떨어진 곳의 높이를 판단 목표상태인가의 검사 : 만일 모든 위치가 현 위치보다 낮으면 그 곳을 정상이라 판단 후계노드의 선택 : 현 위치가 정상이 아니라면 확인된 위치 중 가장 높은 곳으로 이동 21 / 45 22 / 45 23 / 45 언덕 오르기 기법의 문제점 지역 최대치(Local maximum) 문제 고원(Plateau) 문제 능선(ridge) 문제 24 / 45 지역 최대치 문제 25 / 45 지역 최대치(Local maximum) 문제 정상 주변에 정상 보다 낮은 봉우리들이 있을 때, 그 주변 봉우리에 오를 경우 그 곳이 정상인 것으로 판단할 수 있다. 백트랙킹을 통해 다른 가능한 경로를 탐색해 보는 방안 26 / 45 고원 문제 27 / 45 고원(Plateau) 문제 산 중턱에 존재하는 평평한 영역에 도달했을 경우 어느 방향으로 이동해도 현재 상황을 개선할 수 없다. 동일 연산자를 반복 적용한 결과를 토대로 진행 방향을 결정하는 방안 28 / 45 능선 문제 29 / 45 능선(ridge) 문제 날카로운 능선 상에 위치해 있을 때 정해진 동, 서, 남, 북 어느 방향으로 이동하더라도 고도가 낮아져서 정상으로 오판하게 되는 문제 이동 방향의 해상도와 관련된 문제 검사 방향을 늘리거나 연산자들을 조합하여 적용한 결과를 사용하는 방안 30 / 45 학습내용 경험적 탐색의 개요 언덕 오르기 방법 최적 우선 방법 A*-알고리즘 31 / 45 최적 우선 탐색 언덕 오르기 탐색 알고리즘과 OPEN을 관리하는 방식에 차이가 있다. OPEN 에 후 계 노 드 들 을 삽 입 한 후 OPEN의 전체 노드들을 평가함수의 값을 기준으로 정렬 한 가지를 탐색해 가다가 다른 가지가 더 바람직하게 보이면 그 쪽 가지를 탐색 32 / 45 최적 우선 탐색 33 / 45 학습내용 경험적 탐색의 개요 언덕 오르기 방법 최적 우선 방법 A*-알고리즘 34 / 45 A* 알고리즘 언덕 오르기 / 최적우선 탐색 방법 출발노드로부터 그 노드까지 도달하는데 소비한 비용은 고려하지 않았다. 출발 노드에서 시작하여 목표노드까지의 최적의 경로를 탐색하는 것을 보장하지 못한다. A* 알고리즘은 출발 노드로부터 목표노드까지의 최적 경로를 탐색 35 / 45 평가 함수 f(n) = g(n) + h(n) g(n) : 출발노드로부터 노드 n 까지의 경로 비용 h(n) : 노드n으로부터 목표노드 까지의 경로 비용 36 / 45 평가 함수 (예측비용 사용) ^ ^ f(n) = g(n) + h(n) g(n) : 출발노드로부터 노드n까 지의 경로 비용 ^ h(n) : 노드n으로부터 목표노드 까지의 예측 경로 비용 37 / 45 A*-알고리즘 1/2 1. 출발 노드를 OPEN에 삽입 (^f을 계산하여 첨부) 2. OPEN에 남은 노드가 있으면 다음을 반복 (1)^f 이 최소인 노드를 꺼내어 CLOSED에 넣는다. (노드n) (2) 노드n이 목표 노드라면 탐색 성공 (3) 노드n을 확장하여 후계 노드 n1, n2, …, ni를 생성 (4) 후계 노드들의 평가 함수 ^f(n1),^f(n2), …,^f(ni) 를 계산 38 / 45 A*-알고리즘 2/2 (5) 후계노드 nk, k=1, …, i 에 대해 a.동일한 노드가 OPEN에 존재하는 경우(nold라고 가정) ㄱ) ^f(nold)≤^f(nk)라면 nk를 무시 ㄴ) ^f(nold)>^f(nk)라면 nold를 OPEN에서 제거, nk를 OPEN에 삽입 b.동일한 노드가 CLOSED에 존재하는 경우(n’old라고 가정) ㄱ) ^f(n’old)≤^f(nk)라면 nk를 무시 ㄴ) ^f(n’old)>^f(nk)라면 n’old의 부모 포인터 및 평가 함수 값을 노드n 및 ^f(nk)로 바꾸고, n’old의 모든 후계 노드의 평가 함수 값을 수정한다. c. 동일한 노드가 존재하지 않으면 OPEN에 추가 3. 탐색 실패 39 / 45 8-퍼즐 문제 2 3 1 1 8 4 8 7 6 5 7 초기상태 2 3 4 6 5 목표상태 40 / 45 비용 : 조각을 이동하는 횟수 g(n) : 초기 상태로부터 조각을 이동한 횟수 ^h(n) : 1~8번 조각 중 정해진 위 치에 있지 않은 조각의 수 41 / 45 탐색 과정 ^h(n) : 실제로 필요한 조각의 이동 횟수는 정 위치에 있지 않은 조각 수보다 더 많으므로 ^h(n) h(n) 이다. 항상 최소 비용 경로를 탐색하게 된다. 42 / 45 2 33 3 1 8 44 7 6 55 ② 2 3 3 1 8 4 7 6 5 1 2 3 3 8 4 7 6 5 1 2 3 5 7 8 4 6 5 2 8 3 4 4 1 7 6 5 ① 2 3 5 1 8 4 7 6 5 ③ ④ 1 2 3 8 4 3 7 6 5 43 / 45 최단 경로 탐색 문제 ^h(n) : 직선 거리는 실제 거리보다 길지 않으므로 항상 ^h(n) h(n) 이다. 최단 거리 경로를 탐색하는 것을 보장한다. 44 / 45 6 b 5 5 a 4 c 7 a 6.5 9 c 3 8 d 3 3 b e g f 1 e 2.5 g 7 d 4 f 1 5+6.5 =11.5 a b 9+6.5 =15.5 c b 14+6.5 =20.5 4+7 =11 12+3 =11.5 d b 7+4 =11 11 e f 10+1 =11 g 45 / 45