[독후감] #38. 알고리즘 행성 여행자들을 위한 안내서 by 제바스티안 슈틸러 - 게으름의 미학, 알고리즘.
@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 조지 오웰 - 소름 끼치도록 현재를 그리고 있는
알고리즘이라고 하면 너무 어렵게만 느껴지는데 우리 일상속에도 있다고 생각하니 조금은 쉽게 다가오는 것 같다가도.. 알면 알수록 어려워지네요 하핳
예를 들면 수많은 육아용품 중에 어느 것을 살까 고르는 것에도 알고리즘을 적용할 수 있어요.
가격, 언제까지 사용하는지, 자주 사용되는 횟수, 일회용인지 아닌지, 동생에게 물려줄 수 있는지, 중고로 구입 가능한지, 나중에 중고로 팔 수 있는지, 제품평 등등을 고려해서 알고리즘을 짜놓으면 매번 "이건 사야하나, 말아야하나?" 고민하는 대신 그 알고리즘에 따라 결정하면 되는 거죠. 기저귀, 천 기저귀, 유축기, 유모차, 딸랑이, 모빌 등등등.
저 안내서를 위한 안내서는.. 결국 자료구조랑 알고리즘 전공책을 봐야 할 것 같아요.
그런가요? 완전 문외한을 위한 입문서를 기대했나봐요. ^^;
당연하다는듯이 알고리즘이란 단어를 사용해왔는데,
알고리즘이란게 이런 것이었네요. 좋은 정보감사합니다.
p.s) 안내서를 위한 안내서 = '위키피디아', '구글링' ^^;
근데 구글링을 해도 기계적인 설명밖에 없더라고요. -_-;
있습니다! 오늘 바로 소개해드리죠 ㅎㅎ
읽기 쉽지만 시간을 많이 투자해야 한다는게 함정..
고맙습니다!
읽고 싶은 책들 목록에서 다음에 읽을 책 뽑는 알고리즘은 만들어서 거기에 맞춰 볼게요. ㅋㅋㅋ
아~~~ 그러고 보니... 컴퓨터 안에서만이 아니라, 우리 일상 생활에도 알고리즘들이 있네요. 요리에도, 글쓰기에도, 지저분한 내 방과 정신없는 내 책상에도...
사람들이 책상 정리좀 하라고 말할 때마다 '다 알고리즘에 맞게 널려 있는 거'라는 핑계를 대야겠어요. ㅎㅎㅎㅎㅎ
저도 몰랐는데 그렇더라고요.
종이책, 전자책, 영어책, 한글책, 북이오책.. 여러 조건을 넣어서 나름 번갈아 읽고 있었는데 이것도 엉성하나마 알고리즘이었나봐요.
컴퓨터 공부할 때 숱하게 들었던 알고리즘,, 일상에서도 알고리즘을 만들어놓으면 참 편리하지만 때론 자로 잰듯 정해진 과정만 거치는 것이 새로운 발상을 방해하기도 하더라구요. 효율성을 극대화하기 위해 필요한 것만은 분명하죠ㅎ
바쁜 일상에서는 필수불가결한 거 같아요. 거기에 드는 시간을 단축해주거든요.
근데 쏠메님 말씀도 맞아요. 새로운 발상을 방해하기도 하지요. 분야를 잘 선정해서 적용해야겠어요.
다양한 분야에 관심이 많으셔요..
발레 다음은 봉댄스가 아닐까 했는데 알고리즘이었군요...ㅎㅎ
봉댄스..ㅋㅋㅋㅋㅋ
그것도 근육이 있어야 매달리는 거 아닌가요? ㅋㅋㅋㅋ
알고리즘.. 어쩐지 요즘 빅데이터랑 비슷하다고 생각하는 건 저뿐인가요? ㅎㅎ
빅데이터를 뽑아내는 것도 일정한 알고리즘을 적용해서 하는 거죠. :)
ㅠㅠ 제 컴퓨터 폴더 정리에도 알고리즘이 좀 필요할듯 해요.
지금 하고 있는 방식이 별로 아닌거 같은 느낌이에요 ㅋㅋ
맞아요. 책 읽다보니 이렇게 유용한 알고리즘을 누가 좀 만들어서 공유해줬으면 싶더라고요. 혼자 만들긴 어려워서. ㅎㅎㅎ
책 제목도 독특하고 풀어낸 관점도 흥미롭네요. 게으름의 미학을 위한 알고리즘. :)
한번 정해놓으면 그다음엔 따라가기만 하면 되니까요. :)
근데 알고리즘 만드는 것도 힘들다는 게 함정..