1분과학·북툰·SOD

[북툰] 아파트와 배우자를 고를 때도 이젠 알고리즘 [컴퓨터 과학]

Buddhastudy 2021. 1. 14. 18:54

 

 

 

집을 사려고 할 때 몇채의 집을 본 후에 계약해야 할까?

이 사람과 결혼하는 것이 최적일까?

더 나은 사람이 있지는 않을까?

차를 어디에 주차해야 좋을까?

주식은 언제쯤 팔아야 할까?

 

우리는 살면서 크고 작은 선택의 문제와 마주칩니다.

그럴 때마다 최적의 결과를 얻기 위해 지식과 경험을 총동원하고

정보를 수집하고

때로는 다른 이의 자문을 구합니다.

 

그럼에도 불구하고 우리의 선택은

충동적인 태도와 너무 많은 생각 사이에서 균형을 잡지 못할 때가 많습니다.

 

정말 최적의 선택을 할 수는 없었을까?

만약 컴퓨터에게 똑같은 과제가 주어진다면

컴퓨터는 반세기 이상 축적된 컴퓨터 과학의 알고리즘을 이용해

순식간에 최적의 결과를 뽑아낼 게 분명합니다.

 

빅데이터 거대정부 대기업의 소비분석

알고리즘은 현대세계에 기반시설을 점점 많이 떠맡고 있습니다.

무섭게 정교해지고, 때로는 미래까지 예측하는 수준으로 발달했습니다.

 

그렇다면 이처럼 발달한 알고리즘을 인간의 삶에 적용해 보는 건 어떨까요?

혹시 컴퓨터 과학의 알고리즘이 우리의 크고 작은 선택들을 더 좋은 방향으로 이끌어주진 않을까요?

 

알고리즘, 인생을 계산하다는 이런 흥미로운 주제를 다루고 있습니다.

컴퓨터 과학과 인지과학 교수인 저자들은 컴퓨터를 위해 개발된 알고리즘이

우리가 부딪히는 일상의 문제들에도 훌륭히 적용될 수 있다고 주장됩니다.

 

그렇다면 먼저 집을 고르는 문제부터 적용해 볼까요?

 

--

알고리즘1: 최적멈춤

 

의외로 최적의 집을 구하는 문제는 간단합니다.

알고리즘은 그 답이 나와있습니다.

바로 37%입니다.

그러니까 가장 좋은 아파트를 구할 확률을 최대로 높이고 싶다면

아파트를 구하는데 드는 시간의 37%까지는 탐색만 하다가

그때부터 뛰어들기, 다시 말해 계약서에 도장을 찍으면 됩니다.

 

만약 한달을 돌아본다면 11일째 도장을 들고 나가는 겁니다.

 

최적의 결혼 상대를 택하는 문제도 마찬가지입니다.

후보 10명을 만난다면 3명이나 4명 선에서 프로포즈를 하면 됩니다.

 

물론 그 뒤로도 더 좋은 아파트와 더 멋진 이성을 만날 가능성은 있겠지만

수학적 확률을 고려했을 때

컴퓨터 과학이 내린 최적의 답은 37% 선에서 멈추는 것입니다.

최적 멈춤이 왜 37%인지 간단히 살펴보겠습니다.

 

여러분의 결혼상대 후보가 3명이라고 가정해 봅시다.

그들을 순서대로 만난다고 했을 때

경우의 수는 다음 6가지입니다.

 

3명 중 최고의 후보와 결혼하기 위한 여러분의 전략은 이렇습니다.

첫 번째 후보는 무조건 선택하지 않고 넘어갑니다.

다음 후보는 바로 앞 후보보다 못하면 그 다음 후보까지 만나볼 것이고

앞 후보 보다 낫다면 지금 후보에서 멈춥니다.

 

이 전략을 썼을 때, 최고의 후보를 만날 확률은 놀랍게도 50%가 되며

두 번째 후보가 최고의 후보일 확률은 33.3%가 됩니다.

 

후보 숫자를 계속 늘려가 봅시다.

후보가 4명일 때, 두 번째 후보가 최고의 후보일 확률은 25%

10명 일 때 4명째가 최고일 확률은 30%

50명일 때는 19번째가 36%입니다.

 

이런식으로 대상자를 계속 늘려가다보면

최고의 배우자와 만나는 지점은 37%로 수렴하게 됩니다.

 

물론 첫사람과 결혼해서 행복하게 잘 살고 계신 분들께는 의미 없는 알고리즘이 되겠습니다.

그분들은 첨단컴퓨터 과학을 능가하는 최적 멈춤의 감각을 가지고 계신 분들이니까요.

 

--

알고리즘 2탐색/이용

 

컴퓨터 과학자에게 있어서

탐색은 정보를 모으는 것이고, 이용은 검증된 결과를 얻기 위해 그 정보를 사용하는 것입니다.

 

예를 들어 최신음악 담당기자에게는 탐색이 생소한 음악만 듣는 것이고

이용은 비틀즈나 유튜브의 음악을 들으면서 탐색의 필요함을 달래는 것입니다.

 

이직이나 창업을 하는 것은 탐색이 될 것이며

직장에 그대로 남는 것은 이용이 됩니다.

 

Yolo를 누리는 것은 탐색이며

이쯤해서 저축을 하고 결혼을 하는 것은 이용입니다.

 

우리의 삶은 탐색과 이용사이에서 균형을 얻는 지점이 필요합니다.

알고리즘은 그 균형점을 결정하는 문제를 승률로 풀고 있습니다.

 

프레드는 슬롯 머신이 가득 들어찬 카지노를 방문했습니다.

각 스롯머신에는 각기 다른 승률이 설정되어 있습니다.

