ADVERTISEMENT
오피니언 문병로의 알고리즘 여행

내 안에 나를 찾는다

중앙일보

입력

지면보기

종합 27면

문병로 서울대학교 컴퓨터공학부 교수

문병로 서울대학교 컴퓨터공학부 교수

1부터 100까지 곱하는 작업은 그 속에 1부터 99까지 곱하는 작업을 포함한다. 먼저 99까지 곱하는 작업을 해놓고 거기다 100을 곱하면 된다. 둘은 똑같은 작업이고 크기가 하나 차이 날 뿐이다.

100개의 수를 크기가 작은 순서로 정렬하려 한다. 우선 100개를 죽 훑어 가장 큰 수를 찾는다. 이 수와 제일 오른쪽 수를 서로 바꾼다. 이제 제일 큰 수는 맨 오른쪽에 자리 잡았고 이 수는 앞으로 진행될 정렬 작업에서 그냥 그 자리를 지키면 된다. 맨 오른쪽 수에 관한 한 정렬이 끝난 것이다. 남은 수는 99개다. 이제 이 남은 것들로 앞에서 했던 작업을 똑같이 반복하면 된다. 다시 말하면, 가장 큰 수를 찾아 맨 오른쪽 수와 자리 바꾸는 수고를 하고 나면 자신과 성격이 똑같지만 크기가 하나 작은 정렬 문제를 만나게 된다.

이런 식으로 어떤 문제가 자신과 성격이 똑같지만 자기보다 작은 문제를 하나 또는 여럿 포함하고 있으면 재귀적 구조를 갖는다고 한다. 수학적 귀납법, 프랙탈 등도 재귀의 다른 얼굴이다. 대학에서 배우는 알고리즘 중에 4할은 재귀 알고리즘이고, 명시적으로 드러나 있진 않지만, 재귀적 성격을 포함하고 있는 것이 또 4할이나 된다. 즉, 80% 정도가 재귀와 관계있다.

알고리즘 9/25

알고리즘 9/25

재귀의 핵심은 내 안에 존재하는 작은 나를 찾는 것이다. 같은 문제를 두고도 나를 보는 관점을 달리할 수 있다. 그때마다 내 안에 존재하는 작은 나의 모습은 달라진다. 이런 점에서 재귀는 주관적이다. 어떤 문제에 대해 사람들이 포착하는 관점이 일치하는 경우가 많다. 이 점에서 재귀는 지성의 객관성을 드러내는 예이기도 하다. 정렬 작업도 나를 보는 관점에 따라 다양한 버전이 있다. 재귀는 검색, 집합 처리, 최단 경로, 패턴 매칭, 신경망 등 주제를 가리지 않고 출현한다.

문제 해결 알고리즘을 찾는 과정에는 재귀적 구조를 발견함으로써 간명하고 우아한 해법을 얻는 경우가 많다. 이 작업의 핵심은 문제를 보는 하나의 관점을 발견하고 이 관점과 일치하는 작은 문제를 찾는 것이다. 이걸 잘 못 하면 일을 필요 이상으로 복잡하게 만들고 온갖 쓸데없는 경우의 수를 따지게 된다. 세상이 복잡해진다. 시중의 큰 프로젝트와 비즈니스에서 리더가 관점을 잘못 설정하면 그 일이 포함하는 작은 문제들도 덩달아 지저분해진다. 그래서 리더가 중요하고 고급스러운 시야를 가진 리더에게 팀원과 비교할 수 없는 보상이 주어지곤 한다. 시야가 조악한 리더는 100명의 인건비를 그냥 날릴 수 있다.

사람이 내부에 존재하는 여러 자신들을 정확하게 볼 수 있다면 세상이 훨씬 정돈될 것이다. 인간은 자기 속에 존재하는 다양한 특성 중 그런대로 경쟁력 있는 것을 취하고 안팎을 대략 맞추어 자신의 정체성을 설정한다. 인간의 자아란 명시적으로 존재하지 않는다. 뇌의 전기화학적 작용으로 만들어진 주관적 허구다. 그러니 자유도가 높을 수밖에 없고 자신을 터무니없이 정의할 공간이 생긴다. 강연에서 청중이 열광하면 자아가 더 고고해진 듯한 착각이 든다. SNS 팔로워가 잔뜩 붙고 온갖 이슈에 훈수를 두다 보면 자신을 연못의 알에서 나왔거나 전설의 동물이 변해서 된 사람 급으로 설정하기도 한다. 세상의 많은 소음이 대외적으로 설정한 자신과 내부의 자신이 ‘터무니없이 다른’ 사람들로 인해 생긴다.

문병로 서울대학교 컴퓨터공학부 교수