과학자들이 문제를 해결하는 방법은 보통 가설로 세우고 이 가설을 증명하는 것일 것이다. 아직 모르는 현상에 대해 ‘혹시 이럴 수 있지 않을까?’ 하는 생각으로 연구를 진행하고 그것이 수학적 증명이나 실험의 결과가 가설과 일치한다면 가설이 증명되는 것이다. 지금까지 인류문명 중 놀라운 발견도 이와 비슷한 방식으로 증명됐다는 것을 알 수 있다. 뉴턴의 만유인력 법칙(1687년)1이나 아인슈타인의 상대성이론(1905년)2 등도 지금으로부터 아주 오래전 실험적으로 정밀하게 증명할 수 없는 현상임에도 불구하고 그들은 가설을 세웠고 다른 현상과 맞추어 가설이 맞을 수 있다는 생각을 점차 하게 되었고 비로소 최근에 그 가설이 맞는다는 것을 실험적으로 증명된 바 있다. 따라서 나는 어떤 새로운 현상을 발견하고 그 문제를 풀기 위해서는 가설을 세우는 것이 문제 해결의 시작이라고 생각한다.

나는 엉뚱한 가설을 자주 세운다. 지하철을 타고 출퇴근하거나 길을 걷다가 마치 과학자들이 하는 것처럼 생각하곤 한다. 생각하는 주제는 컴퓨터 사이언스 분야에 관한 것도 있고 일상생활에 관한 것도 있다. 하지만 아쉽지만, 더 발전시키지 못하고 보통 가설 단계에서 머무르고 만다. 나는 왜 다른 과학자들처럼 생각도 하고 가설도 세우는데 그들처럼 놀라운 발견은 하지 못하는 것일까? 혹시 지적 생명체의 필수 요소라고 말하는 수학적 사고를 못 하기 때문은 아닐까? 하는 의문이 들었다. 이런 이유로 이 글은 과학적이지 못한 나 자신을 위해 앞으로 좀 더 과학적인 사고와 문제 해결 능력을 키우기 위해 정리한 글이다.

그래서 나는 수학적 사고를 위한 방법을 좀 찾아봤다. 찾아보니 수학적 사고를 하기 위해서는 문제가 무엇인지를 아는 것이 가장 중요하다고 한다. 당연하겠지만 문제를 제대로 이해하는 것이 무엇보다 중요하다. 그럼 우리가 흔히 생각하는 문제와 문제 해결이란 무엇을 말하는 것일까? 내가 조사해본 내용과 내 나름대로 생각을 종합해서 내린 문제의 정의는 어떤 쉽게 해결하기 어려운 목표가 있고 이 목표를 해결하기 위해서 생각하는 시간이 필요한 것들을 모두 문제라고 정의할 수 있을 것 같았다. 때로는 생각하는 시간이 아주 오래 걸릴 수도 있고 때로는 아무리 오랜 시간 생각을 해봐도 그 문제를 풀 수 없는 경우도 있을 것이다. 따라서 문제 해결은 자연스럽게 바로 이런 목표에 도달한 것이라고 정의할 수 있었다.

문제는 여러 유형으로 나눌 수 있다. 쓸데없는 구분 같아 보이지만 문제를 해결하는 전략을 수립할 때 그 문제가 어떤 유형인지 알 수 있다면 전략도 달라질 것이고 해결 방법도 유형을 모를 때보다 쉬울 것이다. 그래서 예전부터 많은 사람이 문제의 유형을 정의하였었는데 그 중 Krulick & Rudnic는 단순한 회상만으로 해결되는 문제 유형을 정의했었다. 이는 그냥 암산이나 이미 학습된 알고리즘으로 해결이 가능한 문제를 말한다. George Polya는 결정 문제 유형에 관해 얘기하였었고 문제 해결방법은 계획, 이해, 실행, 반성의 절차를 거쳐야 한다고 주장하였다. Erkki Pehkonen는 반드시 답이 하나인 문제와 문제 자체의 답의 존재성이나 진위 가능성이 결정되지 않는 유형을 정의하였다.

그리고 어떤 문제를 해결하기 위해서는 자원(resource), 발견술(heuristic), 통제력(control)이 필요하다. 여기서 자원은 그냥 지식으로 생각할 수도 있는데 문제와 관련된 수학적 지식 배경이나, 알고리즘 그리고 때로는 직관을 말한다. 지식과 알고리즘은 당연하다고 생각하지만, 직관이라는 것이 이해가 안 될지도 모르겠지만 생각해보면 직관을 이용해 더욱 쉽게 문제가 해결되는 경우를 주변에서 어렵지 않게 찾아볼 수 있다. 최근 인공지능인 알파고와 인간의 바둑 대결에서 인공지능은 인간의 직관을 흉내[3]내 승리한 바 있다. 또 러시아가 우주 개발을 할 때 직관과 경험적인 부분이 많이 포함돼 있었기 때문에 그 당시 미국보다 더 안전하기 우주선을 개발할 수 있었다는 얘기도 있고 과학자들이 쓰는 경험 상수도 직관과 경험에 의한 것으로 이 방법이 실제 과학적인 접근보다 더 정확한 경우도 있었다.

