코드: 완성된 MCTS — best_move 함수
완성된 MCTS의 두 가지 테스트:
🎯 테스트 1: 빈 보드
- 1000번 iteration. 가운데 (1,1)에 191번 방문 (19%) — 최다
- 코너 (2,2)도 171번 — 2위 (코너도 강한 수)
- 약한 변 자리 (0,1)는 64번만 시도
- MCTS의 답: (1,1) — 정답
🎯 테스트 2: 응징 시나리오
X(0,0), O(0,1) 후 X 차례. PART 2 Ch 5 §5와 같은 상황. minimax는 (1,1)이 정답이라고 했지.
- 2000번 iteration 중 (1,1)에 725번 방문 (36%)
- (1,1) 승률 85.9% — 압도적
- 2위 (2,0) 519번 방문, 83% 승률 — 대각 코너도 강함
- MCTS의 답: (1,1) — minimax와 일치
MCTS가 minimax와 같은 정답을 다른 방식으로 찾았다. 끝까지 안 보고, 통계로.
💡 MCTS의 강점
- 평가 함수 불필요 — 게임 규칙만 알면 됨
- 시간 가변 — iteration 수로 조절 (1000번이든 10만 번이든)
- 점진적 개선 — 더 많이 돌리면 더 정확
- 비대칭 트리 — 좋은 가지로 깊이 들어감
이게 minimax의 두 약점(평가 함수, 분기 인자)을 동시에 우회. 알파고가 이걸로 도약.
다음 챕터에서 같은 MCTS를 7x7 바둑에 적용해 minimax 7x7과 정면 대결.
PYTHON