코드: 알파-베타 minimax
실행 결과를 보면 약 30배 빨라짐. 결과는 정확히 같고.
틱택토 빈 보드 minimax는 약 55만 노드를 봐. 알파-베타는 1.8만 노드만. 97%의 노드를 안 봐도 됨. 그런데 답은 똑같이 정확.
🔑 추가된 코드는 4줄
alpha = max(alpha, v) # MAX 노드: 보장된 최소 갱신
if beta <= alpha: break # 베타 컷: 더 안 봄
beta = min(beta, v) # MIN 노드: 보장된 최대 갱신
if beta <= alpha: break # 알파 컷: 더 안 봄
알고리즘의 본질은 완전 같아. 그저 "범위 추적 + 조건문 한 줄". 그런데 효과는 30배.
💡 이론적 상한 — sqrt(b^d)
이상적인 경우(수 순서가 완벽할 때) 알파-베타는 b^d 대신 b^(d/2) 노드만 봐. 사실상 분기 인자가 b → √b로 감소한 효과. 체스(b=35)에서는 √35 ≈ 6으로 감소.
이게 1990년대 컴퓨터 체스가 인간을 넘어선 비결 — 같은 시간에 깊이를 2배로 더 볼 수 있게 됨.
그런데 "수 순서가 완벽"이라는 게 핵심. 다음 페이지.
PYTHON