이런 자원을 활용한 다음 문제를 해결하기 위해서는 발견술이란 능력이 필요한데 파푸스(Pappus)는 “발견술이란 원론을 공부한 후에 수학 문제를 푸는 능력을 얻고자 하는 사람들이 사용하도록 하기 위한 특별한 가르침이며 오직 이것에만 쓰일 수 있다.” 라고 말한 바 있다. 그리고 데카르트는 모든 문제를 해결할 수 있는 보편적인 방법을 모색했고 어떤 문제이든 수학 문제로 환원하라는 등의 어려운 말을 했다. 하지만 내가 이 부분을 모두 이해하기는 어려워서 더 깊게는 보지 않고 건너뛰었다. 무엇보다 현재 나에게는 자원 즉, 지식이 더 필요해 보였다.

하지만 자원과 발견술만 가지고는 문제를 해결하는 데는 부족함이 있다. 마지막으로 필요한 것이 바로 통제력이다. 통제력은 자원과 발견술을 효과적으로 이용할 수 있는 능력을 말한다.

이러한 문제 해결 능력이 갖춰져 있다면 이제 문제를 풀 차례이다. 문제를 푸는 과정은 보통 문제를 이해하고, 계획을 작성하고 그 계획을 실행하고 결과를 검증하는 순서라고 한다. 문제를 이해하는 단계에서는 문제에서 구하고자 하는 것, 주어진 것 등을 알고, 용어의 뜻을 파악하며, 문제를 분석해야 한다. 미지의 것(구하고자 하는 것)은 무엇인가? 주어진 것은 무엇인가? 조건은 무엇인가? 조건은 미지의 것을 구하기에 충분한가? 불필요한 조건은 없는가? 등의 조건으로 분해해 봐야 한다.

계획 작성하는 단계에서는 문제에서 주어진 것과 구하고자 하는 것 사이의 관계를 파악하는 단계로써 주어진 것과 구하고자 하는 것 사이의 관련성을 즉각적으로 발견할 수 없을 때는 보조 문제도 고려할 필요가 있다. 전에 그 문제를 본 적이 있는가? 약간 다른 형태로 된 같은 문제를 본 적이 있는가? 관련된 문제를 알고 있는가? 도움이 될 것 같은 어떤 사실이나 정리를 알고 있는가를 확인하여야 한다.

그러고 나서 미지인 것을 잘 살펴보아야 한다. 친숙한 문제 중 미지인 것이 같거나 유사한 문제를 생각해 보는 것도 좋다. 관련된 문제로 전에 풀어본 적이 있는 문제가 있다면 그 결과나 방법을 이 문제 해결에 활용할 수는 없을지 생각해보자. 문제를 달리 진술할 수 있는지 그리고 어렵다면 다시 정의로 되돌아가 보는 것도 도움이 된다. 용어의 정의가 무엇이었는지 다시 생각해 보는 것도 좋다.

문제와 관련된 보다 쉬운 문제를 생각해 낼 수 있지, 문제를 보다 일반적인 형태로 변형할 수 있을지, 문제를 보다 특수한 문제로 변형할 수 있을지, 문제를 부분적으로 풀 수 있는지, 조건 가운데 일부분만 남기고 다른 것을 버려보는 것도 문제를 푸는 방법이다. 그렇게 하면 미지인 것은 어느 정도까지 정해지는지, 자료로부터 무엇인가 유용한 것을 끌어낼 수 없을지, 미지인 것을 결정하는데 적절한 다른 자료를 생각해보고 자료는 모두 사용했는지, 조건은 모두 사용 했는지 문제에 포함된 핵심 개념을 모두 고려했는지를 확인할 수 있다.

계획의 실행하는 단계에서는 해결 계획을 실행하는 단계풀이 계획의 각 단계를 조심스럽게 실행해보고 각 단계가 올바른지 명확히 알 수 있는지 그리고 그것이 옳다는 것을 증명할 수 있는가를 생각해보는 단계이다.

마지막으로 반성 및 결과 검증 단계이다. 풀이 과정을 점검해 보고 결과를 다른 방법으로 끌어낼 수 있는가를 생각해보는 것이다. 기존 풀이보다 더 나은 해법은 없는지, 결과나 방법을 어떤 다른 문제에 활용할 수 있는지, 문제의 자료, 조건, 구하고자 하는 것 등을 일반화, 특수화, 유추 등을 통해 변형하여 새로운 문제를 만들어볼 수는 없는지 등을 생각해 보아야 한다. 지금까지 수학적 문제 풀이과정에 관해 설명했는데 내가 당장 이것을 모두 암기한다고 해서 수학적 사고가 길러지지는 않을 것 같다. 어떤 문제를 접했을 때 수학적 해결 과정을 염두에 두고 반복을 통해 내 것으로 만드는 시간이 필요하다.

참고문헌