Я думаю, что курсы по разработке алгоритмов и сложности вычислений всегда сложны для студентов, которые не знакомы с этими предметами, потому что они требуют определенной степени математической зрелости и навыков решения проблем. В моем первом выпускном курсе по «вычислительной сложности» мой друг, который получил степень по чистой математике, сказал мне, как он удивлен тем, что хотя этот курс не требует большого математического образования (по крайней мере, это было сказано в план курса), это фактически потребовало почти все навыки, которые он получил через все его степень бакалавра математики!
Я обнаружил, что больше всего узнал о «пути» (когда я впервые начал обучение в аспирантуре), читая и выполняя упражнения из книги Сипсера . Обязательно выполняйте упражнения, потому что навыки решения проблем и математическая зрелость - это то, что вы хотите изучить, а не просто набор фактов или определений.
Однако книга Сипсера хороша только для сложностей и NP-полноты, ее недостаточно для замены книги CLRS. Единственная проблема с книгой CLRS состоит в том, что ее преимущество всестороннего охвата может стать ее слабостью, так как книга может выглядеть довольно страшной или подавляющей для студентов. Поэтому я советую вам действительно пойти в библиотеку и поискать книги по алгоритмам, просмотреть одну за другой и выбрать те, которые наиболее соответствуют вашему образу мышления. И снова не забывайте делать упражнения!
Для алгоритмов я лично предлагаю следующие книги (помимо тех, которые предложены Sadeq и JeffE):
- Очень читаемая и красивая книга Алгоритмы С. Дасгупты, К. Х. Пападимитриу и У. В. Вазирани.
- Записки убийцы (или книжный набросок) Джеффа Эриксона. (Поскольку Джефф слишком скромен, чтобы предлагать свои заметки, я должен сделать это сам.)
В общем, всякий раз, когда вы изучаете определенный алгоритм или структуру данных, если каким-то образом изложение в вашем учебнике недостаточно ясно для вас, тогда лучшим способом будет поиск в google лекционных заметок по этой конкретной теме. В некоторых случаях различные объяснения одной и той же вещи в конечном итоге дают вам полную картину. По крайней мере, так у меня работает.