Есть ли обзор наиболее распространенных алгоритмов?
Я ищу обзор алгоритмов, которые вам нужны время от времени. Если есть проблема, вы либо заново изобретаете колесо, либо тратите много времени на поиск алгоритма для общеизвестной проблемы, которая была решена сто раз раньше.
Лучшим будет сайт с отсортированными алгоритмами, такими как:
- компрессия
- ...
- Дешифрирование
- ...
- шифрование
- Symetric
- ...
- ассиметричным
- ...
- Symetric
- Поиск
- ...
- Сортировать
- Пузырьковая сортировка
- Quicksort
- ...
Я думаю, вы понимаете, о чем я.
Какие страницы вы знаете?
14 ответов
У вас также есть хороший Wikibook по алгоритмам, на который ссылаются многие статьи об алгоритмах.
Я настоятельно рекомендую книгу "Руководство по разработке алгоритмов" Стивена Скиены. Он имеет структуру каталога, которую вы упоминаете.
Есть серия книг "Искусство компьютерного программирования", которая достаточно всеобъемлющая, если вы хотите что-то на бумаге.
У Принстона есть несколько замечательных публичных лекций Р. Седжвика (парень, который создал левые красные черные деревья и книгу "Алгоритмы на С").
http://www.cs.princeton.edu/courses/archive/spring11/cos226/lectures.php
Эта книга превосходна:
Руководство по разработке алгоритма
Это было связано в других ответах, но это хороший ресурс:
Наряду с Руководством по разработке алгоритмов существует онлайновое хранилище алгоритмов Stony Brook, управляемое автором, которое ссылается на реализации. Оба имеют отличную структуру каталога.
CLRS.
То есть учебник "Введение в алгоритмы" Кормена, Лизерсона, Ривеста и Стейна.
Это даст вам хороший обзор наиболее важных алгоритмов для наиболее распространенных целей, а также подробный анализ.
Простой веб-сайт / список был бы плохой услугой, если бы он вызывал слишком поспешный выбор "вырезать и вставить" без твердого понимания.
На вопрос "Есть ли обзор наиболее распространенных алгоритмов?" Это как спросить, есть ли общий обзор математики или науки?
Алгоритмы - это методы решения проблем и прикладная математика, используемые во многих областях, которые требуют систематического подхода к решению сложных проблем, таких как эти области / приложения:
Компьютерная техника или электротехника:
Алгоритмы обработки изображений
обработка сигналов в общем алгоритмах
Шумоподавление, аналого-цифровой
CS или IT:
Управление данными
безопасность (шифрование, обнаружение вторжений)
Машинное обучение
Финансы, исследование операций, эконометрика:
Линейное программирование
Динамическое Программирование
Статистические алгоритмы и стохастическое исчисление
Combinatrics
так далее....
Просто назвать несколько и поцарапать поверхность
Однако большинство специализированных алгоритмов основаны на общих случаях, встречающихся в CS, поэтому, чтобы ответить на ваш вопрос, подойдет любая книга или учебное пособие, в которых рассматривается введение в алгоритм.
Вот наименьшее количество общих алгоритмов CS, с которыми я сталкивался в академической среде и профессионально 1) Сортировка (всплывающее, вставка, слияние, быстрая)
2) Поиск (DFS, BFS)
3) Структуры данных и алгоритмы, которые пересекают структуры данных
4) Рекурсия против Интеграции (Сложность рекурсии должна быть изучена, Основная Теорема)
5) Деревья (бинарные,N-арные,Kd-дерево,B-дерево)
6) Графики (обход через DFS, BFS)
7) Хеширование
8) Общие математические алгоритмы (GCD, экспонирование, различные умножения матриц)
9) Деревья выражений (Строительство и обход)
10) Обзор распространенных алгоритмов шифрования, таких как RSA, AES и т. Д.
Если вы изучите то, что я упомянул выше и знаете временные сложности (обозначение O), это в значительной степени охватывает все, что вам нужно знать для алгоритмов CS.
Я рекомендую "Введение в алгоритмы" от Cormen, etal. MIT Press
Наиболее распространенные алгоритмы включены в Boost. Здесь вы можете найти наиболее распространенные алгоритмы сортировки, поиска или иным образом. Использование алгоритмов тесно связано с использованием определенного языка программирования. В дополнение к вышеупомянутым книгам, существует несколько хороших URL, таких как Видеоинструкции по информатике
В дополнение к поддержке Руководства по разработке алгоритмов, у меня был очень положительный опыт работы с этой книгой:
Мой выбор по умолчанию - Stackru.com:)
Просто поиск по ключевому слову "алгоритм"; вы получите кучу проблем.