코드: 최선의 수 반환하기
best_move 함수가 추가된 게 핵심. minimax는 점수만 알려주는데, 실제로 두려면 "그 점수를 만드는 수"가 필요.
로직: 가능한 모든 수에 대해 minimax를 돌려본 뒤, 그중 가장 좋은 점수를 만드는 수를 고른다.
실행 결과를 보면 두 AI가 9수 끝까지 둬서 무승부. 예상 점수가 처음부터 끝까지 0 — 양쪽 다 처음부터 "비길 거라는 걸 알고" 둬.
💡 완벽한 정보 게임의 운명
완벽한 정보 게임(서로의 상태가 다 보이는 게임 — 바둑, 체스, 틱택토 등)에서는 양쪽이 최선을 두면 결과가 정해져 있어. 운이나 우연이 없거든. 그래서 두 사람이 둘 다 완벽하면 항상 같은 결과가 나와.
틱택토는 무승부. 체커도 무승부. 5x5 바둑은 흑 25집 승. 19x19 바둑은? — 모름. 너무 커서 못 풀어.
이제 또 한 가지 — minimax는 정말 모든 노드를 다 보나? 그렇지. 그래서 느려. 그런데 잠깐 — 진짜 다 봐야 할까? 다음 챕터에서 답이 나와.
PYTHON