시즌 1 · 알파고편 / PART 2 · PART 2 · 게임을 푸는 첫 방법: 탐색 / Ch 5 · 틱택토 minimax 직접 구현

사람이 실수하면 — AI의 응징

시나리오 1 결과를 보면 AI가 정확히 이긴다:

  • O가 변에 두는 약한 응수 → 점수 1 (X 이길 확정)
  • X는 정확히 5수에 가로 (0,0)-(1,1)-(2,2) 대각선 완성
  • O가 막아도 다른 위협을 만들어서 결국 이김

시나리오 2:

  • O가 대각 코너 (2,2)에 두면 → 점수 1 (X 여전히 이김!)
  • 코너 응수가 보통 강한 응수로 알려졌는데, X (0,0) 후에는 (1,1) 가운데가 유일한 무승부 보장 응수
  • O가 (2,2)에 두면 X가 (1,1) 가운데로 이중 위협을 만들어 결국 이김
🎯 이 결과의 의미

이 AI는 두 가지를 동시에 보장:

  1. 지지 않음 — 어떤 상대든 최소 무승부 보장 (단, 최선의 응수 둘 때)
  2. 실수 응징 — 상대가 최선 외 다른 수를 두면 즉시 이길 길로 끌고 감

이게 이론적 최적 게임. X (0,0) 시작 후에는 O가 정확히 (1,1)만 무승부 가능. 다른 8자리 응수는 모두 X 승으로 끝남. minimax는 이 모든 경로를 정확히 계산.

💡 직접 실험해봐

위 코드 수정해서:

  • X가 가운데 (1,1) 시작 → O 최선 응수 알아보기
  • X가 변 (0,1) 시작 → 어떤 결과인가?
  • 중간 상황 만들어서 AI 다음 수 예측

좋아하는 시작 상황을 board 리스트에 직접 넣어서 실험해봐.

좋아. 우리 작은 게임에서는 minimax가 완벽하게 동작. 이걸로 끝낼 수 있으면 좋겠는데... 바둑에 적용하려고 하면 어떻게 될까?

PYTHON