2016년 12월 7일 수요일

왜 곱셈을 먼저 할까

왜 곱셈을 먼저 할까? 사칙연산 1+2×3이 왜 9가 아니고 7일까?<br>즉, 덧셈보다 곱셈을 먼저 하는 이유는 무엇일까?

111+1×2를 계산하면, 곱셈을 덧셈보다 먼저 하니까 113이 정답이다. 그런데 이걸 왼쪽부터 차례대로 계산해서 224가 답이라고 우기는 사람도 있다. 그러고 보니 왜 덧셈보다 곱셈을 먼저 하도록 규칙을 정했는지 모르겠다. 특별한 이유라도 있는 걸까?

곱셈,나눗셈을 덧셈,뺄셈보다 먼저 하는 것은 규칙, 그런데 그 규칙은 왜 생겼나?

초등학교 교육을 제대로 받은 사람이라면, 사칙연산, 즉 덧셈, 뺄셈, 곱셈, 나눗셈이 섞여 있는 식을 계산할 때 우선 순위가 있음을 알 것이다. 수식의 계산은 왼쪽에서 오른쪽으로 차례대로 하되, 괄호를 우선으로 하고 곱셈과 나눗셈을 덧셈과 뺄셈보다 먼저 하게 되어 있다.
111+1×2의 경우 곱셈을 먼저 하니까 1×2=2를 구한 다음, 111에 그 결과를 더하여 113이 된다. 단순히 연산의 우선 순위 없이 차례대로 계산한다면, 111+1=112를 먼저 구하고, 그 결과에 다시 2를 곱하여 224가 된다.
당연한 말이지만, 연산의 우선 순위가 달라지면, 계산 결과도 달라진다. “왜 곱셈을 덧셈보다 먼저 하나요?”라고 묻는다면 답은 뻔하다. 원래 규칙이 그러니까. 그러나 “왜 하필이면 곱셈을 덧셈보다 먼저 하는 걸로 규칙을 정했나요?”라고 묻는다면 뭐라고 답해야 할까?

그 규칙을 고민하는 이유는 우리가 중위 표기법을 쓰기 때문

111+1×2와 같은 식에서 연산 기호 +와 ×는 그 기호의 앞뒤에 있는 두 수를 가지고 연산한 결과를 구하라는 뜻이다. 앞과 뒤 두 개의 수를 가지고 연산한다는 뜻에서 이런 연산을 “이항() 연산”이라 하고, 연산하려는 두 수 사이에 기호를 쓴다는 뜻에서 이런 표기법을 “중위(中位)표기법(infix notation)”이라 한다.
한편, 이항연산이 두 개의 수로 하나의 수를 만들어내므로, 이것을 함수로 생각할 수도 있다. 두 수의 합을 나타내는 함수를 A, 두 수의 곱을 나타내는 함수를 M이라 하면, 111+1×2를 다음과 같이 나타낼 수도 있다.
사칙연산 이미지 1
실제로 계산을 해 보면, M(1,2) = 1×2 = 2이고, A(111,2) = 111+2 = 113이 된다. 함수 A를 익숙한 기호인 +로, 함수 M을 익숙한 기호인 ×로 바꾸면 다음과 같다.
사칙연산 이미지 2
여기서 연산의 대상이 두 개인 것이 분명하므로 괄호와 쉼표까지 생략하면
사칙연산 이미지 3
와 같이 수식을 나타낼 수도 있다. 이런 표기법을 연산 기호가 연산 대상보다 앞에 온다는 뜻에서 “전위(前位)표기법(prefix notation)”이라 한다. 전위표기법과 반대로, 연산 기호가 연산 대상 뒤에 오는 표기, 즉 후위(後位)표기법도 가능하다. 즉 111+1×2를 다음과 같이 나타내는 것이다.
사칙연산 이미지 4
이 표기법은 재미있게도 한국어의 어순과 완전히 일치한다. 위의 식을 말로 써 보면
사칙연산 이미지 5
가 된다. 약간 망상에 가까운 생각이지만, 삼국시대쯤에 독자적으로 수학 표기법이 개발되었다면 후위표기법이 사용되지 않았을까 싶은생각도 든다. 그런데 잘 쓰고 있는 중위표기법을 두고서 왜 이런 이상해 보이는 표기법을 굳이 생각해 낸 것일까?

