티스토리 뷰

원문


『Nim sum과 Boolean ring』


 "질문. 네 옆에 그 자리는 비어있, 니?"


 1학년 미적분학 첫 수업이 시작하기 전의 그 때, 나는 드디어 내 인생에도 봄이 찾아왔다고 생각했다.

 아니 내게 여자가, 그것도 미소녀가 말을 걸어주다니.

 그것도 심지어 내 바로 옆자리에 앉는 거 아닌가.


 "호, 혹시 이름이 뭐야?"

 "난죠. 난죠 코코로."

 "코코로?"

 "이상?"

 "아, 아니. 귀, 귀여운 이름이다 싶어서."


 나는 파트라슈처럼 완전히 들떠있었다.

 여태껏 지키고 싶지도 않은 순결을 지켜왔던 나는 이런 게 빛나는 대학생활이구나 하고 진심으로 생각했더랬다.

 5분 뒤 그녀가, 그 미소녀가 남자라는 걸 알기 전까지는.


 "혼죠 씨. 동수라는 서클이 있다고 그러던데. 같이 해 보지 않, 을래?"

 

 그 후로 난죠와 사이가 좋아져 함께 동수에 들어갔다.

 그리고 신입생 세미나가 시작되었다.

 신입생 세미나란 1학년생만으로 구성된 독립 세미나로, 수학책을 하나 골라 읽은 후 교대로 발표하는 형식으로 진행된다.

 이게 첫 세미나였던 나는 막연히 화기애애한 분위기 속에서 이루어지는 세미나를 상상하고 있었다.

 실제로 해 보기 전까지는.


 난죠의 수학에 대한 열정과 진지함은 보통이 아니었다.

 우선 세미나 예습에 쏟는 시간량부터가 달랐고, 나를 포함해 다른 사람보다도 내용을 더 깊이 이해하고 있었다.

 또한 그 진지함 때문에 남의 발표에 하는 지적도 꽤 통렬했다.


 ***


 "나는 난죠처럼 머리가 좋지 않아서 말야."

 "미안. 이제 난죠의 페이스엔 못 따라갈 거 같아."


 한 명, 그리고 한 명, 세미나 멤버는 줄기만 했다.

 그리고 결국 나와 난죠만이 남게 되었다.

 생각해보면 당시의 난죠 역시 조금은 초조했을 지 모른다.


 비록 나는 머리도 좋지 않고, 대학에서 처음 만난 추상적인 수학에 좀체 익숙해지지 못하고 수업과 세미나를 병행하느라 고전하고 있었지만, 어찌어찌 세미나에 남아 버티고 있었다.


 하지만 결국 그 일이 일어나고 말았다.

 평소 하던 지적보다 통렬하다고 할 것도 없는 지적을 들었던 것 같다.

 나는 늘 그랬던 것처럼 그 지적에 평범하게 답할 생각이었다.


 "하하, 미안. 그 말이 맞네. 난죠 씨.[각주:1]"


 전혀 의식하지도 않았는데 자연스럽게 그 말이 나왔다.

 말하고 난 그제야 알아챘다.


 "제안. 이걸로 이 세미나를 끝내자. 그게 가장 좋다고 생각해."


 그 때 난죠의 표정이 어땠는지는 잘 떠오르지 않는다.


 그렇게 신입생 세미나는 사라졌고, 이후 나와 난죠는 거의 이야기하지 않았다.


 ***


 "2진수. 2진수란 0과 1만 가지고 정수를 표현하는 방법이지."


 난죠가 테이블 위의 컵 가운데 두 개를 집으며 말했다.

 역시 말끝에 브너! 나 피━같은 이상한 단어는 붙이지 않았다.

 부드러우면서도 따뜻한 정감이 담긴 목소리였다.


 "아아, 그러니까 10이나 101같은 거 말이지?"


 나는 돌줍기 게임의 정체를 빨리 알고 싶어서 그렇게 답했다.


 "그 말대로. 우리가 평소에 사용하는 건 10진수. 즉 0에서 9까지 써서 정수를 표현하고 있는데, 여기서 2~9는 빼고, 더도 말고 덜도 말고 0과 1만 가지고 정수를 표현하려는 거, 야."

 "됐어. 그 정도는 나도 알고 있어."

 "됐어. 서두르지 않아도 숫자는 도망가지 않아, 혼죠 군."


 그리하여 난죠는 군죠가 꺼낸 이후 계속 테이블에 놓여있던 종이에 숫자를 쓰기 시작했다.


 10진수    ↔︎  2진수

 0    ↔︎       0

 1    ↔︎       1

 2    ↔︎    10

 3    ↔︎    11

 4    ↔︎   100

 5    ↔︎   101

 6    ↔︎   110

 7    ↔︎   111


 "됐다. 대략 이런 거야."


 난죠가 10진수와 2진수의 대응표를 만든 모양이다.


 "그러면. 혼죠 군, 이 대응관계를 설명해 볼래."

 "어어. 2진수에서 10진수 표현을 얻으려면, 가령 101에서 5를 얻으려면,"


 101→1*2^2+0*2^1+1*2^0=4+0+1=5


 "이런 식으로 2진수 표현의 n번째 자릿수에 2^{n-1}를 곱한 뒤 모두 합하면 돼. 지금 든 예시를 보면, 101의 세 번째 자릿수는 1이니까 1*2^{3-1}, 두 번째 자릿수는 0이니까 0*2^{2-1}, 첫 번째 자릿수는 1이니까 1*2^{1-1}이고, 얘들을 모두 합하면 5가 되지. 거꾸로 10진수 표현에서 2진수 표현을 얻으려면 거꾸로 2의 거듭제곱들의 합으로 바꾸면 돼."

 "그 말대로. 10진수를 사용하는 데 너무 익숙해진 인류, 우리 인류가 얼핏 보기에 2진수는 까다롭게, 단지 까다롭게 수를 표현하는 걸로 보일 수도 있어."


 까다롭게도 돌려말한다.


 "하지만. 하지만 말이야. 2진수는 우리에게 수를 바라보는 다른 관점을 부여해줘. 그게 nim sum이야."


 Nim sum......?

 처음 듣는 이름이다.


 "그럼 혼죠 군, 2진수에서 덧셈을 하는 방법은 알고 있지?"

 "어, 으응. 10진수에서 하던 거랑 비슷하게 자릿수별로 더하면 되잖아?"
 "예를 들어줄래?"

 10+11


 나는 종이에 식을 썼다.


 "예를 들어 10+11의 경우, 10진수에서 계산하면 2+3이지만 2진수에서는,"


  10

 +11

  ̄ ̄ ̄

 101


 "이런 식으로 우선 첫 번째 자릿수인 0과 1을 더해서 1을 얻고, 다음으로 두 번째 자릿수인 1과 1을 더해서 2, 즉 10을 얻어. 따라서 101이 나오는데, 이 수의 10진수 표현은 5니까 2+3=5를 계산한 거라는 걸 알 수 있지."

 "그래. 이 경우, 두 번째 자릿수에서 자리 올림이 일어나지."

 "아아, 분명 그러긴 했는데, 그게 왜?"

 "Nim sum. Nim sum이란 바로 그 자리 올림을 무시하는 걸 가리, 켜."


 자리 올림을 무시한다고?


 "편의상. 평범한 덧셈과 구분하기 위해 nim sum을 ⊕로 쓰자. 이제부터 2⊕3을 계산할게."


  10

 ⊕11

  ̄ ̄ ̄


 "마찬가지. 방금과 마찬가지로 2와 3을 2진수로 표현하자. 우선 첫 번째 자리. 0+1=1로 자리 올림이 일어나지 않으니까 이건 그대로 써."



  10

 ⊕11

  ̄ ̄ ̄

   1


 "다음. 두 번째 자리. 1+1=10인데, 여기서 자리 올림으로 발생한 1은 무시하고 0만 아래에 써."


  10

 ⊕11

  ̄ ̄ ̄

  01


  "이상. 01은 1과 같으니까 따라서 1011=1. 10진수로 표현하면,"


 23=1


 "이 되, 지."


 더했는데 줄었다....호옹이!?


 "혼죠 군. 더했는데 줄었다....호옹이!?라는 생각이라도 하는 표정인, 걸. 방금. 방금 관찰한 대로 nim sum은 평범한 덧셈과는 달리 더하면 더 작은 수가 나오는 경우가 많아. 가령. 가령 아래 계산을 해, 봐."


 5⊕5=?


 나는 펜을 휙 돌리고 계산을 시작했다.

 으음, 먼저 5를 2진수로 표현하면 101이니까,


  101

 ⊕101

  ̄ ̄ ̄ ̄


 이렇게 나오려나.

 우선 첫 번째 자릿수.

 1+1=10이지만 자리 올림은 무시하기로 했으니까 0.


  101

 ⊕101

  ̄ ̄ ̄ ̄

    0


 다음으로 두 번째 자릿수.

 0+0=0이니까 0 그대로 쓰고.


  101

 ⊕101

  ̄ ̄ ̄ ̄

   00

 마지막으로 세 번째 자릿수.
 얘도 첫 번째 자릿수랑 똑같이 1+1=10이니까 0이다.

  101

 ⊕101

  ̄ ̄ ̄ ̄

  000

 따라서 답은........어라?


 "그래. 답은 000, 즉 0이, 지."


 5⊕5=0


 5와 5를 더했더니 0이 됐다.


 "마찬가지. 마찬가지로 1⊕1=0이고 2⊕2=0이고 3⊕3=0이야. 즉 nim sum에서는 같은 수를 더하면 항상 0이 되는, 거야."


 우와.

 완전 이세계 느낌 난다.

 이거 0에서 Re:이세계 생활이라도 시작할 각인데.


 "본론. 여기부터가 본론, 이야."


 난죠가 컵 다섯 개씩 무더기를 둘 만들었다.


 A:◯◯◯◯◯

 B:◯◯◯◯◯

 

 "혼죠 군. 이건 선공 필승, 후공 필승, 둘 중 뭘, 까?"
 "으음, 후공 필승이지."

 "그럼, 이건?"


 A:◯◯◯◯

 B:◯◯◯◯


 "이것도 후공 필승이지."

 "이거."


 A:◯◯◯

 B:◯◯◯


 "후공 필승."

 "이거."


 A:◯◯

 B:◯◯


 "...후공 필승."

 "이..."

 "아아! 이제 알겠다! 처음에 두 무더기의 돌 갯수가 같으면 상대방이 가져간 만큼 다른 무더기에서 가져가면 되니까 후공이 무조건 이기게 되어 있어."

 "명답."
 "그래서, 이게 뭔데?"
 "의문. 아직도 모르는......거, 야? 지금 보여준 무더기들의 nim sum은 모두 0, 이었어."


 설마.

 아니, 정말 설마.


 나는 안절부절못하고 컵 무더기를 흐트러뜨리고 새로이 무더기를 셋 만들었다.


 A:◯◯◯

 B:◯◯

 C:◯


 이건 아까 후공필승이라고 확인한 형태다.

 나는 서둘러서, 아니, 계산 실수가 없도록 진정하며 펜을 굴린다.


 3은 11

 2는 10

 1은 1


 우선 3⊕2는


  11

 ⊕10

  ̄ ̄ ̄

   1


 니까 3⊕2=1이다. 애초에 nim sum이 각 자리수마다 덧셈을 하는 연산이니까 더하는 순서를 바꿔도 같을 테니 3⊕2= 2⊕3=1이겠지.

 그리고 1⊕1은 방금 했던 것처럼 0.

 따라서 3⊕2⊕1=0. 분명히 0이다.


 자, 그럼 다른 경우는?

 5-4-3-2 형태도?


 A:◯◯◯◯◯

 B:◯◯◯◯

 C:◯◯◯

 D:◯◯

 정말 5⊕4⊕3⊕2=0일까.

 5⊕4는 5가 101, 4가 100이니까,


  101

 ⊕100

  ̄ ̄ ̄ ̄

  001

 따라서 5⊕4=1이다.
 그리고 3⊕2=1이니까,

 5⊕4⊕3⊕2=(5⊕4)⊕(3⊕2)=1⊕1=0

 이거 레알이냐. 정말 0이잖아.
 지금까지 나온 모든 후공 필승 형태의 nim sum이 모두 0이었다.

 "정확. 사실 이런 정리가 성립해."

 정리 (Nim sum의 필승법)
  후공 필승인 형태 ⇔ 무더기들의 nim sum이 0

 "따라서. 따라서 돌줍기 게임의 필승 전략이 누구에게 있냐는 nim sum에 따라 정해져."

 처음엔 운빨겜으로만 보였던 돌줍기 게임의 이면에 사실 수학적인 규칙성이 숨어 있었다.
 이걸 단숨에 간파하느냐 못하느냐가 수학 배틀의 포인트였던 거다.
 보통은 못하겠지만.

 "그래서 그 정리는 어떻게 증명하는데?'
 "증명. 그 증명은 초등적으로도 할 수 있고, 군론을 써서 증명할 수도, 있어. 나중에 참고문헌을 줄테니까 여기서 증명은 생략, 할게. 본론에서 벗어나, 니까."

 본론?

 "본론? 이라고 묻고 싶어라도 하는 표정, 이네. 서론이 꽤 길어지고 말았는데, 애당초 우리는 boolean ring의 구체적 예시를 찾으려고 했, 잖아."
 "아아! 그랬지! Boolean ring!"
 "하나만 더. 이를 위한 연산을 하나만 더 도입, 할게. 그건 nim product, 야.
 "Nim product?"
 "요컨대. 요컨대 nim sum에서 각 자리수별로 덧셈을 했듯이 각 자리수 별로 곱셈을 하는 거, 야."
 
 

  11

 ⊗10

  ̄ ̄ ̄


 "Nim product. Nim product는 ⊗로 쓰기로, 하자. 이제 보여줄 건 3⊗2, 야.


  11

 ⊗10

  ̄ ̄ ̄

   0


 "첫 번째 자리수. 첫 번째 자리수는, 1×0=0니까 0을 썼어."


  11

 ⊗10

  ̄ ̄ ̄

  10



 "두 번째 자리수. 두 번째 자리수는, 1×1=1니까 1. 따라서 10, 즉,"


 3⊗2=2


 "혼죠 군. 이번엔 5⊗5를 계산, 계산해 봐."


 보아하니 nim sum보다 쉬울 것 같다.


  101

 ⊗101

  ̄ ̄ ̄ ̄

  101

 됐다. 1×1=1, 0×0=0이니까 답은 101.
 고로 5⊗5=5다.
 Nim product에선 같은 수를 두 번 곱해도 자기 자신이 나오는구나.
 응? 그렇다는 건......

 "설마 이거 boolean ring을 이루는 거야?"
 "이거. 이거라니, 어떤?"
 "아. 그러니까 자연수, 0을 포함한 자연수 말야. (#0은_자연수) 물론 평범한 덧셈과 곱셈에 대해서는 boolean ring을 이루지 못하지만, 지금 보여준 nim sum과 nim product에 대해서는 boolean ring을 이루고 있잖아. 이게 비자명한 boolean ring의 예시야."

 난죠의 입가가 미미하나마 분명히 위로 올라가는 게 보인다.

 "정답. 이건 boolean ring의 구체적 예시 중, 하나. 라고 말하고 싶어하는 표정인 걸, 난죠?"
 "오답. 그런 생각은, 하지 않았어."

 왠지 우리 둘의 사이가 좋던 옛날 그 시절로 돌아간 것만 같다.
 부끄러워진 걸 감추려고 그러는 지 난죠의 말이 빨라진다.

 "사실. 사실은 Stone's representation theorem에 의해 boolean ring은 본질적으로 nim sum과 nim product를 갖춘 것밖에 없다는 것, 이 알려져 있어. 엄밀. 엄밀하게는 집합대수(algebra of sets)라 불리는 대상과 boolean ring은 동형이라는, 정리야. 어떤 집합의 부분집합 위에 교집합과 대칭차집합(합집합에서 교집합을 뺀 것)을 주면 환, 그것도 boolean ring이 돼. 쉽게 말해서 집합대수란 이 boolean ring의 부분환을 말하지. 즉, Stone's representation theorem는 '임의의 boolean ring은 어떤 집합의 멱집합 위에 교집합과 대칭차집합을 줘서 만든 환의 부분환이다.' 라는 정리, 야. 가령 방금 본 예시를 보면 자연수의 2진수 표현은 자연수의 유한 부분집합과 일대일 대응을 이뤄. 1↔{0}, 10↔{1}, 11↔{0,1}처럼 말이지. 여기서 nim product가 교집합, nim sum이 대칭차집합에 대응돼."

 이런 식이었다.
 그렇다. 난죠는 수학 엔진이 한 번 걸리면 브레이크도 없이 쭉 이야기한다.
 아마 난죠가 맘만 먹으면 돌줍기 게임에서 지금까지 설명한 부분까지 2분 안에 끝낼 수도 있을 것이다.

 

 뭐, 일단 이렇게 boolean ring의 예시도 알았으니 한 건 해결한 셈이다.

 

 "혼죠 님. 그러면 마음의 준비는 되셨습니까?"


 으악!

 귀에서 갑자기 불쾌한 목소리가 들려 소름이 돋았다.

 

 "마지막으로 남길 말씀은 다 끝나신 듯 하군요."


 깜빡했다.

 나, 죽는구나.


 "그러면 수학 배틀 '돌줍기 게임'의 승자는 난죠 코코로 님, 패자는 혼죠 케이스케 님으로 결정하겠습니다! 미리 확인하겠습니다만, 보상으로 난죠 님께는 혼죠 님의 '목숨'이 주어집니다!"


 뵤도인 메다이가 품에서 리볼버 식 은빛 권총을 꺼낸다.


 "그러면 각오해 주십시오! 이제부터 보상을 수여하겠습니다!"


 지금까지 만난 사람의 모습이 주마등처럼―주마등 맞지만―떠오른다.

 어머니, 아버지, 칸나, 군죠, 난죠, 린쨩......


 고마웠어.




 총성이 울린다.


 

 삐리리-리♪





 ...

 ...

 ...


 어? 총성이 원래 이런 소리였나?


 "혼죠 님. 이제 됐습니다."


 조심조심 눈을 뜬다.

 뵤도인 메다이가 타블렛 컴퓨터로 바쁘게 사무처리를 하고 있었다.

 난죠는 차를 홀짝홀짝 마시며 유유자적 쉬고 있었다.


 아, 그렇지.

 일단 물어나 보자.


 "어, 음. 나 죽은 거야?"
 "그렇군요. 방금 혼죠 님의 동수 회원권 '생명토포스'를 회수했습니다. 다시 말해, 혼죠 님은 더 이상 동수의 회원이 아닙니다."


 뭔 소리야?


 "아, 이거 말씀하시는 건지요? 이건 리볼버 식 은색 권총형 안면 인증 장치입니다. 총처럼 생긴 편이 더 느낌이 나지 않습니까?"


 뭔 소리야??


 "혼죠 군. 동수의 회원권은 생명토포스이라고 불리고 있어. 그 이름대로 동수 회원들에게 생존권이나 다름없기도 하고, 한 번 잃어버린 회원권은 두 번 다시 되찾을 수도 없기 때문, 이지. 물론 다른 회원과 수학 배틀을 치를 수도 없어."

 그렇구나.

 무슨 상황인지 잘은 모르겠지만 일단 죽지는 않았으니 다행이다.

 정말이지, 말 하나 거창하게 돌려서 한다니까.


 "정말. 나는 정말 죽는 줄 알고 아주 심장이 쫄깃했다고. 동수의 회장님이 이렇게나 취미가 나쁘셨을 줄이야."


 그 순간, 분위기가 얼어붙었다.

 어라?

 묵묵히 침묵을 지키고 있던 검은 복면을 쓴 자들이 술렁이기 시작했다.


 내가 뭐라도 잘못 말했나?


 "혼죠 님, 아직 모르시는 듯 한데 사실은..."

 "잠깐. 내가 설명......하지."


 난죠의 표정이 어느 때보다 진지해진다.


 "혼죠 군. 두 가지 소식이 있어. 나쁜 소식과 나쁜 소식."


 좋은 소식은 없는 거냐.


 "첫 번째. 첫 번째는, 나는 이미 동수의 회원이 아니라는, 거야. 며칠 전에 어떤 남자와 했던 수학 배틀에 져서 회장 자리를 빼앗겼어."


 난죠가 졌다고?? 왜? 어떤 녀석이? 어떻게?


 "그. 그의 이름은 도라이 켄(導来 圏)[각주:2]. 이세계에서 온 초등학교 2학년. 이런 표현은 쓰고 싶지 않았는데, 상대적으로, 객관적으로, 연령적으로 봐도 그는, 아니 그야말로 진정한 천재야."


 테이블 위에 있던 컵이 무질서하게 흩어져 있다.

 그러나 책상 위가 어떤지는 진작에 흥미를 잃었다.

 공포스럽다.

 내 직감이 무엇보다 먼저 한 생각이 그러했다.


 "그리고. 그리고, 또 하나 나쁜 소식은......"


 난죠가 머뭇거린다.

 직감이 확신으로 바뀐다.


 "그는 네 여동생을 노리고 있어."






  1. 원 표기는 '난죠 상'(南條さん)이다. 상(さん)은 우리나라의 '씨'와 달리 동급생 사이에서도 사용되며, 경의를 포함하고 있어 듣는 사람에게 거리감을 줄 수 있다―역자 주. [본문으로]
  2. 도래권(導来圏)은 일본어로 derived category를 뜻한다―역자 주. [본문으로]
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
TAG
more
«   2024/11   »
1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
글 보관함