
@beoped 님의 글에서 이 책이 재미있다는 얘기를 보고 바로 읽어봐야겠다는 생각을 했다. 책 제목이나 재미있는 그림의 표지도 호기심을 한껏 높여줬다. 수학에 문외한인 나도 한번 도전해볼 수 있는 책일까?
알고리즘이 뭐지?
알고리즘은 뭘까? 여기저기에서 많이 보긴 했는데, 뭔가 어려운 수학/컴퓨터 용어일 거라는 생각만 들 뿐 알고리즘이 뭔지 정확히는 몰랐던 것 같다. 알고리즘은 어떤 문제를 가장 빠르고 손쉽게 해결하기 위한 절차, 방법, 규칙, 순서 등을 가리킨다. 예를 들어 지하철 운행 간격은 어느 정도로 하는 것이 가장 좋은지, 출발지와 도착지까지의 최단 경로를 찾으려면 어떻게 하는 게 좋은지 등등의 문제를 풀 때 몇 가지 규칙을 적용한 알고리즘을 만들면 보다 빠르게 문제를 해결할 수 있다. 쉽게 말하자면 내 머리로는 바로 해결이 안 돼서 컴퓨터에게 일을 시키고 싶은 문제들을 해결해주는 게 알고리즘이라고나 할까.
이렇게 써놓고 보니까 왠지 알고리즘은 수학자나 컴퓨터 프로그래머들만 책상 맡에 앉아서 쓰는 것처런 느낄 수 있지만, 실상 알고리즘은 우리의 실생활에 아주 가깝게 들어와 있다. 위에 언급한 지하철 운행 시간이라든가, 네비게이션의 경로 찾기뿐만 아니라 내 책장에 책을 어떤 순서로 배치할 것인지, 옷장의 옷은 어떻게 정리하고 그 옷들을 어떤 조합으로 입을 것인지, 여행 갈 때 짐가방을 어떻게 효율적으로 쌀 것인지 등에 대해서도 적용할 수가 있다.
그런데 왜 굳이 알고리즘을 만들어서 적용해야 하냐고? 그건 알고리즘을 만들어 놓으면 최상의 결과를 도출해낼 수 있을 뿐만 아니라, 알고리즘 없이 매번, 일일이, 하나씩 대조하고 체크해가며 손으로 계산하는 것보다 훨씬 더 적은 노력이 들기 때문이다. 쉽게 말해 게으름을 부려도 되니까.

출처: 북이오
게으름의 미학 알고리즘
실제로 이 책에서는 알고리즘을 게으름의 미학이라고 말하고 있다.
책장에 꽂을 책이 열 권밖에 없다면 문제가 없다. 내 옷장에 옷이 스무 벌밖에 없다면 괜찮다. 하지만 정리해야 할 책이 1,000권이라면? 정리할 옷이 100벌이 넘는다면? 하나씩 일일이 대조해서 체크하고 정리하기란 얼마나 귀찮고 오래 걸리는 작업인가! 이런 작업을 위해서는 알고리즘의 도움을 받는 것이 절대적으로 유리하다.
우리가 그저 덜 번거로운 방법으로 해결책을 찾으려다 보니, 어떻게 하면 일을 더 쉽게 처리할지 고민하다 보니, 알고리즘의 성능이 저절로 향상되는 것이다.
이 책에서는 알고리즘을 사용하는 것이 특별한 것이 아니라, 매우 자연스럽고 인간적이기까지 한 일이라고 설명한다. 그리고 그 알고리즘은 우리 생활 곳곳에 포진해 있다.
안내서를 위한 안내서는 없나요?
책을 읽고 나면 막연하게 멀게만 느껴졌던 '알고리즘'이 매우 가까운 곳에 있다는 걸, 그리고 매우 유용하다는 걸 깨닫게 된다. 이메일 사서함에서 스팸을 걸러내는 기술도 알고리즘이 적용된다니, 스팀잇에서 어뷰져를 걸러내는 데에도 알고리즘이 효과적으로 쓰일 수 있지 않을까 싶기도 했고.
알고리즘에 대해 조금이나마 알게 된 것이 좋은 점이긴 한데, 책을 읽으며 아쉬운 부분도 있었다. 내가 워낙 수학이나 컴퓨터 쪽을 몰라서 그럴 수도 있겠지만, 설명이 좀 더 자세했으면 싶었던 부분들이 있었다. 또한 책에는 어려운 용어들(처음 접하는 용어들)이 무척 많이 나온다.
버블 정렬(bubble sort), 병합 정렬(merge sort), 깊이 우선 탐색(Depth First Search, DFS), 지연 결정의 원리(Principle of deferred decision), 인접 노드(neighboring nodes), 외판원 문제(Traveling Salesperson Problem, TSP), 충족 가능성 문제(Satisfiability Problem, SAT), 비결정 다항식(Nondeterministic Polynomial, NP), 중국인의 나머지 정리 (Chinese remainder theorem)...
물론 이 용어들에 대해서 설명은 해주고 있지만, 기초적인 지식이 없는 사람에게는 그 설명을 읽어도 다소 버겁게 느껴질 수 있다. 이 안내서를 위한 안내서는 없는 걸까?
그래도 알고리즘에 대해 적으나마 친밀감을 갖게 된 건 발전이라고 생각한다. 우선 나부터만 해도 알고리즘을 내 생활에 적용시켜봐야겠다는 생각을 했으니까. 수많은 읽을 책 리스트들 중에 어떤 책을 어떤 순서로 골라 읽을지, 쓰고 싶은 시리즈들 중에 어떤 글을 먼저 써야 할지 등도 알고리즘으로 효율적으로 정할 수 있지 않을까?
알고리즘에 대해 평소 궁금해하셨던 분들이라면 이 책을 추천하고 싶다. 수학이나 컴퓨터 쪽에 약간의 지식이 있다면 더 쉽게 읽으실 수 있을 것이다.
제목: 알고리즘 행성 여행자들을 위한 안내서
저자: 제바스티안 슈틸러
출판사: 와이즈베리

[독후감] 지난 독후감들 최근 5개 링크입니다.
@bree1042를 팔로우하시면 더 많은 독후감들을 받아보실 수 있습니다. ^^
33. 와일드 by 쉐릴 스트레이드 - 위험해도, 무서워도, 두려워도. 나는 계속 걸었다.
34. 아무것도 하지 않을 권리 by 정희재 - 목이 타는 한 여름에 미지근한 물
35. 1984 by 조지 오웰 - 소름 끼치도록 현재를 그리고 있는