알고리즘은 만병통치약 #3

by 전익진

http://www.yes24.com/Product/Goods/91614222


최단 경로


‘선생님 알고리즘은 꼭 복잡해야 하나요?'

'문제 해결을 위해 절차를 수립한다는 건 그만큼 문제가 어려워서가 아닐까요?'

'당연히 알고리즘은 언제나 복잡하지 않나요?’

하남의 어느 고등학교 특강 시간에 2학년 학생이 내게 던진 질문이다. 그 당시 참 똑똑한 학생들이라는 생각을 했다. 그래서 그런지 잊혀지지 않는 순간이다.

하지만 아쉽게도 나의 대답은

‘아니요, 알고리즘은 아주 단순해야 돼요. 최종 결과인 ‘수립된 절차가 복잡하면 안 된다.’는 거죠. 짧고 간단명료하게 정의돼야 합니다. 그래서 애매모호하면 안 되겠죠.’

0036.jpg

핵심은 최종 결과물인 '수립된 절차'가 단순한 것이라는 점이다. 이 단순한 결과를 얻기 위한 과정은 복잡해도 관계없다. 아니 복잡해야 된다. 그렇게 복잡하게 생각하기 때문에 모든 문제가 단순하게 풀리는 것이다.

수립된 절차가 단순해야 한다는 건 바꿔 말하면 최단 경로를 선택하라는 이야기와 같다.

옛말에 ‘어찌 가든 서울만 가면 된다.’는 말은 알고리즘에서는 어울리지 않는 말이다.

서울로 가는 길을 이것저것 비교하고 검토하는 건 좋은데 최종 결정은 가장 빠르고 정확한 경로를 선택해야 된다는 점이다.

바로 이 가장 빠른 길을 찾는 훈련이 알고리즘의 진정한 훈련이다.




욕심


서울로 가는 길을 이것저것 비교하고 검토하여 최단 경로를 찾았다.

그런데 서울에 도착해 보니 길이 좋아 더 가도 좋을 듯하다. 그래서 이왕 간 거 좀 더 올라가기로 했다.

결론적으로 그러면 안 된다.

0037.jpg

서울로 가는 길을 찾는 것이 목적이었다면 서울까지만 가면 된다. 길이 좋다고 더 가면 안 되는 것이다.

즉 알고리즘에서는 그 끝을 명확히 정의해야 한다는 것이다.

이런 현상은 욕심에서 비롯된다.

이왕 해결한 거 좀 더 많은 것을 해결하고자 하는 욕심 때문이다.

이럴 경우는 욕심을 또 다른 문제로 인식해서 알고리즘을 정립하는 것이다.

새롭게 문제 해결을 위한 절차로 재 구성하는 것이 올바르다.

이는 주어진 문제를 해결하고자 수립된 알고리즘은 반드시 그 끝이 명확하게 정의되어야 한다는 점이다.

0038.jpg

또한 문제를 해결하기 위한 절차가 수립되었음에도 계속해서 반복적으로 수행되는 절차 역시 알고리즘을 볼 수 없다.

수립된 절차 내에서의 반복은 문제 해결을 위한 과정일 수 있겠지만 끝없이 절차가 반복되는 무한반복은 알고리즘이라 하지 않는다.

‘그럼 알고리즘에서 수립된 절차에서는 언제나 그 결론이 하나만 존재해야겠네요?’

끝을 정확히 명시하는 것과 결과가 반드시 하나만 존재해야 하는 것은 같은 의미가 아니다.

수립된 절차의 결론은 복수의 값 또는 경우를 가질 수 있다.

끝이 존재한다고 반드시 결과가 하나일 필요는 없다.




이타적


서울로 가는 최단 경로는 훌륭한데 그 길이 나만 갈 수 있는 길이면 이 것 역시 알고리즘이라 할 수 없다.

수립된 절차가 뜬 구름 잡는 이야기가 되어서는 안 된다는 것이다.

0038.jpg

정의된 절차는 반드시 수행될 수 있는 내용이어야 한다.

꼭 알고리즘이 아니어도 이 부분이, 나 혼자만이 알 수 있는 결과, 데이터 쟁이들이 가장 많은 실수를 범하는 부분 중에 하나이다.

알고리즘 내에서의 결과이던 문제에 대한 결과이던 그 결과가 정작 분석을 수행한 당사자만이 정답으로 생각하는 오류를 말한다.

남들 아무도 인정하지 않는데 최종 도출된 결론이 혼자만 옳다고 우기는 경우가 종종 발생한다.

나 역시도 가끔 이런 오류를 범하곤 한다.

문제를 해결하기 위한 결과는 당연히 모두에게 공감이 되고 납득할 만한 것이어야 되고 그 문제를 풀기 위한 과정, 즉 알고리즘에서의 결과 역시 충분히 모두가 공감할 수 있는 내용이 되어야 한다는 점이다.

따라서 최종 문제에 대한 결과도 중요하지만 그 과정 역시도 매우 중요하다는 사실이다.

‘중요하다 아니다.’의 판단은 모두가 ‘공감할 수 있는 것이냐 아니냐.’의 문제와 같다.

0039.jpg

데이터 쟁이는 언제나 이타적(利他的)이어야 한다. 언제나 분석을 수행한 자신보다 그 결과를 필요로 하는 사람들을 먼저 생각해야 한다.

‘이렇게 복잡하고 어려운 분석기법은 아마 대한민국에 나 밖에 못할걸?’

그렇다 그건 당신밖에 못한다. 하지만 그 결과 역시 당신밖에 필요한 사람이 없다.

매거진의 이전글알고리즘은 만병통치약 #2