Ⅰ. 서론
전형적인 스도쿠 퍼즐(sudoku puzzle)은 9×9 빈칸을 3×3의 9개 블록으로 분할한 형태이다. 즉, 1부터 9까지의 9개 아라비아 숫자를 각각 9개 씩 빈칸에 넣을 수 있으며, 사전에 빈칸을 채운 실마리(clue)가 주어진 상태에서 각 행, 열과 블록에 [1, 2, ⋯, 9]의 숫자가 중복되지 않아야 하는 규칙을 충족하도록 나머지 빈칸을 채우는 퍼즐문제이다.[1] 반면에 가꾸로(Kakuro, カックロ) 퍼즐은 행과 열의 크기가 일정하지 않으며, 실마리는 박스 형태의 합 실마리(sum clue, C)로 주어지며, 들어갈 수 있는 아라비아 숫자는 전통적인 스도쿠와 동일하게 1부터 9까지이다.[2,3]
가꾸로 퍼즐은 스도쿠의 행과 열에 단지 한 번만 숫자가 나오도록 하는 방식과 동일하게 각 빈 셀(칸)이 행과 열이 교차하는 교차 합(cross sum) 형태로 2개 박스의 합을 충족하도록 숫자를 배정해야만 한다.
가꾸로 퍼즐을 푸는 방법은 가능한 경우 수 모두를 대입해 보는 전수탐색 법(brute-force)의 일종인 조합법[4], 박스 법[5] 또는 정수계획법[6,7]이 알려져 있으나 어떤 규칙을 적용하여 퍼즐을 푸는 방법은 알려져 있지 않아 NP-완전(NP-complete)의 난제로 분류된 문제이다.[6,7]
가꾸로 퍼즐의 박스 크기는 2개에서 9개까지 가능하며, Daily-Sudoku[4]에서는 일부 데이터만 제시한 반면에 본 논문에서는 모든 박스 크기의 합에 들어갈 수 있는 숫자 조합들을 대상으로 들어갈 수 없는 숫자 규칙을 도출하였으며, 이 규칙에 기반하여 가꾸로 퍼즐을 푸는 다항시간 알고리즘을 제안한다. 제안된 알고리즘은 합 실마리 개수 n개에 대해 O(n) 복잡도로 수행되는 다항시간 알고리즘이다. 2장에서는 가꾸로 퍼즐에 관한 개념을 KP-1 퍼즐 문제를 대상으로 고찰해 본다. 3장에서는 박스 크기와 합 실마리에 대한 들어갈 수 없는 숫자에 대한 규칙을 유도하고, 이 규칙에 기반하여 가꾸로 퍼즐을 푸는 알고리즘을 제안한다. 4장에서는 벤치마킹 실험 데이터를 대상으로 제안된 알고리즘의 적합성을 검증한다.
Ⅱ. 관련 연구와 문제점
그림 1에서는 KP-1 가꾸로 퍼즐[8,9]과 정답을 보여주고 있다. 여기서 대각선이 그어진 셀은 합 실마리(sum clue)를 의미하며, 우측 상단은 행 박스를, 좌측하단은 열 박스의 합을 의미한다. 일 예로 2행 1열(2,1)의 ‘16’은 (2,2)와 (2,3)의 2개 박스의 합이 16이 되는 79 또는 97(동일 숫자 조합인 88은 제외)이 들어갈 수 있음을 의미한다. 이와 같이 (2,2) 셀은 행은 ‘16’의 박스 크기 2, 열은 ‘23’의 박스 크기 3이 교차하는 숫자가 들어가야만 한다. 따라서 가꾸로 퍼즐을 교차 합(cross sum) 퍼즐이라고도 한다.
그림 1. KP-1 가꾸로 퍼즐 문제
Fig. 1. Problem of Kakuro puzzle KP-1
Daily-Sudoku[4]에서는 박스 크기에 따른 들어갈 수 있는 숫자 조합을 일부 데이터만 제시하였다. 반면에 박스 크기(B)는 [2,9], 들어갈 수 있는 아라비아 숫자는 1부터 9까지 9개이므로 9개 중에서 B개를 뽑는 조합(combination)의 경우 수로 볼 수 있다. 따라서 가능한 경우 수는 9C2 + 9C3 +⋯+9C9 = 502개 이다. 이에 대해 Wikipedia[10]에서는 Cage total tables로 박스 크기와 합에 따른 들어갈 수 있는 숫자 조합을 제시하였다. 이들 조합을 이용하여 스도쿠 퍼즐을 푸는 방법과 동일하게 빈 셀에 해당 조합 전체를 표기하는 것은 불가능에 가깝다. 일 예로 박스 크기=5, 합=25인 경우 12개의 숫자조합이 들어갈 수 있다. 따라서 이 조합법 이외에 보다 간단한 방법을 적용하여 퍼즐을 풀 수 있는 알고리즘 개발이 요구되고 있다.
Ⅲ. 마법 규칙 기반 실마리 후보 결정 알고리즘
가꾸로 퍼즐은 실마리 숫자가 주어지지 않고 단지 특정 블록 크기에 대한 합(sum)으로 실마리(sum clue, C)가 주어진다. 따라서 특정 블록 크기에 합으로 들어갈 수 있는 숫자와 들어갈 수 없는 숫자들을 구분해야만 한다. 이에 따라 본 장에서는 그림 2와 같이 마법의 규칙을 도출하였다. 도출된 마법의 규칙에 기반하여 알고리즘이 수행된다. (a)는 블록 크기 2인 경우 들어갈 숫자 조합과 들어갈 수 없는 숫자들을 도출한 경우이다. 이는 Wikipedia[9]에서 제시된 결과와 동일함을 알 수 있다. 결론적으로 블록 크기 2인 경우 합은 3부터 17까지 (3 ≤ C ≤ 17)이며, 각 C에 대해 들어갈 수 없는 숫자들이 최종적으로 도출되었다. 블록 크기 2에 들어갈 수 있는 숫자의 경우 수는 \(\begin{align}\binom{9}{2}={ }_{9} C_{2}=\frac{9!}{7!2!}=\frac{9 \times 8}{2}=36\end{align}\) 가지 경우수이다. 따라서 블록 크기는 2 ≤ B ≤ 9로 모든 블록 크기에 대한 경우 수는 9C2 + 9C3 +⋯+ 9C9 = 502가지 이다. 이와 같이 502가지 경우 수(숫자 조합)에 대해 (b)와 같이 구하였으며, 각 블록 크기에 대한 합에 들어갈 수 없는 숫자들을 추출하여 규칙을 도출하였다. 이들 도출된 규칙들을 종합하여 (c)에 제시하였다.
그림 2. 마법의 규칙 유도
Fig. 2. Derivation of Magic rule
그림 2의 (c)는 합 실마리(sum clue, C)의 범위 밖에 존재하는 C 미만 또는 초과하는 어느 한쪽(one-side) 숫자들을 삭제하는 규칙이다. 즉 합을 충족시키지 못하는 숫자들을 먼저 삭제하여 후보 숫자들을 축소시킨다. 따라서 제안된 알고리즘은 첫 번째로 빈 칸에 1에서 9까지의 모든 숫자들을 표기한다. 두 번째로 마법의 규칙 표를 참조하여 합 실마리의 블록크기에 대해 숫자들을 삭제한다. 세번째로 블록 크기 내의 숫자들의 조합으로 합 실마리를 충족시키지 못하는 C 미만과 초과 양쪽(dual-side) 숫자들을 삭제한다. 이로부터 유일한 숫자가 존재하는 셀(naked single, NS)또는 해당 블록에서 유일 숫자를 포함한 셀(hidden single, HS)에는 해당 숫자를 실마리로 확정한다. 제안된 알고리즘을 마법 규칙 기반 실마리 후보 결정 알고리즘(magic rule-based candidate clue decision algorithm, MRCDA)이라 하며, 그림 3과 같이 수행된다.
그림 3. 마법 규칙 기반 실마리 후보 결정 알고리즘
Fig. 3. Magic rule-based candidate clue decision algorithm
제안된 MRCDA를 그림 1의 KP-1에 적용한 결과는 그림 4에 제시하였다. (a)는 합 실마리(대각선의 우상․좌하)가 어느 블록을 의미하는지에 대해 해당 블록을 표기(우상은 행, 좌하는 열)한 결과이다. (b)는 빈 칸(셀)에 1부터 9까지 숫자들을 표기한 후, 합 실마리 범위의 미만과 초과 숫자들을 삭제하기 위해 마법의 규칙을 적용하는 과정으로 행을 우선하여 수행하고, 열에 대해 수행하였다.
그림 4. KP-1에 관한 MRCDA
Fig. 4. MRCDA for KP-1
여기서 NS 또는 HS가 존재하면 해당 셀의 실마리를 확정하고 이 실마리가 포함된 블록 내의 실마리 숫자를 삭제한다. (c)는 합 실마리 값을 기준으로 블록 내의 숫자 조합으로 합 실마리 값 미만과 초과 숫자들을 삭제하는 과정이다. 이 과정에서도 NS와 HS를 적용하여 실마리를 확정한다.
Ⅳ. 실험 결과 및 분석
본 장에서는 그림 5의 실험 데이터들을 대상으로 3장에서 제안된 MRCDA를 적용하여 본다.
그림 5. 실험 데이터
Fig. 5. Experimental data
그림 5의 실험 데이터들을 대상으로 제안된 MRCDA를 적용한 결과는 그림 6에 제시하였다.
그림 6. 실험 데이터에 관한 MRCDA
Fig. 6. MRCDA for Experimental data
본 장에서 거론된 6개의 실험 데이터 모두에서 MRCDA는 원문에서 밝힌 해와 일치하는 결과를 얻었다.
Ⅴ. 결론
본 논문에서는 전수탐색 법이나 선형계획법 이외에는 퍼즐을 푸는 방법이 알려져 있지 않은 가꾸로 퍼즐을 다항시간으로 풀 수 있는 마법의 규칙을 제시하였다.
제시된 마법의 규칙에 기반하여 행과 열의 박스에 대해 합 실마리 미만이나 초과의 어느 한 쪽에 들어 갈 수 없는 숫자들을 삭제하였다. 다음으로 합 실마리 값에 기반하여 미만이나 초과의 양쪽에 들어갈 수 없는 숫자들을 삭제하였다. 이 결과 유일한 숫자가 존재하는 NS 또는 HS에 대해 실마리 숫자를 확정하는 방법으로 가꾸로 퍼즐을 풀 수 있었다.
제안된 알고리즘을 7개의 벤치마킹 실험 데이터에 적용한 결과 합 실마리 개수 n에 대해 O(n) 복잡도로 모든 퍼즐에 대해 정확하게 풀 수 있음을 보였다.
References
- J. F. Crook, "A Pencil-and-Paper Algorithm for Solving Sudoku Puzzles," Notices of the American Mathematical Society, Vol. 56, No. 4, pp. 460-468, Apr. 2009.
- Conceptispuzzles, "Kakuro History," https://www.conceptispuzzles.com/ko/index.aspx?uri=puzzle/kakuro/history, Retrieved Jul. 2023.
- C. Timmerman, "The Everything Kakuro Challenge Book: Over 200 Brain-teasing Puzzles With Instruction for Solving," Everything; CSM edition, ISBN-13: 978-1598690576, Feb. 2006.
- Daily-Sudoku, "Kakuro Rules," https://www.dailysudoku.com/kakurorules/, Retrieved Jul. 2023.
- B. Denis, "Pattern-Based Constraint Satisfaction and Logic Puzzles," arXiv:1304.1628, pp. 1-487, Apr. 2013.
- T. Seta, "The Complexities of Puzzles, Cross Sum and Their Another Solution Problems," Senior Thesis of Department of Information Science, the Faculty of Science, the University of Tokyo, pp. 1-43, Feb. 2002.
- Y. Takayuki and Seta. Takahiro, "Complexity and Completeness of Finding Another Solution and Its Application to Puzzles," IEICE Transactions on Fundamentals of Electronics Communications and Computer Sciences, E86-A, Vol. 5, pp. 1-8, May 2003.
- Wikipedia, "Kakuro," https://en.wikipedia.org/wiki/Kakuro, Retrieved Jul. 2023.
- E. Kalvelagen, "Solving Kakuro puzzles as a MIP," http://yetanothermathprogrammingconsultant.blogspot.com/2017/02/solving-kakuro-puzzles-as-mip.html, Feb. 2017.
- Wikipedia, "Killer Sudoku," https://en.wikipedia.org/wiki/Killer_sudoku, Retrieved Jul. 2023.
- A. Crain, "How to Solve Kakuro," https://www.wikihow.com/Solve-Kakuro, Jan. 2023.
- Puzzle-Kakuro, "Kakuro," https://www.puzzlekakuro.com/, Retrieved Jul. 2023.
- Conceptispuzzles, "Kakuro Rules," https://www.conceptispuzzles.com/ko/index.aspx?uri=puzzle/kakuro/rules, Retrieved Jul. 2023.
- W. S. Kim, "Printable Number Puzzles," https://www.puzzles-to-print.com/number-puzzles/PDFs/easy-kakuro.pdf, Retrieved Jul. 2023.