Не для манки-кодеров: книги по алгоритмам и структурам данных
123К открытий125К показов
Чтобы быть хорошим программистом, мало знать синтаксис какого-нибудь языка и хорошо писать код. Когда речь идет о маленьких шаблонных проектах, этого хватит. Но вот вы сталкиваетесь с чем-то по-настоящему серьезным и масштабным, и становится ясно — без знания алгоритмов и умения работать со структурами данных вы далеко не уйдете.
Tproger вам поможет — в этой статье вы найдете подборку книг, которые помогут вам начать путь настоящего программиста. Кстати, для знакомства с темой рекомендуем почитать нашу серию статей об алгоритмах и структурах данных.
Это лекции и другие учебные заметки к курсам по алгоритмам в Иллинойсском университете в Урбане-Шампейне. Помимо теории, на сайте можно найти большое количество домашних и экзаменационных заданий — правда, без ответов.
Книга Седжвика и Уэйна «Алгоритмы на Java» является классическим справочным руководством, в котором содержится необходимый для программиста объем знаний в области алгоритмов, накопленных за последние несколько десятилетий.
В книге представлен широкий спектр рассматриваемых тем: исчерпывающее толкование структур данных и алгоритмов сортировки, поиска, обработки графов и строк, включая пятьдесят алгоритмов, которые должен знать каждый программист. Описываются новые реализации алгоритмов на Java, написанные в ясном модульном стиле, при котором весь код доступен читателю и полностью готов к использованию. В книге изучение алгоритмов на Java ведется в контексте важнейших научных, инженерных и коммерческих приложений.
Небольшая методичка Стенфордского университета, целиком посвящённая двоичным деревьям. Внимание уделено как теории, так и задачкам с разборами решений, причём и на Java, и на C.
Ещё две методички из Стенфорда. Первая содержит теоретические материалы, посвящённые связным спискам, а вторая — 18 задач. Пригодятся всем, кто изучает C и хочет узнать о возможностях применения указателей.
В этой книге автор систематизирует информацию о наиболее популярных алгоритмах, используемых в сфере машинного обучения и искусственного интеллекта. Она отлично подойдет студентам, преподавателям и просто людям, интересующимся разработкой ИИ, как подробный справочник.
Книга является одним из наиболее полных руководств по разработке эффективных алгоритмов. Первая часть книги содержит практические рекомендации по разработке алгоритмов: приводятся основные понятия, дается анализ алгоритмов, рассматриваются типы структур данных, основные алгоритмы сортировки, операции обхода графов и алгоритмы для работы со взвешенными графами, примеры использования комбинаторного поиска, эвристических методов и динамического программирования. Вторая часть книги содержит обширный список литературы и каталог из 75 наиболее распространенных алгоритмических задач, для которых перечислены существующие программные реализации.
Книгу можно использовать в качестве справочника по алгоритмам для программистов, исследователей и в качестве учебного пособия для студентов соответствующих специальностей.
Отличная книга по алгоритмам, использующая неординарный подход.
Книга разделена на 30 глав, каждая из которых называется жемчужиной. В начале главы читателю дается задача, например, на сжатие данных либо связанная с игрой. Задача формулируется с помощью языка Haskell. Затем с помощью методов функционального программирования «скелет» программы начинает обрастать различными готовыми функциями. Таким образом читатель сможет лучше вникнуть в суть того или иного алгоритма.
Если «Алгоритмы. Построение и анализ» — фундаментальный труд, призванный дать максимум информации по тем или иным алгоритмам, то книга «Алгоритмы. Вводный курс», написанная тем же профессором информатики Томасом Корменом, рассчитана на аудиторию, не готовую осилить труд в 1300 страниц. Так что если вы — один из таких, но, тем не менее, вам необходимо ознакомиться с алгоритмами, то эта книга для вас.
Ещё одна увесистая книга по алгоритмам, впервые изданная в 1990 году в Массачусетском технологическом институте с авторством местных преподавателей. Несмотря на то, что написана она простым и понятным языком, из-за объёма и подачи материала (каждая глава имеет законченный вид) использовать лучше в качестве справочника, периодически обращаясь к нужной информации.
Искусство программирования — монументальный труд Дональда Кнута. Серия книг состоит из 4 томов, каждый из которых охватывает определенные виды алгоритмов. Это классика, которую до сих пор в обязательном порядке проходят в ВУЗах. Материал подан в достаточно сложном формате, но и цель у книг особенная — рассказать наиболее полно о существующих алгоритмах.
Автор Генри Уоррен описал в своей книге множество приемов, которым он научился за несколько десятков лет, работая в области разработки компиляторов и архитектуры компьютеров, прикладного и системного программирования. Здесь вы найдете множество приемов для работы с отдельными битами, байтами, вычисления различных целочисленных функций; большей части материала сопутствует строгое математическое обоснование.
Во втором издании был добавлен материал о CRC, кодах с коррекцией ошибок (ECC), различных методах деления на константы (например, с помощью сдвигов байтов) и о многом другом.
В этой книге вы не найдете много теории. Весь материал книги акцентирован на практическом применении различных алгоритмов. Книга проиллюстрирована примерами на C, C++, Python и Java. Каждый алгоритм разобран, указана его сложность и различные условия, при которых он достигает максимальной эффективности. Кроме того, в книге вы найдете рекомендации по использованию различных структур данных в тех или иных алгоритмах. Поэтому книга прекрасно подойдет в качестве справочника, который будет лежать у вас на полке и использоваться во время реализации ваших проектов.
В этой книге собрано огромное количество алгоритмов планирования. Они так или иначе используются в робототехнике, теории управления, ИИ и компьютерной графике. Теоретический материал снабжён большим количеством иллюстраций и примеров.
Эта книга рассказывает об особенностях функциональных структур данных. В ней разобраны функциональные реализации многих структур: списков, очередей, куч и других.
В этой книге рассматривается огромное количество различных низкоуровневых алгоритмов. Для реализации примеров используется C++. Рекомендуем к прочтению всем, кто так или иначе работает с вычислениями.
Данная книга посвящена алгоритмам обработки текста. В ней последовательно разбираются различные алгоритмы сравнения строк и структуры данных. Книгу можно мысленно разделить на две части, посвящённые практическим и теоретическим алгоритмам соответственно, поэтому каждый найдёт в ней что-то интересное.
Эта книга предназначена для тех, кто уже знаком с основами алгоритмов, способами доказательства их истинности и теорией вероятности. Пригодится студентам, работающим с приближёнными (аппроксимирующими) вычислениями.
Авторы книги преследовали три цели: объяснить основные алгоритмы как можно проще и при этом точнее, снабдить их диаграммами и написать понятные листинги на псевдокоде, которые можно без особых проблем перевести на C++, C# и Java. Удалось ли им это — прочтите и узнаете ?
В этой книге рассматриваются такие темы, как сложность алгоритмов, последовательности, деревья, хеширование, сортировка и выбор, конкурентность, случайные числа и графы. Все примеры кода приведены на Java.
Прокачайте свои навыки владения Python, изучив структуры данных и алгоритмы с точки зрения теории сложных систем. Вы познакомитесь с графами, методами анализа алгоритмов, масштабируемых сетей и клеточных автоматов, попутно работая с предложенными студентами и читателями примерами таких систем. Кстати, черновик второго издания этой книги тоже доступен для чтения и скачивания.
В этой книге рассматриваются структуры данных для последовательностей (списков), очередей, очередей с приоритетом, словарей и графов. Представлено огромное количество оптимизированных реализаций, исходные коды которых доступны для скачивания.
В этой книге описаны реализации основных алгоритмов и структур данных. Для наглядности приведено много иллюстраций и примеров кода на Haskell, C/C++, Python и Scheme. При этом рассматривается не только процедурный, но и функциональный подход к решению задач.
В этом пособии собрано огромное количество полезной информации о работе с графами и их визуализации. Книга будет интересна широкому кругу студентов и исследователей, поскольку графы используются во многих областях науки.
Это относительно небольшая книга, автор которой постарался нескучным языком познакомить читателей со структурами данных и алгоритмами. В конце каждой темы есть упражнения для самостоятельной проверки (решения доступны на GitHub). Читателям крайне рекомендуется знать Java.
Если мы пропустили хорошие книги по этой теме, делитесь ими в комментариях.
123К открытий125К показов