‘집을 사려고 할 때 몇 채의 집을 본 후에 계약해야 할까?’, ‘이 사람과 결혼하는 것이 최적일까? 더 나은 사람이 있지는 않을까?’, ‘차를 어디에 주차해야 좋을까?’, ‘주식은 언제쯤 팔아야 할까?’ 우리는 살면서 크고 작은 선택의 문제와 마주칩니다. 그럴 때마다 최적의 결과를 얻기 위해 지식과 경험을 총동원하고, 정보를 수집하고, 때로는 다른 이의 자문을 구합니다. 그럼에도 불구하고 우리의 선택은 충동적인 태도와 너무 많은 생각 사이에서 균형을 잡지 못할 때가 많습니다.
‘정말 최적의 선택을 할 수는 없었을까?’ 만약 컴퓨터에 똑같은 과제가 주어진다면 컴퓨터는 반세기 이상 축적된 컴퓨터 과학의 알고리즘을 이용해 순식간에 최적의 결과를 뽑아낼 게 분명합니다.
빅데이터, 거대정부, 대기업의 소비분석… 알고리즘은 현대 세계의 기반 시설을 점점 많이 떠맡고 있습니다. 무섭게 정교해지고, 때로는 미래까지 예측하는 수준으로 발달했습니다. 그렇다면 이처럼 발달한 알고리즘을 인간의 삶에 적용해 보는 건 어떨까요? 혹시 컴퓨터 과학의 알고리즘이 우리의 크고 작은 선택을 더 좋은 방향으로 이끌어주지는 않을까요?
책 <알고리즘, 인생을 계산하다>는 이런 흥미로운 주제를 다루고 있습니다. 컴퓨터과학과 인지과학 교수인 저자들은 컴퓨터를 위해 개발된 알고리즘이 우리가 부딪히는 일상의 문제들에도 훌륭히 적용될 수 있다고 주장합니다.
그렇다면 먼저 집을 고르는 문제부터 적용해 볼까요? 의외로 최적의 집을 구하는 문제는 간단합니다. 알고리즘에는 그 답이 나와 있습니다. 바로 37%입니다. 그러니까 가장 좋은 아파트를 구할 확률을 최대로 높이고 싶다면 아파트를 구하는 데 드는 시간의 37%까지는 탐색만 하다가 그때부터 뛰어들기, 다시 말해 계약서에 도장을 찍으면 됩니다. 만약 한 달을 돌아본다면 11일째에 도장을 들고나가는 겁니다. 최적의 결혼 상대를 택하는 문제도 마찬가지입니다. 후보 10명을 만난다면 3명이나 4명 선에서 프러포즈를 하면 됩니다.
물론 그 뒤로도 더 좋은 아파트와 더 멋진 이성을 만날 가능성은 있겠지만, 수학적 확률을 고려했을 때 컴퓨터과학이 내린 최적의 답은 37% 선에서 멈추는 것입니다.
최적멈춤이 왜 37%인지 간단히 살펴보겠습니다. 여러분의 결혼 상대 후보가 3명이라고 가정해 봅시다. 그들을 순서대로 만난다고 했을 때 경우의 수는 6가지입니다.
3명 중 최고의 후보와 결혼하기 위한 여러분의 전략을 살펴보면 첫 번째 후보는 무조건 선택하지 않고 넘어갑니다. 그리고 다음 후보가 바로 앞 후보보다 못하다면 그다음 후보까지 만나 볼 것이고, 앞 후보보다 낫다면 현재 후보에서 멈춥니다. 이 전략을 썼을 때 최고의 후보를 만날 확률은 놀랍게도 50%가 되며, 두 번째 후보가 최고의 후보일 확률은 33.3%가 됩니다.
후보 숫자를 계속 늘려 봅시다. 후보가 4명일 때 두 번째 후보가 최고의 후보일 확률은 25%, 10명일 때 네 번째가 최고일 확률은 30%, 50명일 때는 열아홉 번째가 36%입니다. 이런 식으로 대상자를 계속 늘려가다 보면 최고의 배우자와 만나는 지점은 37%로 수렴하게 됩니다.
물론 첫사랑과 결혼해서 행복하게 잘 살고 계신 분들께는 의미 없는 알고리즘이 되겠습니다. 그분들은 첨단 컴퓨터과학을 능가하는 최적멈춤의 감각을 가지고 계신 분들이니까요.
컴퓨터 과학자에게 있어서 ‘탐색’은 정보를 모으는 것이고, ‘이용’은 검증된 결과를 얻기 위해 그 정보를 사용하는 것입니다.
예를 들어, 최신음악 담당 기자에게는 탐색이 생소한 음악만 듣는 것이고, 이용은 ‘비틀즈’나 ‘U2’의 음악을 들으면서 탐색의 피로함을 달래는 것입니다. 이직이나 창업을 하는 것은 탐색이 될 것이며, 직장에 그대로 남는 것은 이용이 됩니다. ‘YOLO’를 누리는 것은 탐색이며, 이쯤에서 저축을 하고 결혼하는 것은 이용입니다.
우리의 삶은 탐색과 이용 사이에서 균형을 얻는 지점이 필요합니다. 알고리즘은 그 균형점을 결정하는 문제를 승률로 풀고 있습니다.
프레드는 슬롯머신이 가득 들어찬 카지노를 방문했습니다. 각 슬롯머신에는 각기 다른 승률이 설정되어 있습니다. 이제 프레드는 슬롯머신을 일일이 잡아당겨 승률이 얼마나 되는지 시험하는 일과 이쯤에서 가장 유망한 승률을 보이는 기계 하나만 고르는 일, 둘 사이에서 결정해야 합니다. 카지노 영업시간은 채 2시간이 남지 않았습니다.
프레드가 돈을 많이 따려면 탐색을 계속해야 할까요? 아니면 이용을 선택해야 할까요?
문제를 단순화하기 위해 카지노의 슬롯머신이 단 2대뿐이라고 가정해 봅시다. 한 대는 총 15번을 잡아당겨서 9번은 돈을 따고, 6번은 잃었습니다. 다른 한 대는 2번만 잡아당겼는데 1번은 따고, 1번은 잃었습니다. 그렇다면 승률은 각각 60%와 50%가 됩니다. 2번을 했는데 승률 50%라는 건, 세 번째, 네 번째 시도를 할수록 모두 잃을 가능성도 있지만, 반대로 딸 가능성도 있다는 의미입니다.
단순히 현재 승률로만 따진다면 첫 번째 기계를 선택해서 이용하는 게 현명하겠지만, 알고리즘은 두 번째 기계에 탐색의 가치가 있다고 판단합니다. 어쨌든 확인된 60%의 승률보다 더 높은 쪽으로의 가능성이 열려 있기 때문입니다.
절박한 상황일수록 탐색의 가치는 커집니다.
9회 말 2아웃인 상황에서 큰 점수 차로 역전하려면 타율 2할 9푼인 타자보다 타석에는 몇 번 들어서지 않았지만, 어제 홈런을 친 루키를 선택하는 것도 어떻게 보면 단순 승률과 무관한 탐색/이용 알고리즘에 해당합니다.
책장의 책들을 이름순으로 한번 정렬해 봅시다. ‘ㄱ’부터 ‘ㅎ’까지 검색하다가 순서가 틀린 책이 보이면 제자리에 꽂아 놓고 다시 처음부터 정렬을 계속하는 것입니다. 이런 정렬을 알고리즘에서는 ‘거품정렬’이라고 합니다.
만약 순서가 뒤죽박죽일 땐 모든 책을 다 꺼낸 뒤 한 권씩 꽂는 게 더 나을 수 있습니다. 첫 책을 책장의 중간에 꽂고, 다음 책은 그 책의 앞이나 뒤로 꽂는 방법을 반복하는 겁니다. 이런 방법은 ‘삽입정렬’이라고 합니다. 삽입정렬은 거품정렬에 비해 빠르지는 않지만, 직관적입니다.
이름순이 아니라 주제별로 정렬한다면 여러 바구니에 담아 정렬하는 ‘버킷정렬’이 효과적입니다.
그렇다면 완전히 뒤섞인 책 16권을 가장 빠르고 쉽게 정렬하는 방법은 무엇일까요? 2권을 먼저 정렬하고 4권, 8권으로 늘려나가며 정렬을 반복하는 것입니다.
16권을 한꺼번에 정렬하는 것보다 8권을 정렬하는 것이 빠르고 쉬우며, 8권보다는 4권, 4권보다는 2권을 정렬하는 것이 빠르고 쉽기 때문입니다. 이 정렬 방법은 컴퓨터과학의 역사에서 중요하게 다루는 ‘합병정렬’입니다.
우리는 구글과 같은 것을 ‘검색엔진’이라 부르고 있지만, 사실은 ‘정렬엔진’에 더 가깝습니다. 복잡한 알고리즘 시스템도 앞서 보인 단순한 정렬에서 비롯되기 때문입니다.
컴퓨터는 이메일 보관함에 있는 수천 통의 편지 중에서 50통을 수신 시간에 따라 첫 페이지에 보여줍니다. 홍대에서 식당을 검색하면 수백 곳의 식당 중에서 근접 거리나 평가 점수에 따라 상위 10곳이 정렬되어 나타납니다. 페이스북의 뉴스피드, 유튜브의 영상들은 알고 보면 나름의 기준에 따라 얼마나 잘 정렬하여 보여주는가 하는 작업입니다.
결국 정렬하는 주된 이유는 자료를 사람의 눈에 유용한 형태로 보여주기 위함입니다. 그래서 정렬은 인간의 정보 경험의 핵심이 됩니다.
정렬을 이해하면 우리가 사는 사회의 본질을 이해할 수 있습니다. 우리가 먼저 보고자 하는 것, 먼저 알고자 하는 것, 즉 사람들이 만드는 질서에 관해 알려주는 것이 바로 ‘정렬’이니까요.
알고리즘이라는 단어는 9세기 때 페르시아의 수학자 ‘알콰리즈미’의 이름에서 유래했습니다. 4,000년 전 수메르인의 점토판에도 긴 나눗셈을 하는 방식이 적혀 있습니다. 결국 알고리즘이란, 오랜 세월 동안 인간이 실생활에 적용해 왔던 수학적 해법들을 컴퓨터에 심어 놓은 것입니다.
그렇다면 이제 컴퓨터과학이 향상시킨 알고리즘을 다시 끄집어내어 인간의 실생활에 적용할 때가 되지 않았을까요? 우리도 컴퓨터처럼 언제나 최적의 선택을 하고 싶으니까요. 지금까지 책을 말하고, 책을 탐하는 ‘책담책탐’이었습니다.
YouText의 콘텐츠는 이렇게 만들어 집니다.













