Python 3를 이용한 낙서육고도 복원기

by gg582 · 2026-07-19 04:37:56 · 47 views

목차

300년 전 수학자 최석정이 남긴 270칸 거대 마법 헥사곤: 낙서육고도(洛書六觚圖) 복원기

300여 년 전 한 학자가 마방진, 마법 그래프, 그리고 흥미로운 그래프 이론의 초기 사례들을 책으로 남겼다는 사실을 알고 계시나요? 바로 조선시대 영의정 명곡 최석정(崔錫鼎, 1646~1715) 선생의 수학서 《구수략(九數略)》 이야기입니다.

그중에서도 특히 거대한 기하학적 형태를 자랑하는 낙서육고도(洛書六觚圖)는 현대 전산학적 탐색과 수학적 대칭성 분석을 통해 그 실체가 복원되고 있습니다. 이 글에서는 전산에 관심이 있는 개발자와 일반인을 위해, 뿌연 역사 속에 묻혀 있던 이 거대 육각 마법 격자의 비밀을 현대 알고리즘으로 풀어내는 과정을 소개합니다.


1. 시작하기 전에: 수학 및 용어 사전

본격적인 복원 과정에 들어가기 전에, 글 전반에 사용되는 수학 용어와 고전 용어들을 먼저 정리해 드립니다.

  • 마방진(Magic Square) & 마법 그래프(Magic Graph): 격자 모양의 칸에 숫자를 겹치지 않게 배열하여, 특정 라인(가로, 세로, 대각선 등)의 합이 모두 같아지도록 만든 수의 배열입니다. 정방형 격자 외의 도형(육각형, 원 등)에 이를 확장한 것을 광의의 마법 그래프 또는 마도(魔圖)라고 합니다.
  • 낙서육고도(洛書六觚圖): 《구수략(九數略)》에 기록된 육각형 형태의 수치 배치 도안입니다. 한 변에 10개의 칸이 있는 정육각형 격자 구조로 이루어져 있습니다.
  • 허일(虛一): '하나를 비운다'는 표현입니다. 이 그래프에선 기하학적 중심점(원점)에 해당하는 칸에 값을 배치하지 않고 비워둠으로써 전체 합과 대칭 조건을 충족시키는 기법입니다.
  • 대척점 쌍(Complementary Antipodal Pairs): 중심점을 기준으로 점대칭(정반대) 위치에 있는 두 칸의 숫자를 더했을 때, 항상 일정한 보수(Complementary) 합 S가 되도록 짝을 짓는 방법입니다. 낙서육고도에서는 이 보수 합이 271이 됩니다.
  • 내적법(來積法): 현대 수학의 벡터 내적(Dot Product)이 아닙니다! 한자어 '올 래(來)'와 '쌓을 적(積)'을 쓰는 고전 수학 용어로, 낙서육고도의 칸 수(면적/부피)와 주축(中觚)의 길이 등 기하학적 치수를 도출하고 검산하는 알고리즘적 계산 절차를 의미합니다.
  • 중고(中觚): 육각 격자의 중심을 가로지르는 3개의 중심축(가로 1선, 대각선 2선)을 뜻하며, 각각 19칸의 길이를 가집니다.
  • 합동식(Modulo Congruence): 두 정수 a, b를 자연수 m으로 나눈 나머지가 같을 때 a ≡ b (mod m)으로 표기합니다. 본 복원물에서는 배치된 숫자를 5로 나눈 나머지(0~4)에 따라 격자에 색을 칠하는 'mod 5 채색'에 사용됩니다.
  • 위치 대합(Positional Involution): 어떤 변환 π를 두 번 적용했을 때 자기 자신으로 돌아오는 연산(π^2 = id)입니다. 본 격자에서는 격자를 180^\circ 회전시키는 점대칭 변환을 뜻합니다.
  • D6 대칭군(Dihedral Group of Order 12): 정육각형이 가질 수 있는 모든 기하학적 대칭(회전 대칭 6가지, 선대칭/반사 대칭 6가지)을 포함하는 수학적 대칭 군입니다.

2. 낙서육고도의 기하 구조와 조건

낙서육고도는 한 변이 10칸으로 이루어진 거대한 정육각형 격자입니다.

보통 하도, 낙서 등을 언급하면 수비학이나 신비주의를 떠올리는 분들이 많습니다. 하지만 전통적으로 이러한 관념들이 특정 성질을 일컫는 용어로 사용되는 경우도 흔했습니다.

