Один из главных академических трудов по алгоритмам, написанный для практикующих разработчиков. Книга состоит из двух частей: первая — теория и практика проектирования алгоритмов (сортировка, графы, динамическое программирование, эвристики), вторая — каталог из 75 классических алгоритмических задач с готовыми решениями и ссылками на реализации. В 3-м издании расширены разделы по рандомизированным алгоритмам, хешированию и квантовым вычислениям.
🧠 Ключевые идеи
Алгоритм = правильная структура данных + правильная техника: выбор структуры данных часто важнее выбора алгоритма — хорошая структура делает алгоритм тривиальным
Каталог задач как ключевой инструмент: большинство реальных задач сводятся к известным алгоритмическим проблемам; умение распознать задачу важнее знания алгоритма наизусть
Динамическое программирование через рекуррентность: DP — это управляемый перебор с мемоизацией; ключ — правильно определить подзадачу
Эвристики для NP-полных задач: не все задачи требуют точного решения; жадные алгоритмы, имитация отжига, генетические алгоритмы дают приемлемый результат на практике
Анализ сложности как язык: O-нотация — не формальность, а инструмент коммуникации и принятия решений при проектировании систем
💬 Важные цитаты
«Правильный алгоритм — это тот, который решает задачу. Хороший алгоритм — тот, который делает это эффективно. Но сначала нужно убедиться, что вы решаете правильную задачу.»