코드: 게임 상태 노드 + DFS
핵심 세 함수:
possible_moves(state)— 현재 상태에서 가능한 모든 다음 상태 (자식들)is_terminal(state)— 게임 끝났나? 끝났으면 승자도 알려줌count_nodes(state, depth)— DFS로 트리 노드 개수 세기 (재귀!)
실행 결과를 보면 지수 폭발이 한눈에:
- 깊이 1: 10 노드
- 깊이 5: 16,114 노드 (1600배)
- 깊이 9: 887,338 노드 (90만 개) — 틱택토 전체 분석에 가까움
💡 DFS 재귀 패턴
count_nodes는 자기 자신을 호출. "현재 노드 1개 + 모든 자식들 노드 수 합". 이 단순한 재귀가 트리 전체를 훑어. 다음 챕터의 minimax도 똑같은 재귀 패턴이야 — 단지 "노드 세기" 대신 "점수 계산".
틱택토는 90만 노드면 끝. 1초 안에 다 볼 수 있어. 그래서 틱택토 AI는 무패가 가능해. 다음 페이지에서 바둑으로 가면 이야기가 완전히 달라지지.
PYTHON