어제 주문해서 오늘 낮에 받아 좀 읽어본 뒤 약간은 성급한 리뷰를 올립니다. (초판으로 처음 알고리즘 공부를 했었고, 개정판으로 수업을 들은 적이 있는 입장이라 나름대로 경솔한 의견은 아님을 미리 알려드립니다. ^^)
내용면에서 흠잡을 데 없는, 정말로 좋은 알고리즘 책입니다. 정말 쉬우면서 상세하게 알고리즘을 설명할 수 있는 방법이 어떤 것인지를 알 수 있게 해 줍니다. 그림과 수식들도 적절히 배치되어 있고, 의사 코드는 명료하며, 긴 문단들이 많지만 지루하지 않습니다. 이 책이 가장 좋은 점은 그러면서도 수학적으로 철저하고, 모든 알고리즘의 증명 과정이 상세히 소개되어 있다는 것입니다. 국내에 이전에 출판되었던 많은 알고리즘 서적 (Robert Sedgewick 의 Algorithms 라던지, C로 배우는 알고리즘 등) 에는 간과된, 하지만 가장 중요한 부분들이죠. 증명 과정을 모른다면, 알고리즘을 진정 이해했다고 할 수는 없을 테니까요.
다른 책을 참조하지 않고도 다루는 분야에 대한 기반 지식을 충분히 얻을 수 있을 만큼 self-contained 되어 있고, 전반적으로 이용되는 분야를 모두 다루고 있습니다.
개정판으로 올라오면서 제 생각에 가장 좋은 발전은 루프 불변조건(loop invariant)을 알고리즘 증명 과정에 도입한 것입니다. 학원에서 알고리즘 강의를 진행한 적이 있었는데, 루프불변조건은 알고리즘의 정당성을 굉장히 간단하고 이해하기 쉽게 증명할 수 있도록 도와줍니다.
연습문제들은 다양하고, 난이도도 만만치 않습니다. 개인적으로 공부하는 학생들을 위해 정답을 공개했다면 좋았겠지만 (짝수번 문제만 공개하는 식으로라도) 참 좋았을텐데, 해답지가 대학에서 이 책으로 알고리즘 과목을 강의하는 교수에게만 제공되는 점이 안타깝습니다.
번역에 관해서도 흠을 잡을 필요가 없다고 여겨집니다. 간혹 어색한 단어 선택(#)과 번역체 어투 (#) 가 보입니다만, 이 분량의 책이 빠른 시간 안에 번역된 것을 감안할 때 용납될 만한 수준이라고 여겨집니다. 번역 용어에 관해서는 어쩌면 개인적 취향과 연결되는 부분이기 때문에 뭐라고 할 수 없습니다만 제가 보기에는 대부분 적절합니다.
(#) 예를 들어, 종합문제 33-3 에서는 전자가 "통과한다" 라기보다는 "교차한다" 단어를 쓰는 것이 적절했을 듯 싶습니다.
(#) 역시 예를 들어, 1054p에서, "문제의 개념을 형식화하고" 보다는 "문제를 개념적으로 명확히 정의하고", 쪽이 이해하기 쉽겠지요.
물론, 번역이 어떻던 간에 이 책 자체는 읽어볼 가치가 있습니다. 넓은 분야를 상세하고 명확하게 설명하고 있는, 논리적이고 튼튼한 기반을 쌓을 수 있게 해주는 최고의 입문서입니다.
이 책을 번역한 것은 언어의 장벽 때문에 이 책을 접하지 못하던 사람들에게 정말로 큰 도움이 될 것입니다. 역자분들께 진심으로 감사드리고 싶습니다. ^^
조건 |f| = c(S,T) 는 f가 최대 플로우임을 의미한다.
- whinii님이 2005-06-29에 작성하신 Yes24 서평 발췌