Список комбинаторных алгоритмов
Перейти к навигации
Перейти к поиску
Общие комбинаторные алгоритмы[править | править код]
- шаблон не поддерживает такой синтаксис — находит цикл в итерациях
- Генераторы псевдослучайных чисел:
- шаблон не поддерживает такой синтаксис — генерация перестановок из пар таблиц Юнга
Алгоритмы на графах[править | править код]
- Алгоритм Беллмана-Форда — вычисляет кратчайший путь во взвешенном графе (где некоторые веса рёбер могут быть отрицательны)
- шаблон не поддерживает такой синтаксис — находит минимальное остовное дерево в графе
- Алгоритм Варшалла — вычисляет все кратчайшие пути во взвешенном графе
- Алгоритм Дейкстры — вычисляет кратчайший путь в графе с неотрицательными весами рёбер
- Алгоритм Краскала — находит остовный лес минимального веса в графе
- шаблон не поддерживает такой синтаксис— алгоритм для рисования графа
- Алгоритм Прима — находит остовное дерево минимального веса в связном графе
- шаблон не поддерживает такой синтаксис— решает проблему нахождения всех пар кратчайших путей во взвешенном направленном графе
- шаблон не поддерживает такой синтаксис— вычисляет максимальный поток в графе
- шаблон не поддерживает такой синтаксис — модификация алгоритма Форда-Фалкерсона
- Метод ближайшего соседа
- Неблокирующий минимальный охватывающий переключатель например, для телефонной связи
Алгоритмы поиска[править | править код]
- шаблон не поддерживает такой синтаксис — модификация алгоритма линейного поиска; находит k-тый по величине элемент в списке;
- шаблон не поддерживает такой синтаксис — использует бинарное дерево для хранения элементов;
- Двоичный поиск — находит элемент в отсортированном списке
- Интерполирующий поиск (Предсказывающий поиск, Поиск по словарю)
- Линейный поиск — находит элемент в неотсортированном списке
- шаблон не поддерживает такой синтаксис
- шаблон не поддерживает такой синтаксис
- Поиск в глубину — проходит граф ветка за веткой
- Поиск в ширину — проходит граф уровень за уровнем
- шаблон не поддерживает такой синтаксис (англ. Best-first search)— проходит граф в порядке важности, используя очередь приоритетов
- шаблон не поддерживает такой синтаксис— особый случай поиска по первому наилучшему совпадению; используется эвристика, увеличивающая скорость работы алгоритма
- шаблон не поддерживает такой синтаксис— находит элемент в отсортированном списке
- Поиск в хеш-таблице
Алгоритмы на строках[править | править код]
Алгоритмы поиска строки[править | править код]
- Алгоритм Кнута-Морриса-Пратта
- Алгоритм Рабина-Карпа поиска строки
- шаблон не поддерживает такой синтаксис
- шаблон не поддерживает такой синтаксис
- шаблон не поддерживает такой синтаксис (также известен как shift-or, shift-and или Baeza-Yates-Gonnet алгоритм)
- Задача поиска наибольшей общей подпоследовательности
- шаблон не поддерживает такой синтаксис
- шаблон не поддерживает такой синтаксис
- Задача поиска наибольшей общей подстроки
Примерное соответствие[править | править код]
- Расстояние Левенштейна
- Расстояние Хэмминга
- шаблон не поддерживает такой синтаксис
- шаблон не поддерживает такой синтаксис
- шаблон не поддерживает такой синтаксис
- Soundex
- шаблон не поддерживает такой синтаксис
Деревья для строковых последовательностей[править | править код]
Алгоритмы сортировки[править | править код]
- шаблон не поддерживает такой синтаксис
- шаблон не поддерживает такой синтаксис
- шаблон не поддерживает такой синтаксис (также известен как корзинная сортировка)
- Быстрая сортировка — с разбиением исходного набора данных на две половины так, что любой элемент первой половины упорядочен относительно любого элемента второй половины; затем алгоритм применяется рекурсивно к каждой половине
- шаблон не поддерживает такой синтаксис
- шаблон не поддерживает такой синтаксис
- Пирамидальная сортировка (Сортировка кучей) — превращаем список в кучу, берём наибольший элемент и добавляем его в конец списка
- шаблон не поддерживает такой синтаксис
- Поразрядная сортировка — сортирует строки буква за буквой
- Сортировка Бентли-Седжвика (англ. BeSe sort) — модификация быстрой сортировки для составных ключей, заключающаяся в делении не пополам, а на три части — в третью попадают одинаковые (по текущему символу) ключи
- Сортировка бинарным деревом
- Сортировка методом вставок — определяем, где текущий элемент должен находится в отсортированном списке, и вставляем его туда
- Сортировка методом выбора — наименьшего или наибольшего элемента и помещения его в начало или конец отсортированного списка
- Сортировка методом Шелла— попытка улучшить сортировку вставками
- Сортировка перемешиванием (Сортировка коктейлем)
- Сортировка подсчётом
- Сортировка пузырьком
- шаблон не поддерживает такой синтаксис
- Сортировка слиянием — сортируем первую и вторую половину списка отдельно, а затем — сливаем отсортированные списки
- шаблон не поддерживает такой синтаксис
- Хитрая сортировка — извлекает из исходной последовательности отсортированные подпоследовательности, производя их слияние с уже извлечёнными данными
- Цифровая сортировка (Сортировка по отделениям)
Алгоритмы слияния[править | править код]
- Простой алгоритм слияния (англ. Simple Merge algorithm)
- К-мерный алгоритм слияния (англ. k-way Merge algorithm)
Литература[править | править код]
- Дональд Кнут . Искусство программирования, том 4, выпуск 4. Генерация всех деревьев. История комбинаторной генерации = The Art of Computer Programming, Volume 4, Fascicle 4: Generating All Trees -- History of Combinatorial Generation. — М.: «Вильямс», 2007. — С. 160. — ISBN 0-321-33570-8.