Книга для алгоритмов вне Кормена

21

Я закончил большую часть материала в книге Кормена «Введение в алгоритмы» и ищу книгу по алгоритмам, которая охватывает материал, выходящий за рамки книги Кормана. Есть какие-нибудь рекомендации?

ПРИМЕЧАНИЕ: я спрашивал об этом в stackoverflow, но не слишком доволен ответом.

ПРИМЕЧАНИЕ. Глядя на большинство комментариев, я думаю, что в идеале я хотел бы найти книгу, которая охватывала бы материал курса 787 в этом описании курса .

Евгений
источник
1
увидеть это
Kaveh
1
@Kaveh Я уже читал Tardos.
Евгений
1
«Введение в алгоритмы» охватывает практически все, что касается разработки и анализа алгоритмов, и является самым популярным в мире учебником для студентов и аспирантов. Каждая глава содержит краткое введение в соответствующие материалы, а также в конце приводится очень длинный список литературы для дальнейшего изучения. Если вы чувствуете, что вам необходимо более глубокое понимание определенной темы, например алгоритмов графов, теории сложности и т. Д., Лучше всего посмотреть библиографию книги, а если это не поможет, вы также можете обратиться за советом к экспертам в этой области. конкретный район.
Али
12
«Введение в алгоритмы» охватывает практически все в области разработки и анализа алгоритмов - ах, если бы это было правдой.
Джефф
5
Одна книга, которая мне действительно нравится, - « Введение в алгоритмы: творческий подход » Уди Манбера. В отличие от большинства других учебников, он учит, как придумывать алгоритмы самостоятельно. Для каждого алгоритма, описанного в учебнике, он предоставляет возрастающую последовательность разделов, первый из которых описывает наиболее очевидный подход, а каждая последующая попытка исправляет ошибки предыдущего. Это отличный текст на мой взгляд.
Винаяк Патхак

Ответы:

9
I am looking for an algorithms book that covers material beyond Corman's book.

На это можно ответить множеством разных способов, в зависимости от того, что вы хотите «за пределами». Я бы порекомендовал задавать гораздо более конкретные указания, поскольку вы, скорее всего, получите конкретные ответы, которые будут полезны. Что касается общего руководства, хотя:

  • Вы можете найти несколько общих книг, которые изучают общие алгоритмические темы более подробно, чем Корман, но по большей части вам нужно начать специализироваться, если книга будет значительно глубже. В противном случае он может быть раздутым и лишенным полезности.
  • Так что вместо этого ищите конкретные темы. Существует много продвинутых материалов, если вы сосредоточены на конкретных темах. Вы интересуетесь:
    • алгоритмы сортировки?
    • строковые алгоритмы?
    • алгоритмы теории чисел?
    • матричные алгоритмы?
    • графовые алгоритмы?
    • геометрические алгоритмы?
    • квантовые алгоритмы?
    • стохастические / рандомизированные алгоритмы?
    • линейное программирование?
    • модели вычислений?
    • Основы теории сложности и алгоритмики?
  • Если вы хотите понять, как получить свои собственные алгоритмы, сфокусируйтесь на понимании известных структур данных, используемых в проблемном пространстве, в которое вы инвестируете (таким образом, получите достаточную глубину имеющихся знаний), и постарайтесь хорошо понять теорию сложности и модели вычисление. Они дадут хорошее интуитивное представление о том, что возможно для данной проблемы, и какие подходы, вероятно, будут иметь больший успех, даже если вам трудно доказать нижние границы формально.

Такие книги, как «Пападимитриу» или «Арора / Барак о теории сложности», были бы моим предложением для продолжения работы над Корманом, чтобы лучше понять, какие алгоритмы возможны, и создать некоторую интуицию, но я бы просто посмотрел на современные обзорные статьи по конкретным областям и посмотрел на выпускную и книги уровня исследования по более конкретным темам, если вы хотите познакомиться с современным уровнем понимания.

ex0du5
источник
1
Вы задаете очень хороший вопрос. Я интересуюсь теоретико-числовыми алгоритмами, поэтому я уже смотрел на Алгоритмическую теорию чисел Баха и Шаллита. Я ищу книги, которые будут развивать мои алгоритмические методы разработки вне Cormen.
Евгений
1
Я не ищу глубину, но широту. Не основополагающая теория сложности, а введение в алгоритмы / структуры данных, о которых я слышал, но которых нет в CLRS (или они представлены только как проблемы), чтобы добавить в арсенал программирования то, о чем я слышал; такие вещи, как: поиск A *, поиск Best First, фильтры Блума, сжатие файлов / изображений, пакетная сортировка, скрытая модель Маркова, наивные байесовские классификаторы, квантовые алгоритмы, списки пропусков, алгоритмы диаграмм TimSort, Treaps, Tries, Voronoi и т. д. Даже если это просто коллекция интересных статей на различные темы, такие как Bentley's Programming Pearls.
Доктор Джимбоб
16

Как уже отмечали другие, книги о (продвинутых) алгоритмах лучше всего выбирать по темам. Хороший, но тяжелый общий справочник с тщательным анализом - это, вероятно, «Искусство компьютерного программирования » Кнута.

Что касается методов анализа, вас могут заинтересовать «Введение в анализ алгоритмов » Седжвика и Фладжолета и « Алгоритмическая комбинаторика » Флайолета и Седжевика для получения дополнительной теории в том же направлении.

Подходы к решению сложных задач см. В Алгоритмике сложных задач Хромковича.

Рафаэль
источник
5

Вы смотрели на Руководство по теоретической информатике

Если вы хотите выйти за рамки императивных алгоритмов и перейти к функциональному программированию, взгляните на чисто функциональные структуры данных . Я знаю, что название говорит о структурах данных, но алгоритмы в книге могут открыть вам глаза на другой способ программирования.

РЕДАКТИРОВАТЬ

Я взглянул на описание курса для CS 787 и текущие классы

Это отмечает

В основном мы будем использовать статьи из литературы. Они будут доступны в виде раздаточных материалов или через Интернет. Несколько книг по алгоритмам будут сохранены в библиотеке Вендта.

Если бы это был я, я бы связался с инструктором . :)

Гай Кодер
источник
Нет, я не видел справочник. Спасибо за предложение!
Евгений
Вау. Я не смог найти информацию о курсе. Спасибо за ссылку.
Евгений
-2

Компьютерные алгоритмы очень сложны и трудны для понимания темы, поэтому нет лучшей книги, то есть только одной книги, которая объяснит вам все. Вам нужно прочитать пару из них, чтобы овладеть этой темой.

вот мои 2 цента, основанные на 10-летнем программировании и посещении многочисленных интервью:

  1. Руководство по разработке алгоритмов Стивена С. Шиена
  2. Алгоритмы ( http://algs4.cs.princeton.edu/home/ ) от Sedgwick
  3. Введение в алгоритмы Томас Кормен
  4. Алгоритмы для интервью Аднана Азиза
  5. Алгоритмы Python: освоение основных алгоритмов на языке Python
  6. Алгоритмы, разблокированные Томасом Корменом

Ссылка:

Kris
источник
4
И почему вы рекомендуете это?
Рафаэль
3
В частности, почему вы рекомендуете «Введение в алгоритмы» Кормена и соавторов в ответ на вопрос о книгах, выходящих за рамки этой книги.
Дэвид Ричерби