1. Search
- 문제 해결
- 어떤 문제에 답을 찾기 위함이다. ->
어떤 행동을 취해야 하는가?
에 대한 논의
- 예시
1.1 State Space (상태 공간)
- 어떤 문제의 상태와 행동을 Graph로 표현.
- 서로 다른 문제 상황을 Vertices로 나타낸다.
- 일반적으로 시작 상태를 S, 목표 상태를 G로 정의한다.
- 행동을 취하고 적용하는 것을 Edges로 나타낸다.
- 일반적으로 다음과 같은 표기법을 사용한다.
- N - Nodes(states)
- A - Arcs(actions)
- S - Start state
- G - Goal state
- 상태와 이 상태 사이의 행동, 시작과 목표를 정해야 한다.
1.1.1 상태 공간을 사용하는 예
-
8-puzzle
-
Inference
-
Route finding
1.1.2 State Space Search
1.2 Depth-First Search, DFS (깊이 우선 탐색)
- X=0 open = {A}, closed = {}
- X=A open = {B,C,D}, closed = {A}
- X=B open = {E,F,C,D}, closed = {A,B}
- X=E open = {F,C,D}, closed = {A,B,E} ->더 이상 탐색이 불가능해 부모 노드로 회귀
- X=F open = {G,C,D}, closed = {A,B,E,F}
- G
A->B->E->F->G의 경로로 G까지 도달,
여기서,
부모 노드가 무엇인지를 기반으로 역추적한다면
G<-F<-B<-A
1.3 Breadth-First Search, BFS (넓이 우선 탐색)
- X=0 open = {A}, closed = {}
- X=A open = {B,C,D}, closed = {A}
- X=B open = {C,D,E,F}, closed = {A,B}
- X=C open = {D,E,F,G}, closed = {A,B,C} ->G로 갈 수 있지만 BFS이므로 D부터 탐색
- X=D open = {E,F,G}, closed = {A,B,C,D}
- X=E open = {F,G}, closed = {A,B,C,D,E}
- X=F open = {G}, closed = {A,B,C,D,E,F}
- G
A->B->C->D->E->F->G의 경로로 G까지 도달,
여기서,
부모 노드가 무엇인지를 기반으로 역추적한다면
G<-C-<-A
화살표 하나가 동등한 가치를 가진다면
주어진 상황에 대해서는 BFS가 더 효율적이라고 할 수 있다.
1.4 Solution path
- 부모 노드의 정보와 State를 함께 저장한다.
- State = ((State name), (Parent state), (Evaluation) ... )
- 1.2과 1.3에서 부모 노드가 무엇인지를 기반으로 역추적이 해당 방식이다.
1.5 DFS VS BFS
b를 하나의 상태에서 몇개의 상태로 전이가 가능한지를 나타내고,
d를 탐색 깊이라고 한다면 DFS와 BFS는 다음과 같은 복잡도를 가지게 된다.
여기서 Optimal은 최단 경로를 찾을 수 있는가를 나타낸다.
1.6 Iterative Deepeming Search, IDS
DFS를 기반으로 탐색을 진행하되 깊이의 한계, 즉 각 탐색 단계에서 Depth limit의 한계를 정하고 이를 1씩 늘려가며 진행한다.
IDS 방식의 경우
- 시간 복잡도 = O(b*d)
- 공간 복잡도 = O(b*d)
- 최단 경로 탐색 : 가능
따라서 해당 방법이 DFS와 BFS의 단점을 보완하고 장점만 취할 수 있는 탐색 방법이다.
--9/7 인공지능, Dongguk Univ. C.S.E
잘 보고 갑니다 !