Written by
nodejs-style
on
on
AI - 3 탐색 응용
AI - 3 탐색 응용
1. Game Tree
- 지난시간에 배웠던 탐색 알고리즘을 응용하여 실제 게임에 접목해보자.
\
- tic tac toe 게임에서 가능한 모든 경우들을 tree로 나타내면 위와 같다.
2. MiniMax 알고리즘
- 만약 tic-tac-toe 게임상황에서 이기는 전략을 짜고 싶다면 어떻게 해야할까?
- MiniMax알고리즘은 상대 플레이어가 항상 최선의 수를 둔다는 가정하에 이기는 전략을 찾는 알고리즘이다.
- 먼저 다른 예시를 통해 MiniMax알고리즘의 동작을 살펴보자.
- 맨 밑의 leaf node에서 상위 노드로 값을 전달하는데 Min노드 이면 작은 값을 Max노드이면 큰값을 받는다.
- MiniMax알고리즘에 따라 각 노드의 state를 0, -1, 1로 표시한다고 하면 다음과 같다.
- 이제 게임을 할 때 Max가 이기고자 한다면 이동가능한 노드중에서 항상 최선의 선택(+1)을 찾아서 나아가면 된다.
- 반대로 Min이 이기고자 한다면 이동 가능한 노드 중에서 항상 최선의 선택으로 -1을 찾아가면 된다.
- 하지만 이 알고리즘은 특정 노드에서 최선의 선택을 찾기위해 깊이 우선 탐색을 진행한다. 즉 트리의 길이가 길어지거나 선택 가능한 노드수가 증가하면 복잡도는 O(선택가능 노드수^깊이)이 된다.
from http://jsdysw.tistory.com/164 by ccl(A) rewrite - 2021-09-16 22:01:07