컴퓨터로 풀어내는 페그 솔리테어: 효율적인 해법 탐색과 완전 해수 계산

본 논문은 33칸 십자형 보드와 15칸 삼각형 보드를 대상으로, 컴퓨터에서 페그 솔리테어를 효율적으로 해결하고, 승리 가능한 모든 보드 상태를 저장·판별하는 방법을 제시한다. 핵심은 보드 상태를 비트 문자열로 인코딩하고, 대칭성을 이용해 중복을 제거한 뒤, 승리 가능한 상태 집합을 전수 탐색하여 437(삼각형)·839 536(중앙 게임)개의 핵심 상태만을 저장함으로써 실시간 죽음 판정과 전체 해의 수(≈4.09×10¹⁶)를 계산한다는 점이다.

저자: George I. Bell

컴퓨터로 풀어내는 페그 솔리테어: 효율적인 해법 탐색과 완전 해수 계산
본 논문은 컴퓨터 환경에서 페그 솔리테어(Peg Solitaire)를 효율적으로 해결하고, 플레이어에게 실시간으로 “죽음(dead end)” 여부를 알려주는 시스템을 설계하는 과정을 상세히 기술한다. 연구는 두 가지 대표 보드, 즉 33칸 십자형(Cross) 보드와 15칸 삼각형(Triangle) 보드를 중심으로 진행된다. 1. **보드 모델링 및 인코딩** - 각 구멍을 1비트로 표현해 N비트 정수(33비트, 15비트)로 보드 상태를 인코딩한다. - 보드의 대칭군(D₄: 8가지 변환, D₃: 6가지 변환)을 이용해 동일 대칭 클래스에 속하는 상태를 하나의 대표(mincode)로 압축한다. 이는 저장량을 크게 절감하고, 상태 비교를 빠르게 만든다. 2. **SVSS 문제 정의와 위치 클래스** - “Single Vacancy to Single Survivor”(SVSS) 문제를 정의하고, 점프가 위치 클래스(position class)를 보존한다는 정리를 소개한다. - 33‑hole 보드에서는 세 종류(A, B, C)의 SVSS 문제가 존재하고, 각각은 서로 전이 불가능한 독립적인 상태 집합을 형성한다. 삼각형 보드에서는 오직 A형만 존재한다. 3. **승리 가능한 상태 집합(Winning Positions) 생성** - 전방 탐색(Fₙ = D(Fₙ₊₁))과 역방향 탐색(Bₙ = D⁻¹(Bₙ₊₁))을 교대로 수행해, peg 수 n에 대해 가능한 모든 보드 상태 집합을 단계별로 구축한다. - 중복을 방지하기 위해 해시 테이블·이진 트리를 사용하고, 메모리 제한을 초과하지 않도록 상태를 p개의 임시 파일(모듈러 해시)로 분할 저장한다. - 15‑hole 삼각형 보드에서는 전체 승리 가능한 상태가 437개, 33‑hole 중앙 게임에서는 839 536개임을 확인했다. 이 “키 보드” 집합만을 메모리에 보관하면 현재 상태가 승리 가능한지 즉시 판단할 수 있다. 4. **죽음 판정 및 실시간 피드백** - 현재 보드 상태가 키 보드 집합에 없으면, 어떤 추가 점프를 해도 최종 1개의 peg으로 수렴할 수 없다는 의미이므로 “dead board”로 판정한다. - 이 판정은 O(1) 해시 조회로 구현 가능하므로, 웹 브라우저와 같은 제한된 환경에서도 1초 이내에 응답한다. 5. **전체 해의 수 계산** - 승리 가능한 상태들을 정점으로 하는 유향 그래프를 구성하고, 각 정점의 출입 차수를 이용해 동적 프로그래밍 방식으로 전체 해의 수를 누적한다. - 중앙 게임(33‑hole)의 전체 해는 40 861 647 040 079 968가지로 정확히 계산되었다. 이는 이전에 알려진 추정치보다 훨씬 정밀한 결과이다. 6. **구현 세부 사항 및 최적화** - 33‑hole 보드의 경우 4‑byte 정수로는 표현이 부족하므로 5‑byte 혹은 4‑byte 압축 기법(Beasley) 사용을 제안한다. - 대규모 보드(예: Wiegleb 45‑hole)에서는 22단계 이후 트리 크기가 2 billion을 초과하므로, 파일 기반 분할·병렬 처리를 통해 메모리 사용을 최소화한다. - 대칭 클래스를 고려한 최소 코드(mincode) 선택은 저장량을 약 1/8로 감소시킨다. 7. **응용 및 확장 가능성** - 제시된 방법은 다른 형태의 퍼즐(예: 무한 보드, 변형 규칙)에도 적용 가능하며, 특히 “SVSS”와 “일반 문제”(임의 시작·목표) 사이의 차이를 명확히 함으로써 문제 난이도에 따라 적절한 알고리즘을 선택할 수 있다. - 또한, 키 보드 집합을 사전으로 제공하면 모바일 앱이나 웹 기반 게임에서 실시간 힌트·경고 기능을 구현할 수 있다. 결론적으로, 이 논문은 페그 솔리테어의 상태 공간을 대칭·보완 연산을 통해 크게 축소하고, 핵심 승리 상태만을 저장·판별함으로써 실시간 피드백과 전체 해의 정확한 계산을 동시에 달성한 혁신적인 접근법을 제시한다. 이러한 기법은 퍼즐 자동 해결, 교육용 게임 설계, 그리고 일반적인 탐색 문제에 대한 효율적인 전처리 방법으로 확장될 수 있다.

원본 논문

고화질 논문을 불러오는 중입니다...

댓글 및 학술 토론

Loading comments...

의견 남기기