이제 프레드는 스롯머신을 일일이 잡아당겨 승률이 얼마나 되는지 시험하는 일과

이쯤에서 가장 유망한 승률을 보이는 기계 하나만 고르는 일

둘 사이에서 선택을 해야 합니다.

 

카지노의 영업시간은 채 2시간이 남지 않았습니다.

프레드가 돈을 많이 따려면 탐색을 계속 해야 할까요?

아니면 이용을 선택해야 할까요?

 

문제를 단순화하기 위해 카지노의 슬롯머신이 단 2대 뿐이라고 가정해 봅시다.

한 대는 총 15번을 잡아당겨서 9번은 돈을 따고 6번은 잃었습니다.

다른 한 대는 두 번만 잡아당겼는데 한번은 따고 한번은 잃었습니다.

 

그렇다면 승률은 각각 60%50%가 됩니다.

두 번을 했는데 승률 50%

3번째 네 번째 시도를 할수록 모두 잃을 가능성도 있지만

반대로 딸 가능성도 있다는 의미입니다.

 

단순히 현재 승률로만 따진다면

첫 번째 기계를 선택해서 이용을 하는 게 현명하겠지만

알고리즘은 두 번째 기계에 탐색의 가치가 있다고 판단합니다.

어쨌든 확인된 60% 승률보다 더 높은 쪽으로의 가능성이 열려있기 때문입니다.

 

절박한 상황일수록 탐색의 가치는 커집니다.

9회말 투아웃인 상황에서 큰 점수차로 역전을 하려면

타율 29푼인 타자보다 타석에는 몇 번 들어서지 않았지만

어제 홈런을 친 루키를 선택하는 것도

어떻게 보면 단순 승률과 무관한 탐색 이용 알고리즘에 해당됩니다.

 

--

알고리즘 3: 정렬

 

책장의 책들을 이름순으로 한번 정렬해 봅시다.

ㄱ부터 ㅎ까지 검색하다가 순서가 틀린 책이 보이면 제자리에 꽂아놓고

다시 처음부터 정렬을 계속 하는 것입니다.

이런 정렬을 알고리즘에서는 거품정렬이라고 합니다.

 

만약 순서가 뒤죽박죽일 때는 모든 책을 다 꺼낸 뒤에

한 권씩 꽂는 게 더 나을 수 있습니다.

첫책을 책장의 중간에 꽂고

다음책은 그 책의 앞이나 뒤로 꽂는 방법을 반복하는 겁니다.

이런 방법은 삽입정렬이라 합니다.

삽입정렬은 거품정렬에 비해 빠르지는 않지만 직관적입니다.

 

이름순이 아니라 주제별로 정리를 한다면

여러 바구니에 담아서 정렬하는 버킷정렬이 효화적입니다.

 

그렇다면 완전히 뒤섞인 책 16권을 가장 빠르고 쉽게 정렬하는 방법은 무엇일까요?

2권을 먼저 정렬하고 4, 8권 식으로 정렬을 반복하는 것입니다.

16권을 한꺼번에 정렬하는 것보다

8권을 정렬하는 것이 빠르고 쉬우며

8권보다는 4, 4권 보다는 2권을 정렬하는 것이 빠르고 쉽기 때문입니다.

 

이 정렬방법은 컴퓨터 과학의 역사에서 중요하게 다루는 합병정렬입니다.

우리는 구글과 같은 것을 검색엔진이라고 부르고 있지만

자신은 정렬엔진에 더 가깝습니다.

 

복잡한 알고리즘 시스템도 앞서 보인 단순한 정렬에서 비롯되기 때문입니다.

컴퓨터는 이메일 보관함이 있는 수천통의 편지 중에서 50통을 수신시간에 따라 첫페이지에 보여줍니다.

 

홍대에서 식당을 검색하면 수백 곳의 식당 중에서 근접거리나 평가점수에 따라 상위 10곳이 정렬되어 나타납니다.

페이스북, 뉴스피드, 유튜브의 영상들 알고 보면 나름의 기준에 따라 얼마나 잘 정렬하여 보여주는가 하는 작업입니다.

 

결국 정렬을 하는 주된 이유는

자료를 사람의 눈에 유용한 형태로 보여주기 위함입니다.

그래서 정렬은 인간의 정보 경험의 핵심이 됩니다.

 

정렬을 이해하면 우리가 사는 사회의 본질을 이해할 수 있습니다.

우리가 먼저 보고자 하는 것, 먼저 알고자 하는 것,

, 사람들이 만드는 질서의 관해 알려주는 것이 바로 정렬이니까요.

 

알고리즘 인생을 계산하다이 외에도 많은 알고리즘을 소개합니다.

각 알고리즘마다 컴퓨터 과학과 일상사를 섞어서 흥미롭게 전개합니다.

 

언뜻 알고리즘을 IT와 컴퓨터 분야의 한정된 분야로 생각하기 쉽지만

알고리즘은 컴퓨터보다 훨씬 폭넓게 쓰이고

컴퓨터보다 훨씬 이전부터 사람이 써온 개념입니다.

 

알고리즘이라는 단어는 9세기때 페르시아의 수학자 알콰리즈미의 이름에서 유래했습니다.

4천 년 전, 수메르인의 점토판에도 긴 나눗셈을 하는 방식이 적혀있습니다.

 

결국 알고리즘이란

오랜 세월 동안 인간이 실생활에 적용해왔던 수학적 해법들을

컴퓨터에 심어놓은 것입니다.

 

그렇다면 이제 컴퓨터 과학이 향상시킨 알고리즘을 다시 끄집어내어

인간의 실생활에 적용할 때가 되지 않았을까요?

우리도 컴퓨터처럼 언제나 최적의 선택을 하고 싶으니까요.