집을 사려고 할 때 몇 채의 집을 본 후에 계약해야 할까
이 사람과 결혼하는 것이 최적일까 더 나은 사람이 있지는 않을까
차를 어디에 주차해야 할까 주식은 언제쯤 팔아야 할까
우리는 살면서 수많은 문제와 과민 그리고 선택상황을 직면하게 된다 최선의 결과를 얻고 싶지만 우리에게는 시간과 돈 그리고 올바른 방법이 부족하다 어떻게 하면 우리가 선택한 것이 최선의 선택이었다는 것을 알 수 있을까 어떻게 하면 문제를 보다 효율적으로 해결할 수 있을까 브라운대학교에서 컴퓨터과학과 철학을 공부한 브라이언 크리스천과 UC버클리대ᅟᅡᆨ교에서 심리학 및 인지과학 연구실을 맡고 있는 톰 그리피스는 이러한 문제에 대해 기존의 사고를 깨는 해결방법을 제시한다
저자는 기존의 문제 해결 구조와는 전혀 다른 새로운 사고의 구조인 컴퓨터 과학의 알고리즘을 우리의 선택 문제에 대입한다 그들은 알고리즘은 절대 후회하지 않는다고 말하며 컴퓨터과학의 알고리즘 구조가 복잡한 환경 속에서 우리가 최적의 선택을 하고 문제를 해결할 수 있도록 도와준다고 말한다 그렇다면 저자가 말하는 컴퓨터 과학의 알고리즘은 무엇일까
1.최적 멈춤 : 우리의 자원은 유한하다 그런 의미에서 우리는 언제까지 샆펴보고 언제 선택할지 파악할 수 있는 최적 멈춤이 필요하다 이 소개에 활용된 예시는 연인을 선택할 때 집을 팔 때 주차할 때 그만둘 때 등이 있다
2.탐색/이용 : 최적 멈춤과 마찬가지로 우리에게 시간 역시 유한하다 자신에게 시간이 얼마나 남았느냐에 따라 탐색/이용을 적절히 활용할 필요가 있다 탐색/이용은 왜 우리가 수십 년에 걸친 탐색을 통해 나온 결과인 지혜가 중요한지 알려준다 그 지혜로는 책과 노인 등이 있다
3. 정렬하기 :정렬하기는 양말짝을 어떻게 맞춰야 할지 도서관의 책들을 어덯게 꽂아야 할지 등을 알려준다 효율적인 정렬방법을 선택하면 같은 문제라도 빠르게 해결할 수 있다
4.캐싱 : 캐싱은 명령어와 데이터를 캐시 기억 장치 또는 디스크 캐시에 일시적으로 저장하는 것을 말한다 일상 생활에서 캐싱을 사용한다는 것은 자주 접근해야하는 정보를 일정 공간에 보관한다는 것을 말한다 예를 들어 도서관에서 우리에게 필요한 책을 빌려 본다면 매일 도서관을 가지 않더라다 해당 책에 빠르게 접근할 수 있다
5. 일정계획 : 우리에게 주어진 일이 5개가 있다면 우리는 어떤 일부터 해결해야 할까 급한 일부터 먼저 해결하고 만약 딜레이가 생겨서 제시간에 처리가 되지 않는다면 일정을 재검토한다 일을 빨리 끝내고 싶다면 최단처리시간 알고리즘에 ᄄᆞ라 작업시간이 적은 일부터 처리할 수도 있다 또한 비용이 발생하는 문맥전환(A를 하는 도중에 B를 하는)은 되도록 하지 않는 것이 좋다
6.베이즈규칙 : 베이즈규칙은 한 사건이 발생했을 때 이 사건을 근거로 알고 싶은 사실의 가능성을 예측하는 것이다 미래를 예측한다는 것은 언제나 불확실성을 내포하고 있지만 이전의 경험과 현재의 증거를 토대로 어떤 사건의 확률을 추론할 수 있다는 점에서 매력적인 방법이 된디 베이즈 규칙은 인간이 정보를 처리하는 방식과 닮아있다고 하여 인공지능 및 기계학습 분야에서 많이 적용되고 있다고 한다
7. 모든 결정은 일정의 예측을 토대로 이루어진다 우리의 경험과 많은 정보를 기반으로 선택하게 되는데 이때 너무 많은 정보를 기준으로 고려하게 되면 오히려 혼란을 야기할 수 잇다 무언가를 고려할 때 너무 많은 생각은 오히려 정확성을 떠어뜨릴 수 있으니 주의할 것
8. 완화 복잡한 세상에서 발생하는 일부 문제는 고도화된 기술로도 해결할 수 없는 경우가 많다 이때 다양한 경우의 수와 여러 해결방법을 찾으려고 노력한다면 오히려 시간이라는 소중한 자산을 놓칠 수 있게 된다 이에 저자는 완화를 통해 너무 완벽한 해결방법에 집착하기 보다 넘어가는 것을 추천한다 시간과 해답의 질 사이에 발생하는 트레이드 오프를 확인하고 최적의 시점에서 완화를 사용해 보자
9. 무작위성 : 앞서 계속 나오는 이야기지만 세상은 너무나 복잡해서 고도화된 알고리즘도 해결할 수 없는 문제들이 많다 철저히 추론하여 답을 얻으려고 하는 것보다 그저 우연에 맡기는 것이 오리혀 더 나은 결과를 가져오는 경우도 있다 운 우연 무작위가 본인의 인생에서 얼마나 많은 영향을 끼쳤는지 확인해 본다면 새삼 놀라울 수도
10.네트워킹 : 인터넷 상에서 메시지는 어떻게 전달되는가 패킷단위로 잘게 쪼개진 데이터들이 전송될 주소지로 전달된다 이때 네트워킹 버퍼가 가득 차면 모든 캐킷은 거부되면서 사실상 삭제가 된다고 한다 우리 인생도 마찬 가지다 누군가에게 메시지를 주었는데 기다림이 길어지고나 답신이 없다면 그 사이에 다른 메시지가 들어올 것이고 그로 인해 네트워킹버퍼가 가득차면 그 이후에 받는 모든 메시지는 삭제될 것이다 메시지에 대한 답변은 신속하게 주고 늦어진다면 차라리 처움부터 거부하라
11.게임 이론 : 내가 원하는 자원이 상대방도 원하는 자원이라면 그리고 그자원이 한정되어 있다면 우리는 경쟁이라는 게임을 하게 된다 경쟁자들은 상대의 반응을 고려해 자신의 최적 행위를 결정해야 한다 이 때 재미있는 것은 이기심을 가져야 승리하는 게임에 참여한 경쟁자들은 이기기 위해 이기적으로 행동하고 정직해야 승리하는 게임에 참여한 경쟁자들은 이기기 위해 정직하게 행동한다는 사실이다 컴퓨터과학의 게임 이론은 말한다 전략을 바꾸어더 도움이 되지 않는다면 게임 자체를 바꾸려고 시도하라고 이왕이면 정직이 우선인 게임을 차는 것이 좋겠다
이 책은 일상에서 직면하는 문제들을 해결할 수 있도록 도와주는 알고리즘을 소개한다 위에 설명했듯이 각각은 저자가 컴퓨터에서 얻은 인사이트를 일상에 적용시킨 내용이다 하지만 과적합 완화 무작위성 등의 파트를 읽어보면 책소개에 나온 나는 인생의 모든 답을 컴퓨터과학에서 배웠다라는 말에 고개가 갸우뚱해진다 컴퓨터과학에 대한 지식 통계와 수학적인 사고가 중요하다는 것은 인정하지만 그 곳에 모든 답이 있다고 생각하진 않는다 알고리즘적 사고가 해결하지 못하는 복잡한 문제들이 여전히 남아 있기 때문이다 그래서 수학적인 사고와 더불어 사회와 인간에 대한 공부가 뒷받침 되어야 여러 변수에 대한 이해가 높아지지 않을까 그래서 불확실하고 예측할 수 없는 이 세상을 살아갈 때 보다 더 나은 선택을 할 수 있지 않을까 생각이 든다