Transcript 강의 교안
Artificial Intelligence
Chapter 4
문제풀이 방식
김성신
컴퓨터전자통신학부
연변과학기술대학교
4.1 그래프탐색
4.1.1 그래프탐색과정
- 상태공간에서 해(solution, 목표상태
를 묘사하는 표현이 얻어지는 과정)를
얻는 것을 설명하기 위해 그래프 사용
4/25/2020
-
그래프 이론
1)
출발노드 : 초기상태 묘사
2)
후계노드 생성 : 어떤 노드(부모노드)에 해당하는 상
태묘사에 적용 가능한 연산자 적용하므로 생성.
3)
후계노드의 포인터(pointer) : 후계노드는 부모노드
를 가리키는 포인터를 가지고 최종목표노드 찾아졌
을 때 포인터 이용.
4)
후계노드가 생성되면 _________인지
확인한다.
목표노드
- 아닐 때 :노드
_________(후계
생성)
확장
- 맞을 때 : _______를
포인터 역추적하여 출발노드까지 도
착.(=> 풀이순서 알수 있음)
4/25/2020
4.1.2 탐색종류
정보
사용
목적 임의의 경로 탐색 최적 경로 탐색
맹목적 탐색
깊이 우선 탐색
넓이 우선 탐색
균일비용 탐색
경험적 탐색
언덕 오르기 기법
최적우선 탐색
A*알고리즘
4/25/2020
맹목적 탐색방법
4.2 ________
-
탐색과정에 미래에 대한 아무 정보
도 사용하지 않음
-
탐색과정 표현 : 그래프(트리) 이용
-
깊이우선, 넓이우선, 균일비용 방법
4/25/2020
4.2.1 깊이우선 방법
-
해가 존재할 가능성이 있으면 같은 방향으로 계속 탐
색
-
목표상태까지의 과정
1
3
2
5
6
4
7
8
9
4/25/2020
장점
저장공간적게 사용
- 한 경로의 노드들만 기억 하므로 _______
(LIFO)
-
목표상태가 깊은
________에
있을 때 해를 빨리 구할 수 있
노드
다.
단점
-
해가 없는 경로에 깊이 빠질 수 있다.
=> 해결책; _______________________
깊이 제한(depth bound)
-
얻어진 해가 최단경로가 된다는 보장이 없다.
4/25/2020
용어 설명
- 확장 : 어떠한 상태의 모든 후계상태
를 생성하는 것
- OPEN : 확장할 노드들을 저장하는 리
스트
- CLOSED : 이미 확장된 노드들을 저장
하는 리스트
4/25/2020
출발
S를 OPEN에 넣는다.
OPEN이 비였나?
예
실패
아니오
OPEN에서 처음 노드를
제거하여 CLOSED에 넣는다.
이 노드를 n이라고 부른다.
예
n의 길이가 깊이
제한과 같은가?
아
n을 확장한다.니
후계 노드들을
OPEN의 앞에 넣는다.
오
이들로부터
n으로 향하는 포인터를 첨부한다.
아니오
후계 노드들 중 목표
노드가 있나?
예
4/25/2020
성공
4/25/2020
4/25/2020
4/25/2020
4/25/2020
4/25/2020
4/25/2020
4/25/2020
[예제 ]
8-퍼즐 문제와 풀이 과정 : p57-59
4/25/2020
4.2.2 넓이 우선 방법
-
생성된 순서에 따라 노드 확장(FIFO)
1
3
2
5
6
4
7
8
9
4/25/2020
장점
목표에 이르는 최단의 경로를 찾을 수 있
다.
가지의 수가 많지 않고 얕은 깊이에 해가
존재할 경우 특히 유리
단점
탐색시간이 비현실적으로 길어질 가능성
지나온 모든 노드를 저장하게 되므로 기
억공간에 대한 요구가 과중
4/25/2020
흐름도:
출발
S를 OPEN에 넣는다.
OPEN이 비였나?
예
실패
아니오
OPEN에서 처음 노드를
제거하여 CLOSED에 넣는다.
이 노드를 n이라고 부른다.
n을 확장한다. OPEN의 끝에
후계 노드들을 넣는다.
포인터로써 n을 가리키게
한다.
아니오
후계 노드들 중 목표
노드가 있나?
예
4/25/2020
성공
4/25/2020
4/25/2020
4/25/2020
4/25/2020
4/25/2020
4/25/2020
[예제 ]
8-퍼즐 문제와 풀이 과정 : p61-62
4/25/2020
4.2.3 균일 비용 방법
- 출발 노드로부터 경로비용이 최소인 노드 확장
4/25/2020
g(ni) = g(n) + C(n, ni)
-
g(n) : 출발 노드로부터 노드 n까지의 경로비용
-
C(n, ni) : 노드 n에서 노드 ni로 이동하는데 소비되는 비용
-
후계 노드 Ni의 비용은 노드N의 최소 경로 비용에 노드N과
후계 노드Ni 사이의 경로 비용을 합한 것
g(Ni) = g(N) + C(N, Ni)
-
최소 비용 경로의 탐색 : g(N)이 최소인 노드N을 우선 선택
4/25/2020
균일비용 방법(uniform-cost search)의 예
ex) a,b,c,d,e,f,g 라는 7개의 도시를 연결하는 도로망
도시 a를 출발하여 도시 g까지 가는 경로를 찾고자 한다. 도시a
에서 g까지 가는 최단 경로를 찾아라.
- 상태 : 현재 위치한 도시
- 연산자 : 각 도시로 이동하라는 지시
[풀이] p.64-65
4/25/2020
[풀이] n(c,p) n:노드, C:경로비용, P:부모노드에 대한 포인터
OPEN
CLOSED
초기
{ a(0, NULL) }
{}
1단
계
{ c(4,a), b(5,a) }
a(0,NULL)
{____________}
d(7,c)
2단 { b(5,a), _________,
c(4,a) }
{ a(0,NULL), _________
e(12,c)
계
______ }
…
…
4/25/2020
4.3 경험적 탐색방법
맹목적
탐색의 문제점
상당히 소모적인 방법
너무 많은 노드 확장 -> 비 실용적
연산
시간 및 컴퓨터 메모리의 제
한 등의 문제
경험적
탐색방법 등장
4/25/2020
경험적 지식(heuristic information)
- 해에 대한 완벽한 정보는 아니지만, 많은 경우 유용하게
사용할 수 있는 경험적으로 얻은 지식
경험적 탐색(heuristic search)
- 목표 상태를 보다 신속하게 탐색하기 위해 경험적 지식
을 활용하는 탐색 방법.
- 평가 함수를 사용(Evaluation function)
평가 함수
- 어떤 상태가 주어졌을 때 그 상태를 거쳐 가는 것이 목표 상태로
가는 데 얼마나 바람직한가를 나타내는 함수
해를 향해 가는데 필요한 비용, 해로 향하는 경로상에 존재할 가능
성등
4/25/2020
4.3.1 언덕 오르기 방법
g(N) : 출발 노드로부터 현재 상태를 나타내는 노드N까지의
경로 비용
h(N) : 노드N으로부터 목표 노드까지의 경로 비용
아직 탐색하지 않은 경로이므로 정확한 h(N) 값은 알 수 없다.
예측 비용 ^h(N) 사용 (경험적 지식에 의한)
4/25/2020
[토의 내용 : 등산가 문제]
어떤 사람이 초행길의 산을 등산하는 도중 짙은 안개를 만났
다. 지도도 없고, 사람이 다니는 길 도 없다. 다만 나침반을
가지고 있으며, 산의 정상에 오르고자 한다. 어떻게 정상에
도달할 수 있겠는가?
상태 : 좌표 및 고도
연산자 : 동, 서, 남, 북,
방향으로 이동
4/25/2020
언덕 오르기 기법을 이용한 해결
노드의 확장 : 현재 위치를 기준으로 해서 각 방향의
눈으로 확인할 수 있는 거리만큼 떨어진 곳의 높이를
판단
목표상태인가의 검사 : 만일 모든 위치가 현 위치보다
낮으면 그 곳을 정상이라 판단
후계노드의 선택 : 현 위치가 정상이 아니라면
확인된 위치 중 가장
높은 곳으로 이동
4/25/2020
언덕 오르기 기법의 문제점
지역 최대치(Local maximum) 문제
- 정상 주변에 정상 보다
낮은 봉우리들이 있을 때, 그
주변 봉우리에 오 를 경우
그 곳이 정상인 것으로
판단할 수 있다.
-> 백트랙킹을 통해 다른
가능한 경로를 탐색해 보는
방안
4/25/2020
고원(Plateau) 문제
산 중턱에 존재하는
평평한 영역에 도달했을
경우 어느 방향으로
이동해도 현재 상황을
개선할 수 없다.
•
-> 동일 연산자를 반복
적용한 결과를 토대로 진행
방향을 결정하는 방안
4/25/2020
능선(ridge) 문제
• 날카로운 능선 상에 위치해
있을 때 정해진 동, 서, 남,
북 어느 방향으로
이동하더라도 고도가
낮아져서 정상으로 오판하게
되는 문제
• 이동 방향의 해상도와
관련된 문제
-> 검사 방향을 늘리거나
연산자들을 조합하여 적용한
결과를 사용하는 방안
4/25/2020
4.3.2 최적 우선 방법
목표상태에
도달하는 최적의 경로를
탐색하는 문제
OPEN
리스트 내의 모든 노드를 평가
함수 값에 따라 정렬, 가장 유망한 노드
가 OPEN의 제일 앞에 위치.
4/25/2020
4.3.3 A* 알고리즘
출발노드로부터 그 노드까지 도달하는데 소비한 비용 고려
각 노드에 대한 평가함수
f(n) = g(n) + h(n)
g(n) :출발노드로부터 노드 n까지의 경로비용
h(n) : 노드 n으로부터 목표 노드까지의 경로 비용
but, 아직 탐색하지 않은 경로이므로 경험적지식에 의한 h(n)에
대한 예측값을 h^(n)이라 하면
f^(n)=g(n)+h^(n)
여기서 h^(n) 은 노드 n으로부터 목표노드까지의 예측 경로 비용
4/25/2020
4.3.3 A* 알고리즘
A* 알고리즘 p.74 참조!!
h^이 언제나 h보다 큰 값으로 예측되지 않는 다면
A* 최소비용경로를 탐색하는 것을 보장한다.
만약 h^을 항상 0으로 한다면 균일비용 탐색과 같게 된다.
* 예제 5번, 6번 중요!!! P.76-p.80
4/25/2020
정보에 따른 분류
맹목적 탐색 :
목표 노드의 위치에 관계없이 단순히 미리 정해진
순서에 따라 탐색을 하는 방법
경험적 탐색 :
목표 노드의 위치에 대한 경험적 정보를 사용하여
확장할 노드 선택
경험적 지식 : 시행착오에 따른 경험적 지식으로, 완
벽한 것은 아니지만, 많은 경우 유용하게 사용할 수 있
는 지식
4/25/2020