본문 바로가기

글/나의 생각, 나의 삶

Optimality 만큼이나, Approximation 이 중요하다.

Computer Science 에서 알고리즘 문제를 푸는 방법 중 하나로 Approximation algorithm이 있다. 계산해야할 것이 너무나 많아서, 주어진 시간 안에 Solution 을 찾지 못 하는 경우에 사용할 수 있는 미봉책이다. 가령 해결책을 찾기 위해서 10^8! (1억 팩토리얼)번 순회해야 한다고 해보자. 일반적인 Computing power 로는 완료할 수 없는 연산이다. 그럴 때, Optimal Solution 을 찾으려고 하는 것이 아니라, Approximation 을 통해서 근사적으로, Optimal 과 가까운 결과를 얻으려고 할 수 있다. 그렇게 함으로써 현실적인 시간 안에 답을 구하지 못하는 문제를, 차선의 답을 구할 수 있도록 바꿔낸다.

 

이 CS 이론이 너무나 현실적이고, 멋진 해결책이라는 생각이 들었다. 자칫 Approximation이 평가절하될 수 있다고 생각한다. 정확한 답을 찾아내지 못 했고, 그 자체로 불완전한 의미를 지니기 때문이다. 하지만 현실적인 제약을 고려한다면 이를 평가절하해선 안 된다. 이는 오히려 필수불가결하다. 그리고 이것이 우리의 삶과 맞닿아 있다고 느꼈다.

 

우리 삶에서의 선택은 Approximation algorithm 이어야 한다고 믿는다. Optimal Solution 을 찾기 위해서 traverse 해야하는 여정은 너무나 길다. 물리적으로, 현실적으로 resource가 부족하다. resource란, 돈/시간일 것이다.

 

가령 직업을 선택한다고 해보자. 이 알고리즘 문제는 다음과 같다

  • 삶의 효용을 극대화하는 최적의 직업을 찾으시오.

이를 찾기 위해서는 하나하나 경험해보는 수밖에 없다. 100년을 살더라도, 모든 것을 경험해보고 자신에게 최적인 직업을 찾을 수 있을까? 그렇지 않다. 아무리 직업을 잘 분류하고, 선택에 따른 가지치기를 잘 수행하더라도, Optimal 임을 증명할 수 있는 직업을 찾기란 불가능하다. 정확히는, 주어진 돈/시간 안에서 불가능할 것이다. 우리는 단지 삶의 효용을 근사적으로나마 최적인 것”처럼 보이는” 직업을 택할 수밖에 없다.

 

어린 시절 운동에 재능을 보이는 아이를 생각해보자. 운동에는 또 그 종류가 많다. 야구/축구/농구/하키/스키 등을 모두 접해보고, 방향을 결정하기엔 시간이 부족하다. 특히 운동은 어릴 때 시작해야 하므로, 더욱이 현실적인 제약이 엄격하다. 모든 것을 경험할 시간에, 근사적으로 적절해 보이는 것을 빠르게 선택하는 것이 현실적인 방향이라고 생각한다.

 

위 예시 이외에도, 삶에서 대부분의 결정은 Optimal 을 찾는데 굉장히 큰 비용이 든다. 진로, 사랑, 주거 문제, 우정, 회사 선택 등 모두. 명확하게 말할 수 있는 것이 더 적다. 그러므로 비용을 줄이고, sub-optimal 을 선택하는게 옳은 결정일 때가 많다. 그리고 중요한 것은 선택 이후엔 믿음의 문제라는 것이다. 한 선택에 대해서, 그것이 최적임을 언젠가 알 수 있을까? 그렇지 않다. 동일한 시간은 한번밖에 살지 못하고, re-produce 할 수 없다. 즉 평생을 산다고 해도, 그 선택이 최적임을 증명하는 것은 불가능하다. 결국 우리는 그나마 적절해보이는 것을 선택하고, 그것이 최적이라고 믿고 살아가는 지혜를 배워야만 한다.