Алгоритмы — это то, что мы делаем, чтобы не делать что-то. По сути это инструкции для выполнения скучных и повторяющихся задач. Задача, решение которой без алгоритмов может занять несколько часов, с алгоритмами решается практически мгновенно, — пишет сайт pythonist.ru.
Алгоритмы позволяют машинам распознавать и воспроизводить речь, переводить тексты, классифицировать и обобщать документы, описывать изображения и предсказывать погоду. В общем, они применяются в самых разных сферах разработки программ. Программисту не удастся избежать встречи с ними. А помимо всего прочего, алгоритмы и структуры данных — излюбленная тема технических собеседований.
Так что изучение алгоритмов для будущего разработчика это обязательный этап. Представляем несколько самых лучших книг по алгоритмам, опубликованных на русском языке.
1. Грокаем алгоритмы
Автор: Адитья Бхаргава. Год издания: 2017.
Это одна из самых замечательных книг по алгоритмам и структурам данных, к тому же, она отлично подходит для начинающих.
Автор описывает далеко не все структуры данных и алгоритмы, существующие в информатике, но те, которые затрагивает, рассматриваются очень подробно. А это именно то, что нужно новичкам.
Особо стоит отметить, что книга написана очень легким языком, а сложные темы в ней объясняются на простых жизненных примерах. Кроме того, все объяснения сопровождаются тематическими иллюстрациями и графиками (их около 400) — чтобы уж точно всем все стало понятно.
2. Совершенный алгоритм. Основы
Автор: Тим Рафгарден. Год издания: 2019.
Тим Рафгарден — профессор информатики, член института Data Science при Колумбийском университете. Серия книг «Совершенный алгоритм» (англ. Algorithms Illuminated) написана им на основе онлайн-курсов, которые он ведет на платформах Coursera и edX.
Первая часть серии представляет собой доступное введение в основы алгоритмов. Объяснение не привязано к каком-либо языку программирования. В этой книге автор рассматривает асимптотический анализ алгоритмов и нотацию О-большое (а также Омега-большое и Тета-большое), парадигму «разделяй и властвуй», рандомизированные алгоритмы и, конечно, несколько самых известных алгоритмов сортировки.
В этой книге читатели также найдут упражнения на закрепление материала и разборы решений.
3. Совершенный алгоритм. Графовые алгоритмы и структуры данных
Автор: Рафгарден Тим. Год издания: 2019.
Это вторая книга серии «Совершенный алгоритм». В ней рассматриваются такие темы как графы, алгоритм кратчайшего пути Дейкстры, куча и дерево поиска, хеш-таблицы и фильтры Блума. Как и первой части, здесь к объяснениям прилагаются задачи на закрепление материала (с решениями).
От редакции Techrocks. В этой серии есть еще две книги:
- Совершенный алгоритм. Жадные алгоритмы и динамическое программирование
- Совершенный алгоритм. Алгоритмы для NP-трудных задач
4. Алгоритмы для начинающих
Автор: Луридас Панос. Год издания: 2018.
Это учебное пособие предназначено для людей, не имеющих бэкграунда в продвинутых темах математики и информатики. Упор в книге делается на задачи и жизненные примеры. Разбираемые алгоритмы представлены в виде псевдокода и легко могут быть реализованы на любом языке программирования, включая Python.
Чтобы получить наибольшую пользу от этой книги, читатель должен разбираться в основах математики и иметь базовое представление о работе компьютеров. Все остальные необходимые концепции поясняются в самой книге.
После ознакомления читателя с псевдокодом, базовой терминологией и структурами данных, в книге разбираются такие темы как сжатие, криптография, графы, хеширование и многие другие. Каждая глава представляет какую-то реальную жизненную проблему и алгоритмы для ее решения.
От редакции Techrocks. В 2022 году на русском языке вышла более свежая книга того же автора — «Алгоритмы. Самый краткий и понятный курс».
5. Введение в анализ алгоритмов
Автор: Майкл Солтис. Год издания: 2019.
Это второе, полностью обновленное и переработанное издание книги.
«Введение в анализ алгоритмов» будет отличным учебным руководством и справочником как студентов, так и для разработчиков, ориентированных на создание надежного кода. Материал в книге изложен достаточно сжато, но, тем не менее, он охватывает все необходимые основы.
В книге рассмотрены традиционные для информатики алгоритмы, такие как жадный алгоритм, динамическое программирование, «разделяй и властвуй». Но кроме того автор рассматривает два класса алгоритмов, которые часто выпадают из поля зрения, — рандомизированные и онлайн-алгоритмы (с упором на сами алгоритмы). И это очень кстати, ведь первые повсеместно применяются в криптографии, а вторые необходимы в очень многих областях, от создания ОС до прогнозирования фондового рынка.
6. Алгоритмы: разработка и применение
Авторы: Джон Клейнберг, Эва Тардос. Год издания: 2016.
Авторы этой книги — профессора теории вычислительных систем в Корнелльском университете. Клейнберг специализируется на алгоритмах, связанных со структурой сетей и информации. Его работы лежат в основе поисковых систем интернета. Тардос специализируется на графах и сетевых задачах.
Книга учит читателей различным методам проектирования и анализа алгоритмов для решения задач, возникающих при разработке программного обеспечения. Авторы старались донести до учащихся суть процесса разработки алгоритма и рассказать о месте алгоритмов в информатике.
В книге рассматриваются (среди прочих) такие темы как основы анализа алгоритмов, графы, жадные алгоритмы, алгоритмы «разделяй и властвуй», динамическое программирование, NP-полнота, аппроксимирующие и рандомизированные алгоритмы.
7. Алгоритмы. Руководство по разработке
Автор: Стивен С. Скиена. Год издания: 2011.
Книга, ставшая классикой. Первое издание вышло еще в 1997 году. Мы представляем вам второе издание, которое было существенно обновлено.
В первой части книги читателю будут предложены для изучения такие темы как анализ алгоритмов, структуры данных, сортировка и поиск, обход графов, комбинаторный поиск, динамическое программирование. Вторая часть представляет собой каталог алгоритмических задач, часто возникающих в реальной жизни. Также в этой книге вы найдете ссылки на рабочие реализации упоминаемых алгоритмов.
[customscript]techrocks_custom_after_post_html[/customscript]
[customscript]techrocks_custom_script[/customscript]
А как же Кнут и Кормен? Незабвенная классика.
Кнут слишком тяжело читается, если в математике не шаришь
Всегда встаёт дилемма: потратить время ОДИН РАЗ, чтобы прочитать одну толстую и фундаментальную книгу от признанного авторитета, или МНОЖЕСТВО РАЗ почитывать лёгонькие книженции, собирая и переваривая информацию по кусочкам, повторяя некоторые вещи.
Повторение — мать учения. Для нейронных связей уж лучше прочитать несколько по частям, чем залпом одну. Это не исключает и Кнута. Вообще, наш профессор по истории говорил, что прочитав одну книгу, вы не просто узнали о такой проблеме, но даже не заинтересовались, прочитав 3-5 книг по данной тематике говорит о том, что вы заинтересовались темой, а если читали более и продолжаете читать, то вы начали разбираться в проблеме. Я не думаю, что здесь исключение.