На человека, впервые столкнувшегося с этой книгой, она, пожалуй, в первую очередь произведет впечатление своим объемом — пособие состоит из 35 глав и четырех приложений, которые в третьем издании в сумме занимают более 1300 страниц. Очевидно, что при таком количестве материала «Алгоритмы» не претендуют на прочтение «от корки до корки» — для огромного числа студентов, ученых и программистов эта книга уже давно стала незаменимым справочником, к которому всегда можно обратиться за ответами на самые разнообразные вопросы. Охват изложения тем впечатляет — помимо подробного изложения теоретических основ и описания базовых алгоритмов, в книге имеется ряд глав, посвященных таким специфическим областям, как алгоритмы вычислительной геометрии или приближенные алгоритмы для решения трудноразрешимых задач. Каждая из этих глав обеспечит читателю не один день погружения в материал и вполне может стать основой для соответствующих университетских курсов (что и происходит).
Нужно отдать должное и структуре книги — при линейном чтении она очень последовательно вводит читателя в круг проблем, которыми занимается дисциплина построения и анализа алгоритмов. Книга открывается изложением базовых паттернов построения алгоритмов и методов их анализа, сопровождаемым многочисленными примерами, основанными, в частности, на классических алгоритмах сортировки; продолжается изучением более сложных структур данных и алгоритмов, таких как алгоритмы для работы с графами; в завершение дается обсуждение таких тем, как многопоточные алгоритмы, линейное программирование, требующих от читателя хорошего овладения материалом предыдущих глав. Отдельно стоит отметить замечательно написанную главу о теоретико-числовых алгоритмах, которая включает в себя раздел, посвященный криптосистеме RSA, лежащей в основе многих современных протоколов шифрования (в том числе SSL). Особый интерес эта глава представляет потому, что именно Рональд Ривест — один из соавторов книги — стоял у истоков этой системы и его фамилия дала аббревиатуре RSA первую букву.
Каждая глава завершается рядом упражнений и задач, которые предлагаются читателю для самостоятельной проработки. Особенностью книги является то, что к задачам не дается ответов или советов по их решению. Отдельного внимания заслуживают приложения, в сжатой форме описывающие основной математический аппарат, необходимый для изучения алгоритмов.
Главной причиной высокой популярности книги «Алгоритмы: построение и анализ» является уникальный по сочетанию строгости и простоты стиль подачи материала, работу над улучшением которого авторы продолжают вести от издания к изданию. Неудивительно, что учебник стабильно пользуется популярностью как у ученых-теоретиков, так и у программистов. Если первых она привлекает полнотой изложения и вниманием к деталям, то вторых — доступным языком и наглядностью: книга щедро снабжена иллюстрациями. Большим плюсом является то, что пособие содержит записи всех обсуждаемых в нем алгоритмов в виде псевдокода, имеющего довольно удачный синтаксис, что позволяет быстро разработать на его основе работающую программу на реальном языке программирования.
Третье издание книги не содержит радикальных изменений — вместо этого авторы пошли дальше по пути достижения максимальной ясности изложения материала. Так, в ряде глав задачи, которые используются в качестве иллюстраций к описываемым принципам построения алгоритмов, заменены на более интересные или же более простые для восприятия. Описания некоторых задач переписаны и также стали интуитивно понятнее. Для более четкой расстановки акцентов была изменена структура книги и некоторых ее глав — например, убраны две главы с редкими сегодня биномиальными пирамидами и сортирующими сетями, но добавлены несколько новых, посвященных многопоточным алгоритмам и деревьям ван Эмде Боаса. Улучшен синтаксис псевдокода — теперь он еще больше напоминает широко применяемые сегодня языки программирования Cи/C++, Java или Python.
Рассказывая в своем онлайн-курсе по анализу алгоритмов об основных вехах развития этой дисциплины, видный американский ученый в области информатики Роберт Седжвик так отзывается о пособии «Алгоритмы: построение и анализ»: «Подход, используемый в этой книге, открыл новую эру в разработке алгоритмов». Вышедшая впервые в 1990 году, книга за более чем 20 лет своего существования действительно успела подготовить уже не одно поколение первоклассных специалистов. Приятно, что при этом она до сих пор продолжает оставаться актуальной для столь молодой и динамично развивающейся области, как построение и анализ алгоритмов, чутко реагируя на происходящие в ней изменения.
Томас Х. Кормен и др. Алгоритмы: построение и анализ, 3-е изд.: Пер. с англ. — М.: ООО «И. Д. Вильямс», 2013. — 1328 с.: ил.