48/2(9+3), 끼어든 김에 A/S도 해야겠지…

밑 글을 쓸 때, 나는 공학용 전자계산기 결과를 가지고 싸우는 글들을 염두에 두고 있었다. 그래서 두번째 문단에서 기계와 논리를 언급했던 것인데, 그 이후로 2를 주장하는 글들을 읽어보면서 이게 병림픽…이었음을 알게 되었다. 논리는 간데없고 권위있다고 생각되는 자료들을 끌고와서 끼워맞추는데 사람들이 혈안이 되어 있었다. 초등학교 산수계산 문제에 대수학의 변수를 다루는 공리들을 끌어들이는 부분은 압권이었다. 그래서, (9+3)이 a라고? 변수면 변수고 상수면 상수지 미소년이 여장했다고 자기 마누라 삼겠다고 하실 분들이다. 어떤 강사는 이거 고민하다가 학생들이 헷갈려서 대수학 문제 틀릴까봐 걍 2로 봐! 라고 강변하기도 하더라만…

그나마 인정할만한 논리는 이 기사처럼 식이 잘못됐다, 이다. 상수끼리 곱하는 경우니까 곱셈 연산자를 생략 못한다고 보는 견해이다. 즉, 2(9+3)라는 항이 잘못되었다는 것. 상수 사이에 연산자가 없을 경우에는, 더 기본적인 공리, 즉 십진법(왼쪽에 있는 숫자는 바로 그의 오른쪽에 붙어있는 숫자보다 10배 큰 값을 나타낸다.)이 적용되지 않는 괄호에는 적용할 공리가 없기 때문이다. (해석불가. 그러니까 이 식을 에러내는 MS엑셀이 잘 짜인 프로그램이라는 이야기다.) 사실, 변수가 없는 단순 계산식이기 때문에 상수고 뭐고 말할 필요조차 없지만서도. 즉 연산자 생략이 불가능하다는 논리가 성립한다. 따라서 초등학생에게는 음수랑, 0으로 나누는 것처럼 링크한 기사에 따라서 걍 이 문제 중고등학교에서 배우니까 지금은 식이 틀렸다고 생각해, 하고 넘어가야 할 것이다.

하지만 이 식이 잘못되었다고 하기에는 이 식을 계산할 수 있도록 추가할 수 있는 공리들이 있으므로 찝찝하다. 공리를 추가하기로 하고 넘어가보자. 물론 위 식은 변수가 없어서 대수학의 공리들을 적용하면 안 된다. 덕분에 제멋대로 추가해야 하는 병림픽이지만, 이긴 병신이 되기 위해서라도 2인지 288인지를 결론지어줘야 할 것 아닌가.

답이 2이냐 288이냐를 따진다면, 답은 288쪽이다. 왜냐면 288은 상수끼리의 곱셈 연산자를 어느 한 항이 괄호로 싸여있으면 생략할 수 있다, 라는 공리 하나만 추가하지만, 2는 그에 더해서 그 경우 생략된 곱셈 연산자는 다른 곱셈, 나눗셈 연산자보다 우선한다, 라는 공리를 하나 더 요구하기 때문이다. 그리고 수학에서는 가장 적은 공리들(혹은 연산들)로 이루어진 계에서 식을 다루어야 한다. 누구는 (구글에서 찾아지지도 않던) 미 수학협회의 리뷰어 가이드를 언급하던데, 굳이 전문가들인 리뷰어들에게 언급할 정도면 당연히 이는 (해당 Article과 review에 쓰이도록 특별히 언급되어야만 하는) 추가되는 공리로  봐야 하는 것 아닌가? 어째서 합의되는 최소한도의 공리로 해결되는 문제에 특별히 다른 공리를 더해서 적용하려고 하는지 이해가 되지 않는다. 나도 분명히 덧셈 연산자를 생략한 수식 작성자의 의도는 모두 분모라고 표현하려는 것이었다고 생각한다. 하지만 우리가 수학식을 볼 때 그걸 쓴 사람의 의도를 생각해서 계산해야 하는가? 아니다, 중요한 것은 공리들이고 그로 인한 전개과정(적용)일 뿐이다. 이런 면에서 변수 문제에서 애들이 틀릴까봐 벌벌 떨어야 하는 위 링크동영상의 강사도 이해는 간다. 하지만 일단 답이 나와야 한다면 288이다.

즉 생략된 곱셈 연산자에게 더 높은 우선순위를 부여하는 근거가 어디 있냐는 것인데, 여기저기서 종결자라고 하던 중학교 교과서를 들이민 이의 글을 보면 그거 전부다 변수 다루는 代수학 쪽의 설명이다. a가 (9+3)이랑 같다고 생각해서 그리 쓴 것일텐데 미안하지만 전혀 그렇지가 않다. 대수학 원론만 봐도 그런 거 잘 나오니까 새로 설명하지는 않겠다. 내 전공이 아니기도 하고.