중위 표기법은 괄호 없이 수식을 제대로 표기할 수 없는 문제가 있다

수백 년 동안 중위표기법을 사용해 온 탓에 우리에게는 전위표기법이나 후위표기법이 별 쓸모도 없고 불편해 보이기까지 한다. 그렇지만 이 두 표기법에는 중위표기법으로는 불가능한 뛰어난 장점이 있으니, 아무리 복잡한 수식도 연산에 대한 우선 순위 없이 나타낼 수 있다는 점이다. 다시 111+1×2를 생각해 보자. 만약 이 중위표기법에서 연산에 대한 우선 순위가 없다면, 단순히 차례대로 연산하여 111+1 = 112, 112×2 = 224가 된다. 우리가 원하는 기존의 111+1×2를 나타내려면 순서를 바꾸어 1×2+111로 쓸 수밖에 없다. 그런데 (1+2)×(3+4)와 같은 식은 어떻게 해야 할까? 괄호 없이 1+2×3+4로 쓴 다음, 우선 순위 없이 차례대로 연산하면 그 결과는 다음과 같다.
사칙연산 이미지 6
흔히 쓰는 탁상용 전자계산기가 바로 이와 같은 방식으로 계산을 한다. 즉, 전자계산기는 “우선 순위 없는 중위표기법”을 사용하고 있다. 그러니, 111+1×2가 얼마냐는 물음에 “전자계산기로 계산해 보니 111+1×2는 224”라고 하는 것은 올바른 답변이라 할 수 없다.
계산기에는 M+, MR 등 메모리 버튼이 달려있다.
수와 기호를 어떻게 배열하여도, 중위표기법으로는 괄호를 쓰지 않는 한 (1+2)×(3+4)와 같은 결과를 얻을 수가 없다. 전자계산기에 M+, MR 같은 메모리 버튼이 있는 이유가 바로 이 때문이다. 그러나 전위표기법과 후위표기법으로는 원하는 식을 간단히 나타낼 수 있다.

이처럼 중위표기법은 다른 두 표기법과 달리, 어느 연산을 먼저 할지를 나타내는 표시가 반드시 필요하다. 이것이 바로 괄호이다. 곱셈을 덧셈보다 먼저 계산한다는 규칙을 바꿔 말하면, “곱셈에는 괄호 표시가 없어도 괄호가 붙어 있는 것처럼 생각하라”라고 할 수 있다. 즉, 111+1×2는 111+(1×2)로 계산하라는 뜻이다. 괄호()는 무언가를 묶어주는() 활모양()이라는 뜻이다. (“괄호”를 “가로”라고 써왔던 일부 극소수 학생들에게 애도를...) 예전에는 원하는 부분의 위나 아래에 선을 긋는 괄선()이 괄호보다도 더 많이 쓰였다고 하는데, 지금은 거의 찾아보기 힘들다. 아마도 현재 괄선이 쓰이는 경우는 에서처럼 제곱근 기호 윗부분을 길게 늘이는 것이 유일할 것이다.

중위 표기법으로 쓴 수식은 연산의 우선 순위 분석이 필요하다

