Подтвердить что ты не робот

Является ли руководство по алгоритмированию хорошей книгой для новичка в алгоритмах?

У меня есть хорошее представление о том, что такое Big-O, и я также знаю несколько основных алгоритмов сортировки, хотя, по какой-то причине, мне никогда не было удобно с ними, и я все время забываю их. Я программирую в течение 4 лет на Java, Python, C и C++; Я был приличным программистом. Теперь я хочу выйти за рамки изучения языков программирования и начать изучать алгоритмы.

Я попробовал "Введение в алгоритмы" Cormen et al. но математика для меня слишком плотная (или, может быть, я слишком плотная для математики в этой книге).

Теперь я планирую взять Руководство по разработке алгоритмов от Стива Скиены. Вы бы порекомендовали это для моей ситуации? У вас есть другие рекомендации, если вы думаете, что это не для меня?

4b9b3361

Ответ 1

Я бы рекомендовал книгу Лёсена. Вы начали изучать алгоритмы, вы также должны начать изучать алгоритмы.

Кому кто редактировал этот ответ и заменил последнее вхождение алгоритмов слова словом математика: я имел в виду алгоритмы, когда я писал этот ответ, я все еще имею в виду алгоритмы, заменяя слово математикой, существенно меняя ответ. Если вы считаете, что математика - это то, чему должен учиться ОП, опубликуйте свой собственный ответ на этот вопрос. Если бы вы посмели прочитать комментарий ниже, вы бы поняли, почему я выбрал слово алгоритмы, а не математику.

Ответ 2

Я бы рекомендовал против "Руководства по разработке алгоритмов" для ваших целей и для сглаживания Cormen или Wikipedia.

После краткого ознакомления с основными алгоритмическими темами страницы 171-437 действительно не учат вас ни о том, как работают алгоритмы, ни о том, как их разрабатывать, но больше о том, какие существуют алгоритмы и где их реализовать (иногда это относится к вам к реализациям, которые вам нужно будет купить, как в разделе о линейном программировании)

Например, на матричном умножении есть 3 страницы, которые приводят несколько примеров того, для чего это полезно, представляют наивный алгоритм O (N 3) и упоминают, что существуют лучшие алгоритмы, такие как Strassen O (N 2,81) (без описания алгоритма) и рекомендую вам использовать библиотеку LAPACK для него.

Итак, если вы хотите узнать, как работают алгоритмы, а не какие алгоритмы существуют и где их реализовать, я снова рекомендую "Руководство по разработке алгоритмов".

Ответ 3

Недавно я купил Algorithm Design Manual, но только первые несколько глав. Это отличная книга, но, на мой взгляд, (из того, что я прочитал до сих пор):

(1) он не менее плотный, чем Кормен.

(2) больше о практических реализациях алгоритмов, чем алгоритмах обучения.

Ответ 4

Если вы можете себе это позволить (или ваш работодатель платит за это), и вы программируете на Java, я бы посоветовал: Структуры данных и алгоритмы на Java. Он охватывает те же темы, что и в других книгах, но позволяет легко понять, привыкли ли вы к программированию на Java. Например, книги по структуре данных C++ обычно не тратят много времени на хэши, поскольку структуры, основанные на хэшах, не так распространены в программировании C++. В Java, однако, хэши очень распространены, и у каждого объекта есть метод hashCode. Книга сочетает в себе хорошее сочетание теории и практики.

альтернативный текст http://ecx.images-amazon.com/images/I/51w6USIIpxL._SL160_.jpg

Ответ 5

Если вам нужен подход "вниз" к земле с небольшой математикой, брошенной в try Алгоритмы в двух словах - мне действительно нравилось читать его что больше, чем я могу сказать для мастерства ручья. (Хорошо, есть несколько страниц в кнуте, которые были достаточно просвещенными, чтобы их называли забавой.)

Ответ 8

Вот несколько рекомендаций:

  • Ахо и Ульман - "Алгоритмы и структура данных"
  • Vhirt
  • Дональд Э. Кнут - "Искусство компьютерного программирования"