Ⅰ. 서론
숫자 연결 퍼즐(numberlink puzzle, NLP)은 m×m 행렬 보드 판에 n개의 숫자 쌍(pair of numbers)이 주어진 문제로, 숫자 쌍 간에 유클리드 거리(Euclidian distance, ED)인 직선을 긋는 것이 아닌 빈 셀을 경유하는 맨해튼 거리(Manhatton distance, MD)로 연결하는 데 있어 선들 간에 교차(crossing)가 전혀 없도록 해야 하는 규칙을 준수해야 한다.[1,2]
이와 같은 단순한 규칙을 준수해야 함에도 불구하고 NLP는 다항시간으로 해를 찾아가는 규칙(법칙)이 알려져 있지 않고 시행착오 법(trial-and-error) 또는 전수탐색법(brute-force)이나 분기 한정 법(branch-and-bound)으로 문제를 해결하고 있는 NP-완전(NP-complete) 문제로 분류되고 있는 퍼즐이다.[3-6] 즉, NLP 퍼즐을 많이 풀어 본 경험 없이는 풀기가 난해한 문제이다.
본 논문에서는 숫자 쌍 간에 ED인 직선을 긋고 교차가 발생한 교차 숫자 그룹을 대상으로 교차가 없도록 우회하는 경로를 설정하는 알고리즘을 제안한다. 제안된 알고리즘은 O(n) 수행 복잡도가 요구되는 선형시간의 정확한 알고리즘이다. 2장에서는 NLP-1 사례 데이터를 중심으로 숫자 연결 퍼즐의 개념을 고찰해 본다. 3장에서는 교차를 회피하는 우회 경로를 설정하는 알고리즘을 제안한다. 4장에서는 벤치마킹 실험 데이터를 대상으로 제안된 알고리즘의 적합성을 검증한다.
Ⅱ. 관련 연구와 문제점
그림 1에서는 NLP-1[7] 퍼즐과 정답을 보여주고 있다. 7×7 행렬 보드 판에 1부터 5까지 5개 숫자가 각각 2개씩 짝을 이루어 배치되었으며, 쌍 숫자들은 랜덤하게 배치되어 있고, 각 숫자 쌍 간 직선을 그으면 교차(crossing)가 발생한다. NLP는 숫자 쌍 간 연결을 ED인 직선이 아닌 MD로 빈 셀들을 경유하도록 선을 연결(경로)하는 문제이다. 여기서 준수해야 하는 규칙은 단 하나, 다른 연결선들과 교차하면 안된다. 그림 1의 우측은 정답을 제시하고 있다. 여기서 5개의 선들이 교차가 전혀 없도록 빈 셀들을 경유하고 있음을 알 수 있다.
그림 1. NLP-1 숫자 연결 퍼즐 문제
Fig. 1. Problem of numberlink puzzle NLP-1
주어진 NLP에 대해 퍼즐을 푸는 방법은 알려져 있지 않다. 즉, 어느 숫자 순서로 연결할 것인지에 대한 규칙(법칙)이 알려져 있지 않다. 단지 북서쪽 방법(north west method, NWM)으로 위 문제의 경우 ‘3’부터 시작하여 3,4,2,5,1 순서로 연결하는 방법으로 연결 과정에서 교차가 발생하면 다시 역추적(backtracking)하여 다른 경로를 설정하는 시행착오 법이 주류를 이루고 있다.
NLP를 쉽게 풀기 위해 다음과 같은 방법을 생각할 수 있다. NLP-1은 7×7의 행렬로 그림 1와 같이 셀을 정점으로, 인접 셀들 간에 간선을 연결한 격자 그래프(lattice or grid graph)로 변환할 수 있다. 여기서 숫자 쌍 간에 선을 연결한 경로들 간에 교차(crossing)가 되지 않아야 한다는 규칙을 충족시키기 위해 숫자들 간 이웃(간선 연결)하면 간선을 삭제한다.
그림 2. 격자 그래프 NLP-1
Fig. 2. Lattice graph of NLP-1
격자 그래프에 대해 각 정점을 단지 하나의 숫자만이 방문하는 경로를 생성하는 오일러 경로(출발지 숫자=목적지 숫자)를 n = 5개 생성하면 되는 문제로 볼 수 있다. 또한 이 문제는 최단경로를 구하는 문제가 아닌 관계로 서로 양보하면서 공평하게 최대 갈 수 있는 4개의 갈림길 중 3개의 길은 양보하고 단지 하나의 길만 확보하면 된다. 따라서 3장에서는 이러한 격자 그래프 방식을 적용한 알고리즘을 제안한다.
Ⅲ. 교차 회피 우회 경로 알고리즘
본 장에서 제안되는 알고리즘은 매우 간단하다. 먼저, 숫자 쌍 간에 유클리드의 직선(Euclidean distance)을 작도하여 교차점을 갖는 그룹을 형성한다. 다음으로 교차 그룹에 대해 최소 교차 수 숫자들을 우선하여 맨해튼 거리(Manhatton distance) 경로를 생성하고, 최대 교차 수 숫자는 교차를 회피하는 우회 경로인 외곽 정점들을 따라가는 경로를 생성한다. 생성된 경로의 간선을 삭제한다. 제안된 알고리즘을 교차 회피 우회 경로 알고리즘(cross-avoidance bypass routing algorithm, CABRA)이라 하며, 그림 3과 같이 수행된다.
그림 3. 교차 회피 우회 경로 알고리즘
Fig. 3. Cross-avoidance bypass routing algorithm
제안된 CABRA를 그림 1의 NLP-1에 적용한 결과는 그림 4에 제시하였다. NLP-1은 7×7 격자에 1부터 5까지 5개 숫자 쌍이 존재하는 문제로, 각 숫자 쌍 간에 유클리드 거리인 가상의 직선(실제로는 경로 생성불가)을 작도한 결과 1,2,4,5 숫자 그룹에서 교차가 발생하였다. 여기서 (3,3)은 교차가 발생하지 않아 맨해튼 거리로 경로를 생성할 수 있다. 교차가 발생한 {1,2,4,5} 그룹에 대해 ‘4’는 우측으로, ‘2’는 좌측으로 경로를 생성하면{1,5}의 교차만 해결하면 된다. ‘5’에 대해 ‘1’의 경로를 보장하도록 남아 있는 최 외곽 경로인 아래로 향하는 경로를 생성하면 마지막으로 남은 유일한 경로를 따라 ‘1’의 경로가 생성된다. 따라서 2-4-3-5-1 또는 3-4-2-5-1의 순서로 알고리즘을 수행할 수 있다.
그림 4. NLP-1에 관한 CABRA
Fig. 4. CABRA for NLP-1
제안된 CABRA를 그림 5의 (a) NLP-2 퍼즐[2]에 적용한 결과는 (b)와 같다. {1,2}와 {3,4,5} 교차 그룹이 생성되었다. 먼저 {1,2} 교차 그룹에 대해 ‘1’이 갈 수 있는 외곽 경로가 없으므로 (2,2) 쌍을 ‘1’을 회피하면서 경로를 생성하고, 다음으로 (1,1) 쌍의 경로를 생성한다. 다음으로 {3,4,5} 교차 그룹에서 (4,4) 쌍을 외곽으로 경로를 생성하고, {3,5} 교차 그룹에서 (5,5) 쌍을 외곽으로 경로를 생성하면 (3,3) 쌍의 경로만이 남게 되어 교차가 전혀 없는 숫자 연결 퍼즐을 풀 수 있다.
그림 5. NLP-2 숫자 연결 퍼즐 문제
Fig. 5. Problem of NLP-2 numberlink puzzle
Ⅳ. 실험 결과 및 분석
본 장에서는 그림 6의 실험 데이터들을 대상으로 제안된 CABRA를 적용하여 본다.
그림 6. 실험 데이터
Fig. 6. Experimental data
그림 6의 실험 데이터들을 대상으로 제안된 CABRA를 적용한 결과는 그림 7에 제시하였다.
그림 7. 실험 데이터에 관한 CABRA
Fig. 7. CABRA for Experimental data
본 장에서 거론된 16개의 실험 데이터 모두에서 CABRA는 교차가 전혀 없는 NLP의 퍼즐을 O(n) 수행 복잡도로 풀 수 있음을 보였다.
Ⅴ. 결론
본 논문에서는 NP-완전으로 매우 복잡하고 시간이 많이 소요되는(time consuming) 문제일수록 오캄의 면도날 법칙(Occam’s Razor principle)에 의거 매우 단순한 방법이 존재할 수 있다는 신조(moto)하에 NLP를 매우 간단한 방법으로 푸는 알고리즘을 제안하였다.
제안된 방법은 주어진 NLP를 빈 셀을 정점으로, 인접 셀 간에 간선을 연결한 격자 그래프로 변환하여 문제를 풀고자 하였다. 주어진 숫자 쌍 간에 ED인 직선을 연결하여 교차가 발생한 숫자 그룹 단위로 분할한다. 해당 교차 숫자 그룹에서 교차를 없애기 위해 우회하는 빈 셀들로 경로를 설정하는 단순한 방법이다.
제안된 알고리즘을 18개의 벤치마킹 실험 데이터에 적용한 결과 주어진 숫자 개수 n에 대해 O(n) 복잡도로 교차가 전혀 없도록 숫자 쌍 간에 빈 셀을 경유하는 연결선을 긋는데 성공하였다.
References
- T. Snyder, "Dr. Sudoku Prescribes: Numberlink Puzzles," Wired, https://www.wired.com/2010/11/dr-sudoku-prescribes-numberlink-puzzles-2/, Nov. 2010.
- E. Pegg and G. Exoo, "Beyond Sudoku : Crossing Number Graphs," Mathematica Journal. Vol. 11, No. 2, pp. 161-170, 2009.
- K. Kotsuma and Y. Takenaga, "NP-Completeness and Enumeration of Number Link Puzzle," IEICE Technical Report. Theoretical Foundations of Computing, Vol. 109, Article No. 465, pp. 1-7, Mar. 2010.
- A. Adcock, E. D. Demaine, M. L. Demaine, M. P. O'Brien, F. Reidl, F. S. Villaamil, and B. D. Sullivan, "Zig-Zag Numberlink is NP-Complete," Journal of the Information Processing, Vol. 23, No. 3, pp. 239-245, Oct. 2014, https://doi.org/10.2197/ipsjjip.23. 239,
- T. Snyder, "How to Solve a Numberlink Puzzle?," https://www.youtube.com/watch?v=XHTLvTG6RP4, Retrieved Jul. 2023.
- Melon's Puzzles, "A Numberlink Solving Primer," https://mellowmelon.wordpress.com/2010/07/24/numberlink-primer/, Retrieved Jul. 2023.
- Wikipedia, "Numberlink," https://en.wikipedia.org/wiki/Numberlink, Retrieved Jul. 2023.
- Puzzlebaron, "Welcome to Numberlinks!," https://numberlinks.puzzlebaron.com/, Retrieved Jul. 2023.
- Puzzlemadness, "Daily Medium Numberlink Puzzle," https://puzzlemadness.co.uk/numberlink/medium, Jul. 2023.
- Any Puzzle Media, "Numberlink Logic Puzzles," https://www.anypuzzle.com/Numberlink, Retrieved Jul. 2023.
- S. Yurekli, "The Art of Puzzles : Numberlink by Serkan Yurekli," https://www.gmpuzzles.com/blog/2016/08/numberlink-by-serkan-yurekli/, Retrieved Jul. 2023.
- T. Snyder, "The Art of Puzzles: Friday Puzzle #39 - 2010 Numberlink," https://motris.livejournal.com/100255.html, Mar. 2010.
- D. A. Thomas, "Numberlink," https://github.com/thomasahle/numberlink, Sep. 2021.