커넥트포 — 같은 알고리즘, 다른 규칙
커넥트포 (Connect Four) — 7x6 보드, 4개를 가로/세로/대각선으로 일렬.
📖 커넥트포 규칙 차이
- 중력: 돌은 위에서 떨어져 가장 아래 빈자리에 놓임
- 가능한 수 = 7개 (열 선택), 위치는 자동 결정
- 승리 조건: 4개 일직선 (가로/세로/대각선)
- 무승부: 보드 가득
🎯 인터페이스 구현 — 어떻게 바뀌나
class Connect4:
def possible_moves(self):
# 빈 자리가 있는 열들
return [c for c in range(7) if self.board[0, c] == 0]
def play(self, col):
# 그 열의 가장 아래 빈자리에 돌 떨어짐
new = self.board.copy()
for r in range(5, -1, -1):
if new[r, col] == 0:
new[r, col] = self.turn
break
return Connect4(new, ...)
def is_terminal(self):
return self._check_4_in_a_row() or board_full()
# to_input(), winner_value(): 거의 동일
"가능한 수"가 자리 (r, c) → 열 번호 (0~6)로 바뀜. 그 외 같음.
💡 신경망 출력 크기 차이
- 틱택토: 9 자리 → policy 9개
- 커넥트포: 7 열 → policy 7개
- 바둑 7x7: 49 자리 → policy 49
- 바둑 19x19: 361 자리 → policy 361+1 (pass)
같은 신경망 구조, 마지막 출력 크기만 조정.
📊 커넥트포 AlphaZero 학습 (가상 시뮬)
AlphaZero 알고리즘을 커넥트포에 적용하면 예상:
- ~10분 학습 (3x3 틱택토보다 큼)
- 완벽한 플레이 도달 (커넥트포는 풀려있음)
- 좋은 오프닝 + 함정 전술 학습
커넥트포는 1988년에 풀린 게임 — 정답: 첫 수 가운데 두면 1번 플레이어 승. AlphaZero도 이 결론에 도달.
📖 다양한 게임에서 AlphaZero 성과
DeepMind 후속 연구 + 오픈소스 구현:
- 오델로/리버시: 격파 (사람 챔피언 압도)
- 구오: 격파 (작은 보드 정복)
- 험브로닉스: 자체 학습 가능
- 스타크래프트(부분): 적용 가능 (AlphaStar는 별도)
두 명 둘러 가며 두는 결정적 게임이면 거의 다 가능. 진짜 일반.