알아듣기 쉽게 비유를 하자면, 초등학생들끼리 경쟁하는데 친구들 사이의 평판이나 시험 성적, 운동 능력 등이 아니라 어른들의 사정을 들고 와서 겨루는 것과 같은 사고방식인 것이다. 현실적으로는 먹힐 수도 있겠지만, 그게 옳은 답인가?

글이 길어졌다. 오랫만에 세줄 요약 들어간다.

  1. 숫자와 사칙연산, 괄호만으로 이루어진 초등학교 산수 레벨에서는 이 식은 잘못된 것이다.
  2. 계System 이론에서는 해당 식을 계산할 수 있는 최소 공리의 계가 옳다고 본다.
  3. 1.의 계를 확장해서 공리를 추가해야 하는데, 이중 2개 추가하는 2보다는 1개만 추가하는 288이 옳은 답이다.

이렇게 써 줘도 변수를 다루는 공리들을 적용해야 한다는 사람들이 개종?할 것 같지는 않지만, 어? 288이 아니라 2인가보다… 라는 사람들에게 도움이 됐으면 한다.

48/2(9+3), 왜 이런 게 문제가 되지?

48/2(9+3), 이 수식의 답을 두고 2파와 288파가 나뉘어 싸우고 있다고 한다. 전산학 전공 입장에서 보자면, 이는 매우 단순한 Parsing 문제이다. 즉, 문제의 수식을 다음 중 어느 쪽으로 해석할 것인가의 문제이다. (해당 수식은 이 사이트를 통해 생성한 gif 파일이다.)

위 수식의 경우는 답이 288이요, 아래 수식의 경우에는 2가 될 것이다. 수학식의 계산 순서는,

  1. 괄호가 존재하면 괄호 내 식을 우선적으로 계산한다.
  2. 곱셈, 나눗셈이 더하기, 빼기보다 우선하고 각 둘 사이는 동등하다.
  3. 왼쪽으로부터 오른쪽으로 계산해 나간다. (즉 왼쪽의 연산자가 우선한다.)

라는 원칙에 따라서 움직인다. 빠른 원칙이 먼저 적용된다. 이에 따르면 아래 수식으로의 해석은 불가능하다. 나누기, 곱하기는 동등한 우선순위를 가지며, 따라서 2(9+3)=2*12의 곱셈을 먼저 계산한 후 그 결과로 나눌 이유가 없다. 다만 시각적으로 아래 수식을 한 줄에 표시한 것으로 보일 수도 있으나, 엄격하게 수학식의 규칙을 따른다면 답은 288이다. 곱셈 연산자의 생략은 단지 편의상의 생략일 뿐, 더 강한 우선순위를 정해주는 것은 아니다. 만약 2로 답을 내는 계산기가 있다면 그 계산기가 stack관리에 문제가 있는 제품이라는 뜻이다. 학부생이 계산기 프로그램 짜면 자주 틀리는 부분이기도 하다. -_-;;; 아니면 계산기를 만든 엔지니어가 곱셈의 생략을 분모로 표시하려는 의사로 간주했던지. 하지만, 그것은 편리할지는 몰라도 원칙에서 어긋난 잘못된 구현이다.

기계보다는 논리를 따라야 한다. 기계는 논리의 현실적 구현일 따름이다. 즉, 버그는 숙명이다. 사람은 시각에 크게 의존하니, 연산자를 생략한 부분이 더 높은 계산순위를 가지는 것으로 착각하는 것은 이해할 수 있다. 다만 그것을 가지고 문제가 있는 계산기까지 들먹이며 옳다고 우기면 곤란하다. 나도 소프트웨어 엔지니어 출신이지만, 전자기기란 버그 투성이이기 일쑤이다. 이 기계는 이러한 결과를 내고, 저 기계는 저러한 결과를 내니 두 결과가 존재할 수도 있다는 주장은 틀렸다. 거기에 괴델의 불완전성 정리처럼 수학문제는 답이 없거나 여러 개인 상태를 넘어서서 답이 있는지 없는지조차 모르는 상태가 종종 나오지만, 48/2(9+3) 수식 정도에서 그러한 문제가 터지면, 비행기는 떨어지고 인터넷은 바로 마비되어야 할 것이다. 간단히 말하면 아닌 건 아닌 거다. 48%2*(9+3)이면 누구도 이론이 없을 결과를 가지고 설왕설래하는 것은 보니 정말 외관에 홀리면 답이 없다.

그리고 한국의 수학, 논리학 교육 수준을 알 만 하다. 도대체 왜 이게 인터넷에서 난리여야 하나? 어떤 매체는 전세계 네티즌의 논란이라고 썼던데, 얼굴이 화끈거렸다. 수학공식 외울 줄만 알았지, 수학식의 계산 순서조차 모르는 사람들이 우글거리는 곳, 그 곳이 바로 대한민국이다. 더욱더 문제는 패거리를 이루면 옳게 될 수 있다고 믿는 사람들과, 그걸 두 답이 나왔다며 논란이라고 써 주는 언론의 무능한 기자들이다. 이러다가 마트에서 1플러스1 행사라면서 3개 줬다고 1+1=3이라고 우기는 작자들이 나타나지나 않을까 정말로 걱정된다.