Алгоритмы: построение и анализ (Introduction to Algorithms)
Я купил этот кирпич за авторством Кормена, Лейзерсона и Ривеста еще в 2002 году, когда думал, что смогу стать мастером в алгоритмах. Это было еще первое издание книги с белой обложкой и тогда соавторов было еще трое. Мне тогда нравилось изучать эту книгу, но на первых курсах университета у меня еще не было личного компьютера, поэтому приходилось писать псевдокод на листочке и дебажить в голове. Такая схема работы не слишком помогала в изучении computer science, но основы вроде бы я тогда уловил (заодно понял, что в этой области я звезд с неба не хватаю:) иначе бы и в голове мог все это отрешивать без компа).
А когда я на третьем курсе уже пошел работать, то времени и желания ботать дальше алгоритмы уже не было - я был занят изучением самих языков и инструментов, что помогали мне решать практические задачи из области веб разработки.
Прошло много лет и теперь можно вернуться к книге, а алгозадачи решать не в голове, а на leetcode:)
Структура книги достаточно логичная и состоит из следующих частей
- Математические основы анализа алгоритмов - скорость роста функций (нотация O(n)), рекурентные соотношения, множества, комбинаторика и вероятность
- Сортировка и порядковые статистики - сортировка с помощью кучи, quick sort, медианы и порядковые статистики
- Структуры данных - стеки, очереди, связанные списки, хеш-таблицы, деревья
- Методы построения и анализа алгоритмов - динамическое программирование, жадные алгоритмы
- Более сложные структуры данных - b-tree, биномиальные кучи, фиобаначчиевы кучи, системы непересекающихся множеств
- Алгоритмы на графах - поиск в ширину и глубину, минимальные покрывающие деревья, кратчайшие пути, максимальный поток
- Дополнительные главы - матрицы, быстрое преобразование Фурье, NP-полнота и многое другое
В общем, фундаментальная книга с крутыми темами и устрашающими размерами:) Кстати, а стоит заказывать четвертое издание книги, если у меня уже есть первое?
#Software #Algorithm #Engineering #SelfDevelopment