사람이 실수하면 — 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는 두 가지를 동시에 보장:
- 지지 않음 — 어떤 상대든 최소 무승부 보장 (단, 최선의 응수 둘 때)
- 실수 응징 — 상대가 최선 외 다른 수를 두면 즉시 이길 길로 끌고 감
이게 이론적 최적 게임. X (0,0) 시작 후에는 O가 정확히 (1,1)만 무승부 가능. 다른 8자리 응수는 모두 X 승으로 끝남. minimax는 이 모든 경로를 정확히 계산.
💡 직접 실험해봐
위 코드 수정해서:
- X가 가운데 (1,1) 시작 → O 최선 응수 알아보기
- X가 변 (0,1) 시작 → 어떤 결과인가?
- 중간 상황 만들어서 AI 다음 수 예측
좋아하는 시작 상황을 board 리스트에 직접 넣어서 실험해봐.
좋아. 우리 작은 게임에서는 minimax가 완벽하게 동작. 이걸로 끝낼 수 있으면 좋겠는데... 바둑에 적용하려고 하면 어떻게 될까?
PYTHON