Является ли руководство по алгоритмированию хорошей книгой для новичка в алгоритмах?
У меня есть хорошее представление о том, что такое Big-O, и я также знаю несколько основных алгоритмов сортировки, хотя, по какой-то причине, мне никогда не было удобно с ними, и я все время забываю их. Я программирую в течение 4 лет на Java, Python, C и C++; Я был приличным программистом. Теперь я хочу выйти за рамки изучения языков программирования и начать изучать алгоритмы.
Я попробовал "Введение в алгоритмы" Cormen et al. но математика для меня слишком плотная (или, может быть, я слишком плотная для математики в этой книге).
Теперь я планирую взять Руководство по разработке алгоритмов от Стива Скиены. Вы бы порекомендовали это для моей ситуации? У вас есть другие рекомендации, если вы думаете, что это не для меня?
Ответы
Ответ 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 Алгоритмы в двух словах - мне действительно нравилось читать его что больше, чем я могу сказать для мастерства ручья. (Хорошо, есть несколько страниц в кнуте, которые были достаточно просвещенными, чтобы их называли забавой.)
Ответ 6
Я очень рекомендую Анализ структур данных и алгоритмов в C++ Марка Аллена Вайса.
Ответ 7
Нет, я так не думаю. Попробуйте структуры данных и алгоритмы за 24 часа Роберта Лафора.
Ответ 8
Вот несколько рекомендаций:
- Ахо и Ульман - "Алгоритмы и структура данных"
- Vhirt
- Дональд Э. Кнут - "Искусство компьютерного программирования"
Ответ 9
"Введение в алгоритмы", Cormen, Leiserson & Ривест. Видеть http://www.amazon.com/Introduction-Algorithms-Second-Thomas-Cormen/dp/0262032937