이 격자의 수학적 규칙을 분석해 보면 왜 최석정 선생이 이 도안에 '낙서(洛書)'라는 이름을 붙였는지 알 수 있습니다.

  1. 전체 칸 수: 중심 1칸을 둘러싼 고리들이 밖으로 갈수록 6칸씩 늘어납니다 (6 × k개). 한 변이 10칸이 되려면 총 9개의 고리가 필요하며, 전체 칸 수는 1 + (6 + 12 + ... + 54) = 271칸이 됩니다.
  2. 허일(虛一) 조건: 여기서 중심 1칸을 비워두는(虛一) 수법을 씁니다. 따라서 우리가 실제로 채워 넣어야 할 칸은 270칸이며, 여기에 1부터 270까지의 자연수를 겹치지 않고 한 번씩 배치해야 합니다.
  3. 낙서의 수와 고리의 합 (通加洛書數六倍): 전통 수학에서 낙서의 수(洛書數)는 1부터 9까지의 합인 45를 의미합니다. 이 45의 6배인 270이 바로 우리가 채울 칸 수이며, 전체 합은 1 + 2 + ... + 270 = 36,585가 됩니다. 또한, k번째 고리에 배치된 값들의 합은 수학적으로 균등하게 배분되어 813 × k를 완벽하게 만족해야 합니다.
  4. 외주(外周, Outer Perimeter): 가장 바깥쪽 고리는 54개의 칸으로 이루어져 있습니다. 이 정육각형의 바깥쪽 6개 변에 위치한 숫자들의 합은 각각 1355로 동일해야 합니다.
  5. 3축과 중고(中觚): 중심을 관통하는 3개의 축(각 19칸)의 합은 각각 2439여야 합니다.

3. 뿌옇게 흐려진 300년 전 주석, '내적법(來積法)'을 해독하다

복원 프로젝트의 출발점은 문헌적 조사였습니다. 《구수략》 원본에 붙어 있는 내적법에 대한 주석은 스캔 상태가 불량하여 육안으로 판독하기가 어렵습니다.

첫 시도는 생성형 AI를 이용한 이미지 판독이었습니다. 하지만 이것은 실패하였으며, 실제로 읽을 수 있는 글자에서도 환각 현상(Hallucination)이 일어났습니다.

아쉬운대로 이미지 분석 기술로 흑백 대비를 개선하고, 육안 판독을 재시도하여 거친 이미지를 정제하고 고자와 이체자를 대조하여 글자를 복원하였고, 복원된 판독문인 ALGO_OCR_SUCCESS.md를 바탕으로 수치 계산 사슬을 전수조사했습니다.

그 결과, 흐린 주석 속에 숨어 있던 수치들의 정교한 계산 그래프가 복원되었습니다. naejeok.py 모듈을 통해 검증된 계산 흐름은 다음과 같습니다.

[외주 54] ──(더하기 6)──> [60] ──(6으로 나누기)──> [10 (변당 칸)]
                                                    │
                                                    ├──(2배)──> [20] ──(빼기 1)──> [19 (중고 수)]
                                                    │
                                                    └──(10부터 18까지 평가하고 9 곱하기) ──> [252]
                                                                                               │
                                                                       [252] + [중고 19] ───> [271]
                                                                                               │
                                                                                    (비움 1) ───> [270 (전체 칸)]

이 사슬에는 놀라운 유기적 연결고리가 숨어 있었습니다.

  • 152의 비밀: 판독 중 유실된 줄 알았던 수치 152는 단순 오독이 아니라, (20 - 12) * 19 = 152라는 독립적인 산식으로 생성되어 152 + 100 = 252 형태로 주 사슬에 합류하는 정교한 검산 경로임이 밝혀졌습니다 (NAEJEOK_ASSESSMENT.md 참고).
  • 알고리즘의 본질: 이 내적법 주석은 값을 어디에 배치하는지를 알려주는 '배치 알고리즘'이 아니라, 도안의 기하 구조와 칸 수 검산 규칙을 근세~근대 초기의 문법으로 기술한 일종의 '기하학적 검산 스크립트'였습니다.

4. 현대 전산학으로의 복원: Simulated Annealing 탐색

낙서육고도의 기하 구조와 마법 합 조건이 완벽히 밝혀졌지만, 값을 배치하는 구체적인 순서는 문헌만으로 특정할 수 없었습니다. 1부터 270까지의 숫자를 조건에 맞추어 배치하는 경우의 수는 270! ≈ 10⁵⁴⁰으로, 이는 바둑 가능한 모든 대국 수(약 10³⁶⁰)보다도 약 10¹⁸⁰배 더 큰 규모입니다.

여기서 대점(점대칭) 위치의 두 수의 합이 항상 271이 된다는 대점 보수쌍 가설을 도입했습니다. v + v' = 271 관계를 고정하면 탐색 공간은 2¹³⁵ × 135! ≈ 10²⁴⁶으로 대폭 축소됩니다.

그럼에도 여전히 광활한 탐색 공간을 극복하기 위해 시뮬레이티드 어닐링(Simulated Annealing, 담금질 기법) 알고리즘을 사용했습니다 (solver.py).