전위표기법이나 후위표기법은 적힌 그대로 연산해도 되지만, 중위표기법에서는 괄호와 우선 순위를 고려해야 하므로 어쩔 수 없이 수식을 분석하는 단계가 필요한데, 이것을 구문분석(parsing)이라 한다. 이것은 수식을 다룰 때 꽤 불편한 점이라 할 수 있다. 수식을 처리하는 규칙을 만들어야 하는 컴퓨터 프로그래밍 언어에서는 더욱 그러하다. 이런 이유로 몇몇 컴퓨터 프로그래밍 언어는 전위표기법이나 후위표기법을 사용하여 수식을 처리하고 있다. 전위표기법을 사용하는 언어로는 인공지능 분야에서 유명한 리스프(Lisp)가 있고 후위표기법을 사용하는 언어로는 프린터 제어 언어인 포스트스크립트(PostScript)가 있다. 이 밖에도 여러 컴퓨터 프로그래밍 언어가 후위표기법을 사용하고 있는데, 후위표기법이 한국어의 어순과 잘 어울린다는 데 착안하여, 후위표기법을 사용하는 언어인 포쓰(Forth)를 한글화한 “늘품”이라는 언어가 개발되기도 하였다.
(1+2)×(3+4)의 구문분석

곱셈 쪽의 우선 순위가 높게 규칙을 정한 것에는 논리적인 이유는 없다

사칙연산에서 곱셈을 덧셈보다 먼저 하는 표기법은, 곱셈을 먼저 하라는 기호인 괄호를 생략한 것과 마찬가지라고 하였다. 왜 하필 곱셈 쪽의 괄호를 생략하는 것일까? 덧셈 쪽의 괄호를 생략할 수도 있지 않을까? 여기에 대한 대답은 “그렇다”이다. 사칙연산에서 덧셈을 곱셈보다 먼저 하는 것으로 규칙을 정했다고 하여도 논리적인 모순은 생기지 않는다. 아니, 그저 덧셈을 먼저 하라는 괄호를 생략하는 것뿐이니까 모순이 생길 이유가 없다. 다만 111+(1×2)과 (111+1)×2의 결과가 다르고 괄호의 개수가 늘어날수록 식이 더 복잡해지므로, 어느 한 쪽의 괄호를 생략하는 것으로 규칙을 정하는 것이 편리하다. 그렇지만 어떤 연산의 경우는 이런 규칙 없이 항상 괄호를 쓰기도 한다. 두 집합 사이의 연산인 합집합 연산과 교집합 연산이 바로 그런 경우이다.
다음 표에서 보듯, 경우에 따라서는 곱셈을 먼저 하라는 괄호를 생략하는 게 더 간단할 수도 있고, 또 어떤 경우에는 반대로 덧셈을 먼저 하라는 괄호를 생략하는 게 더 간단할 수도 있다.
사칙연산 이미지 7

곱셈을 덧셈보다 먼저 하는 규칙은 경험적이고 역사적인 결과의 산물

따라서 곱셈을 덧셈보다 먼저 하는 규칙은 반드시 그래야만 하는 논리적인 이유가 있다기보다는 경험적이고 역사적인 결과로서 정해진 것이라 할 수 있다. 현재와 비슷한 대수적인 표기법이 정립되기 시작한 16세기 무렵의 문헌에 이미 덧셈보다 곱셈을 먼저 하는 규칙이 보이지만 —다항식을 써 보면 곱셈의 괄호를 생략하는 쪽이 편리하다. — 더 복잡한 식을 다루는 경우는 다소 혼란스러웠다. 예를 들어, 19세기까지도 곱셈과 나눗셈이 섞여 있는 경우에는 혼동의 여지가 없도록 괄호를 쓰는 것이 권장될 정도였다. 알고 보면 지금과 같은 규칙이 최종적으로 확립된 것은 기껏해야 백 년 정도밖에 되지 않은 셈이다.
곱셈과 나눗셈이 섞여 있을 때 혼동의 여지가 있어서 화제가 된 문제가 있다. 48÷2(9+3)이 뭐냐는 문제이다. 사실 이 식은 (48÷2)(9+3)라고 쓰거나, 48÷{2(9+3)}라고 써야 혼동이 없다. 아니면 아예 분수 형태로 쓰는 것도 혼동을 피할 수 있는 방법이다

네이버캐스트

댓글 없음: