Меня попросили рекомендовать ресурс (он-лайн, учебник или учебник), чтобы изучить алгоритмы (в смысле MIT Intro to Algorithms) CS или Math. Очевидно, что книга MIT слишком вовлечена, и некоторые из более легких процедур (например, алгоритмы OReilly в двух словах) по-прежнему выглядят так, как будто вам нужно иметь некоторый опыт в алгоритмическом анализе. Есть ли ресурс, который представляет материал таким образом, что разработчики, которые не имеют опыта теоретической информатики, будут полезны?Ресурс для обучения Алгоритмы для не-CS/Math градусов
ответ
Я думаю, что лучший способ узнать алгоритмы - через различные сайты соревнований.
- 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, не математический программист, который провел немало месяцев, обволакивая мой разум вокруг алгоритмического анализа.
Я не уверен, какую книгу MIT вы имеете в виду, но канонический текст - CLRS.. Я не думаю, что это действительно предполагает какой-либо фон, помимо математики средней школы.
Лично я нашел TopCoder конкурс алгоритмов в течение последних нескольких лет, чтобы наилучшим образом изучить основные алгоритмы и применить их на практике. Возможно, вы должны попробовать то же самое. Независимо от того, что вы делаете, я предлагаю вам потратить намного больше времени на клавиатуру, реализуя вещи, которые вы изучаете, чем время в голове, потому что это способ действительно усвоить различные методы.
да, я говорю о CLRS. Вы правы в том, что это вводный текст, однако размер и академический способ его написания будут пугать многих. – ennuikiller
@ennuikiller - CLRS намного менее устрашающе, когда вы сначала попытались Кнута. Я знаю это через болезненный опыт ... – rtperson
Я поеду на Algorithm Design Manual, по Стивену Лекена. Это очень читаемо и начинается с основ простым и понятным способом. Например, он очень хорошо описывает нотацию большого О. Акцент делается на практическое применение, что является большим преимуществом для новичков, прибывающих из нетеоретической области.
Вторая половина книги является ссылкой на общие проблемы алгоритмов и практические подходы к их решениям. Я нашел его неоценимым в качестве учебного пособия и теперь как ссылку.
Спасибо за рекомендацию! – ennuikiller
- 1. RoR - Ресурс для обучения
- 2. Хороший ресурс для обучения HTML5
- 3. Полезный ресурс для обучения Фрагменты
- 4. Простые алгоритмы обучения?
- 5. Алгоритмы обучения графику
- 6. алгоритмы увеличения изображения для подготовки набора для глубокого обучения
- 7. Что такое хороший ресурс для обучения XNA?
- 8. Лучший ресурс для обучения .NET-дженериков?
- 9. Хороший веб-ресурс для обучения Direct Compute?
- 10. Ресурс (ы) для обучения побитовой операции?
- 11. Хороший ресурс/книга для обучения Objective-C
- 12. Каков наилучший ресурс для обучения Windows-драйверов?
- 13. Алгоритмы машинного обучения, учитывающие контекст
- 14. Что такое алгоритмы машинного обучения
- 15. Подход во время обучения Алгоритмы
- 16. Ресурс для обучения Lua для использования с C++?
- 17. Алгоритмы машинного обучения: какой алгоритм для решения проблемы?
- 18. Алгоритмы обучения артефактам непрерывных состояний, дискретные действия
- 19. Ресурс с большим количеством примеров для обучения ASP.Net
- 20. Ресурс для обучения рекурсии и индукции по спискам и деревьям?
- 21. Chrome Developer Tools: лучший ресурс для обучения расширенным функциям?
- 22. Что такое хороший ресурс для обучения программированию CGI в Python?
- 23. Ресурс для обучения TDD с asp.net MVC 3
- 24. Лучший бесплатный ресурс для обучения использованию расширенного пакетного файла?
- 25. NSNumberFormatter для значений градусов
- 26. Использование JavaScript для машинного обучения
- 27. Алгоритмы для «укорочения» строк?
- 28. Алгоритмы кластеризации для строк
- 29. Алгоритмы для: проверки принтера
- 30. Алгоритмы для персонализированного содержимого
здесь нет конкуренции, только коллега – none
@none - Я называю их «сайтами-конкурентами», потому что они созданы специально, чтобы люди могли тренироваться для различных алгоритмических соревнований. Они отличные инструменты обучения. – rtperson