2010-10-13 2 views
11

Меня попросили рекомендовать ресурс (он-лайн, учебник или учебник), чтобы изучить алгоритмы (в смысле MIT Intro to Algorithms) CS или Math. Очевидно, что книга MIT слишком вовлечена, и некоторые из более легких процедур (например, алгоритмы OReilly в двух словах) по-прежнему выглядят так, как будто вам нужно иметь некоторый опыт в алгоритмическом анализе. Есть ли ресурс, который представляет материал таким образом, что разработчики, которые не имеют опыта теоретической информатики, будут полезны?Ресурс для обучения Алгоритмы для не-CS/Math градусов

ответ

6

Я думаю, что лучший способ узнать алгоритмы - через различные сайты соревнований.

  • USACO - мой личный фаворит, так как она дает четкий путь через материал
  • TopCoder - уже упоминавшийся
  • Sphere Online Judge - замечательно, если вы хотите работать на другом языке, кроме C/C++/Java

Что касается книг, лучшее единственное введение, которое я видел для не-математического специалиста, - Data Structures and Algorithms. Он проходит через алгоритм по очереди и показывает вам, как он математически распадается, что-то отличное в анализе в CLRS, немного менее понятное.

Skiena's Algorithm Design Manual также отлично подходит, как и его Programming Challenges, что по существу является учебным пособием через онлайн-судья Вальядолида.

Честно говоря, я считаю, что самая полезная вещь, которую может сделать новичок, - это реализовать различные алгоритмы - слияние сортировки, скажем, с помощью Quicksort, - и время их на разные входы. Создайте таблицу с графиком, который показывает их рост с течением времени. Очень немногие неспециалисты будут иметь терпение или ноу-хау, чтобы установить отношение повторения и решить их путь через него. Но вы должны понимать влияние, скажем, O n^2 роста с течением времени, и нет лучшего способа узнать об этом, чем смотреть, как ваша собственная программа пробивается через стек памяти. :)

Я говорю это как не-CS, не математический программист, который провел немало месяцев, обволакивая мой разум вокруг алгоритмического анализа.

+0

здесь нет конкуренции, только коллега – none

+2

@none - Я называю их «сайтами-конкурентами», потому что они созданы специально, чтобы люди могли тренироваться для различных алгоритмических соревнований. Они отличные инструменты обучения. – rtperson

0

Я не уверен, какую книгу MIT вы имеете в виду, но канонический текст - CLRS.. Я не думаю, что это действительно предполагает какой-либо фон, помимо математики средней школы.

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

+1

да, я говорю о CLRS. Вы правы в том, что это вводный текст, однако размер и академический способ его написания будут пугать многих. – ennuikiller

+3

@ennuikiller - CLRS намного менее устрашающе, когда вы сначала попытались Кнута. Я знаю это через болезненный опыт ... – rtperson

1

Я поеду на Algorithm Design Manual, по Стивену Лекена. Это очень читаемо и начинается с основ простым и понятным способом. Например, он очень хорошо описывает нотацию большого О. Акцент делается на практическое применение, что является большим преимуществом для новичков, прибывающих из нетеоретической области.

Вторая половина книги является ссылкой на общие проблемы алгоритмов и практические подходы к их решениям. Я нашел его неоценимым в качестве учебного пособия и теперь как ссылку.

+0

Спасибо за рекомендацию! – ennuikiller

Смежные вопросы