가지치기 단계별로 — 시각화
지난 챕터 같은 트리. 위는 알파-베타가 거치는 경로. 노드 단계별 따라가보자.
-
왼쪽 MIN 노드 진입. α = -∞, β = +∞.
- 자식 잎 3 보고 → MIN의 임시값 = 3. β를 3으로 갱신.
- 자식 잎 5 보고 → MIN의 임시값 = min(3, 5) = 3. 변화 없음.
- 이 MIN 노드의 최종값 = 3.
- 루트로 돌아옴. MAX의 임시값 = 3. α = 3으로 갱신.
-
오른쪽 MIN 노드 진입. α = 3, β = +∞.
- 자식 잎 2 보고 → MIN의 임시값 = 2. β를 2로 갱신.
- 이제 β(=2) ≤ α(=3)!! → 가지치기!
- 다음 자식 잎 9 안 봄. 이 MIN 노드는 ≤2 임을 알면 충분.
- 루트의 최종값 = max(3, ≤2) = 3.
🎯 왜 9를 안 봐도 되나
오른쪽 MIN 노드가 ≤2 라는 걸 알면 충분. 왜냐하면:
- MAX는 이미 왼쪽에서 3을 확보.
- 오른쪽이 ≤2 라는 건 ≤2 보다 작거나 같다는 의미. (9를 봐도 결국 MIN이 작은 걸 골라 ≤2.)
- MAX는 3 vs ≤2 비교 후 무조건 3 선택. → 오른쪽 가지의 정확한 값은 몰라도 결정 가능.
이게 알파-베타의 본질 — "불필요한 정밀도를 안 추구".
이 작은 트리에서는 7개 노드 중 1개만 가지치기. 더 큰 트리에서는 효과가 엄청 커. 다음 페이지에서 코드로.
컴포넌트 로딩 중...