수없이 많은 무작위 시도와 온도 제어 끝에, 프로그램은 이론적 하한선인 최종 페널티 6.0의 최적 배치를 찾아냈습니다.

  • 왜 0.0이 아니고 6.0일까요? 6개 섹터(각 45칸)와 6개 광선(각 9칸)은 칸 수가 홀수이기 때문에 정확히 절반으로 쪼갤 수 없습니다. 따라서 완벽한 균등 합이 구조적으로 불가능하며, 6097/6098 및 1219/1220으로 번갈아 나타나는 교대 배치가 수학적 최선입니다. 이 수학적 한계 상황에 도달한 것이 페널티 6.0입니다.

5. 수학적 필연이 만들어낸 잉여류의 예술: Modulo 5 채색과 Mod N 일반화

복원된 최종 도안에서 또 하나의 흥미로운 분석이 시도되었습니다.

구수략은 기존에도 잉여류를 이용한 숫자 분류 체계를 언급하였습니다. 이에 착안해 배치된 숫자 v를 5로 나눈 나머지(Modulo 5, 0...4)에 따라 격자를 다섯 개의 레이어로 채색한 것입니다 (mod5.py).

이렇게 잉여류로 쪼개진 레이어들을 정육각형 대칭(D₆) 관점에서 전수조사한 결과, 재미있는 합동 관계가 발견되었습니다.

  • 나머지 2와 4인 레이어, 그리고 나머지 1과 0인 레이어는 서로 180° 회전(점대칭)했을 때 완벽하게 합동(54칸 전체 일치)입니다.
  • 나머지 3인 레이어는 자기 자신에 대해 180° 점대칭 구조를 이룹니다.

이것은 우연의 일치일까요? 이어서 이를 수학적으로 규명하여 mod N 일반화 정리를 유도해 냈습니다.

mod N 대점 잉여류 작용 정리

격자 위에 점대칭 이동 사상 π가 존재하고, 점대칭 쌍의 값의 합이 항상 일정한 상수 S일 때, 임의의 제수(modulus) m에 대하여 다음 관계가 성립합니다. v′ ≡ (S − v) (mod m) 즉, 잉여류 r은 대점 변환 π에 의해 항상 r → (S − r) (mod m) 으로 작용합니다.

낙서육고도의 경우 대점합 S = 271이며, 이를 5로 나눈 나머지는 1입니다. 따라서

  • 나머지 0은 1 − 0 = 1로 대응됩니다. (0 ↔ 1 완전 겹침)
  • 나머지 2는 1 − 2 = −1 ≡ 4로 대응됩니다. (2 ↔ 4 완전 겹침)
  • 나머지 3은 1 − 3 = −2 ≡ 3으로 대응됩니다. (3 ↔ 3 자기 점대칭)

이 정리는 modn_generalization.py를 통해 구수략 내의 다른 도안(구자각득 중궁, 중괘용팔도 등)에도 동일하게 적용되는 일반적인 수학적 필연성임을 확인했습니다.


6. 결론: 전통 수학과 전산학의 만남, 그리고 남겨진 질문들

이번 낙서육고도 복원 탐색 프로젝트는 단순히 옛날 퍼즐을 맞추는 것을 넘어 다음과 같은 현대 전산학적 의의를 보여줍니다.

  1. 데이터 기반의 문헌 검증: 유실된 전통 수학 주석의 수치들이 오독이 아니라 수학적으로 정밀하게 연결된 독립 검산 사슬이었음을 산출식 전수조사로 증명했습니다.
  2. 제한 조건 만족 문제(CSP)의 탐색 기술: Simulated Annealing 기법을 통해 거대한 다차원 공간 속에서 수학적 한계(페널티 6.0)에 도달하는 최적의 배치를 효과적으로 찾아냈습니다.
  3. 군론과 대칭성의 일반화: 전통적인 잉여류 분석 기법을 현대 대수학의 궤도 작용으로 정형화하고, 이를 여러 도안에 걸쳐 교차 검증함으로써 조선 수학의 깊은 대칭적 미학을 밝혀냈습니다.

비록 수치 조건(합 조건)을 만족하는 해가 다수 존재하여 원래 최석정 선생이 그렸던 완벽한 고유 배치 자체를 역산만으로 규명하는 것에는 한계가 있었지만(순서 정보의 손실), "무엇이 기하학적으로 가능하고 불가능한가"에 대한 엄밀한 경계선을 제공했다는 점에서 의미가 큽니다.

300년 전 영의정의 머릿속에 들어있던 거대한 수치 격자 알고리즘, 오늘날 컴퓨터의 눈으로 보니 더욱 경이롭지 않나요? 앞으로 더 선명한 고문헌 판본이 발견되어, 베일에 싸인 배치 순서 규칙(寄左/序左)마저 완벽하게 풀려나기를 기대해 봅니다.


이 글은 낙서육고도 복원 탐색 프로젝트의 수행 결과를 바탕으로 작성되었습니다. 상세 코드와 정합성 보고서는 output/ 폴더에서 확인하실 수 있습니다.

Back

Comments

No comments yet.