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