루빅스 큐브를 SAT로 풀다: 효율적 인코딩과 특화 솔버
초록
본 논문은 루빅스 큐브를 부울식 만족도(SAT) 문제로 변환하는 새로운 인코딩 방식을 제안하고, 변수와 절의 수를 크게 줄인 뒤, PrecoSAT 기반의 특화 SAT 솔버를 설계하여 20수준의 최적 해를 합리적인 시간에 찾는다. 기존 Kociemba 알고리즘보다 메모리 요구량은 적지만 속도는 다소 느리다.
상세 분석
이 논문은 루빅스 큐브라는 전형적인 플래닝 문제를 SAT 형식으로 모델링함으로써, 현대 SAT 솔버가 실제 퍼즐 해결에 적용될 수 있음을 실증한다. 가장 큰 공헌은 색 표현을 6개의 불리언 변수에서 3비트(또는 2비트)로 압축한 점이다. 색은 6가지이므로 로그₂6≈2.6비트만 필요함을 이용해, 각 면의 48개의 가변 면(facelet)을 144개(3비트) 혹은 96개(2비트) 변수로 표현한다. 특히 두‑phase 알고리즘의 Phase‑2 목표 상태(H‑state)에서는 상·하 면이 다른 면으로 이동하지 않음에 착안해 2비트 인코딩을 안전하게 적용한다.
다음으로 움직임(턴) 인코딩을 최적화한다. 18개의 기본 턴을 직접 인코딩하는 대신, 6개의 기본 축(u,d,l,r,f,b)과 각 축에 대한 3가지 서브턴(U, U’, U2 등)을 계층적으로 표현한다. 각 스텝 k에 대해 ‘uₖ, dₖ, …, bₖ’ 중 하나만 true가 되도록 정확히 하나(Exactly‑One) 제약을 두고, 선택된 축 변수에 대해 다시 서브턴 변수(예: Uₖ, U’ₖ, U₂ₖ)와 Exactly‑One 관계를 부여한다. 이는 절 수를 약 1/3 수준으로 감소시킨다.
제약식 구성에서도 두‑phase 알고리즘의 특성을 활용한다. Phase‑1 목표를 추가 제약으로 삽입하고, ALO(At‑Least‑One)와 AMO(At‑Most‑One) 제약을 2‑product AMO 인코딩으로 압축한다. 특히 AMO는 표준 방식( n·(n‑1)/2 절)보다 훨씬 적은 56개의 절만 필요하도록 설계되었다.
검색 공간을 더 줄이기 위해 두 번 연속 수행되는 특정 순서(예: D U와 U D)가 동일한 결과를 초래한다는 사실을 이용해, 해당 순서를 금지하는 절을 추가한다. 이는 불필요한 대칭을 제거해 SAT 풀이 속도를 높인다.
인코딩만으로는 20수준의 해를 찾기 어려워, 저자는 PrecoSAT 기반의 새로운 SAT 솔버를 개발한다. 기존 PrecoSAT의 Look‑ahead 전략을 ALO‑기반 전략으로 교체하고, AMO에 등장하는 변수들을 기준으로 문제를 여러 서브문제로 분할한다. 각 서브문제는 독립적으로 PrecoSAT에 의해 해결되며, 전체적으로는 분할정복 형태의 탐색이 이루어진다. 이 방식은 루빅스 큐브에 특화되었지만, 일반 SAT 문제에 바로 적용하기는 어렵다.
실험 결과, 제안된 인코딩과 특화 솔버를 결합하면 20수준의 최적 해를 수십 초 이내에 찾을 수 있다. 메모리 사용량은 약 10 MB로, Kociemba 알고리즘이 필요로 하는 대규모 룩업 테이블(수 GB)보다 현저히 적다. 다만 실행 시간은 Kociemba에 비해 몇 배 느리며, 솔버가 루빅스 큐브 전용으로 설계된 점이 제한점으로 지적된다.
전체적으로 이 논문은 SAT 기반 플래닝 연구에 새로운 인코딩 기법과 문제‑특화 솔버 설계 방법을 제시함으로써, 복잡한 퍼즐을 논리식으로 변환하고 해결하는 가능성을 크게 확장한다.
댓글 및 학술 토론
Loading comments...
의견 남기기