Алгоритмы и структуры данных — различия между версиями
м (→Поисковые структуры данных) |
м (rollbackEdits.php mass rollback) |
||
(не показано 7 промежуточных версий 6 участников) | |||
Строка 40: | Строка 40: | ||
* [[2-3 дерево]] | * [[2-3 дерево]] | ||
* [[B-дерево]] | * [[B-дерево]] | ||
+ | * [[B+-дерево]] | ||
* [[Красно-черное дерево]] | * [[Красно-черное дерево]] | ||
* [[Декартово дерево]] | * [[Декартово дерево]] | ||
Строка 147: | Строка 148: | ||
* [[Интерполяционный поиск]] | * [[Интерполяционный поиск]] | ||
* [[Метод Фибоначчи]]<tex>^\star</tex> | * [[Метод Фибоначчи]]<tex>^\star</tex> | ||
+ | |||
+ | == [[Динамическое программирование]] == | ||
+ | === Классические задачи динамического программирования === | ||
+ | *[[Кратчайший путь в ациклическом графе]] | ||
+ | *[[Задача о числе путей в ациклическом графе]] | ||
+ | *[[Задача о расстановке знаков в выражении]] | ||
+ | *[[Задача о порядке перемножения матриц]] | ||
+ | *[[Задача о наибольшей общей подпоследовательности]] | ||
+ | *[[Задача о наибольшей возрастающей подпоследовательности]] | ||
+ | *[[Быстрый поиск наибольшей возрастающей подпоследовательности]]* | ||
+ | *[[Задача коммивояжера, ДП по подмножествам]] | ||
+ | *[[Задача о редакционном расстоянии, алгоритм Вагнера-Фишера]] | ||
+ | *[[Задача о рюкзаке]] | ||
+ | |||
+ | === Способы оптимизации методов динамического программирования === | ||
+ | *[[Метод четырёх русских для умножения матриц]] | ||
+ | *[[Применение метода четырёх русских в задачах ДП на примере задачи о НОП]]<tex>^\star</tex> | ||
+ | *[[Задача об оптимальном префиксном коде с сохранением порядка. Монотонность точки разреза]] | ||
+ | *[[Meet-in-the-middle]]<tex>^\star</tex> | ||
+ | *[[Convex hull trick]] | ||
+ | |||
+ | === Другие задачи === | ||
+ | *[[Задача о расстоянии Дамерау-Левенштейна]]<tex>^\star</tex> | ||
+ | *[[Задача о выводе в контекстно-свободной грамматике, алгоритм Кока-Янгера-Касами]] | ||
+ | *[[Задача о наибольшей подпоследовательности-палиндроме]] | ||
+ | *[[Задача о наибольшей общей возрастающей последовательности]]<tex>^\star</tex> | ||
+ | *[[Задача о наибольшей общей палиндромной подпоследовательности]]<tex>^\star</tex> | ||
+ | *[[Динамическое программирование по профилю]]<tex>^\star</tex> | ||
+ | *[[Динамика по поддеревьям]] | ||
+ | *[[Level Ancestor problem]] | ||
+ | |||
+ | == Криптографические алгоритмы == | ||
+ | *[[RSA]] | ||
== Связь между структурами данных == | == Связь между структурами данных == | ||
* [[Связь между структурами данных]] | * [[Связь между структурами данных]] | ||
+ | |||
+ | == Алгоритмы во внешней памяти == | ||
+ | * [[Алгоритмы во внешней памяти. Базовые конструкции]] | ||
[[Категория: Алгоритмы и структуры данных]] | [[Категория: Алгоритмы и структуры данных]] |
Текущая версия на 19:33, 4 сентября 2022
Содержание
- 1 Амортизационный анализ
- 2 Персистентные структуры данных
- 3 Приоритетные очереди
- 4 Система непересекающихся множеств
- 5 Поисковые структуры данных
- 6 Запросы на отрезках
- 7 Дерево Фенвика
- 8 Задача о наименьшем общем предке
- 9 Хеширование
- 10 Сортировки
- 11 Сортирующие сети
- 12 Алгоритмы поиска
- 13 Динамическое программирование
- 14 Криптографические алгоритмы
- 15 Связь между структурами данных
- 16 Алгоритмы во внешней памяти
Амортизационный анализ
- Амортизационный анализ
- Динамический массив
- Hashed Array Tree
- Список
- Стек
- Очередь
- Дек
- Мажорирующий элемент
- Счетчик Кнута
- Мастер-теорема
- List order maintenance
Персистентные структуры данных
- Персистентные структуры данных
- Персистентный стек
- Персистентная очередь
- Персистентный дек
- Персистентная приоритетная очередь
Приоритетные очереди
- Двоичная куча
- Биномиальная куча
- Фибоначчиева куча
- Левосторонняя куча
- Тонкая куча
- Толстая куча на избыточном счетчике
- Куча Бродала-Окасаки
Система непересекающихся множеств
- Наивные реализации
- Списки с весовой эвристикой
- Реализация с помощью леса корневых деревьев
- СНМ с операцией удаления за О(1)
Поисковые структуры данных
- Упорядоченное множество
- Дерево поиска, наивная реализация
- АВЛ-дерево
- 2-3 дерево
- B-дерево
- B+-дерево
- Красно-черное дерево
- Декартово дерево
- Декартово дерево по неявному ключу
- Splay-дерево
- Взвешенное дерево
- Tango-дерево
- Рандомизированное бинарное дерево поиска
- Дерево ван Эмде Боаса
- Список с пропусками
- Fusion tree
- Сверхбыстрый цифровой бор
- Rope
- AA-дерево
- Техника частичного каскадирования
- Centroid decomposition
Запросы на отрезках
Корневая эвристика
- Статистики на отрезках. Корневая эвристика
- Корневая декомпозиция с операциями: get, insert, erase
- Алгоритм Мо
Дерево отрезков
- Дерево отрезков. Построение
- Реализация запроса в дереве отрезков сверху
- Реализация запроса в дереве отрезков снизу
- Несогласованные поддеревья. Реализация массового обновления
- Многомерное дерево отрезков
- Сжатое многомерное дерево отрезков
Дерево Фенвика
- Дерево Фенвика
- Встречное дерево Фенвика
- Дерево Фенвика для некоммутативных операций
- Многомерное дерево Фенвика
Задача о наименьшем общем предке
- Сведение задачи LCA к задаче RMQ
- Сведение задачи RMQ к задаче LCA
- Метод двоичного подъема
- Решение RMQ с помощью разреженной таблицы
- Двумерная разреженная таблица
- Алгоритм Фарака-Колтона и Бендера (решение +/-1 RMQ с помощью метода четырех русских)
- Алгоритм Хьюи
- Heavy-light декомпозиция
- Алгоритм Шибера-Вишкина
- Алгоритм Тарьяна поиска LCA за O(1) в оффлайн
- Link-Cut Tree
- Rake-Compress деревья
Хеширование
- Хеш-таблица
- Разрешение коллизий
- Хеширование кукушки
- Идеальное хеширование
- Перехеширование
- Фильтр Блума
- Quotient filter
- Универсальное семейство хеш-функций
- Расширяемое хеширование
Сортировки
Квадратичные сортировки
Сортировки на сравнениях
- Сортировка Шелла
- Сортировка кучей
- Быстрая сортировка
- Сортировка слиянием
- Cортировка слиянием с использованием O(1) дополнительной памяти
- Терпеливая сортировка
- Timsort
- Smoothsort
- Теорема о нижней оценке для сортировки сравнениями
Многопоточные сортировки
Другие сортировки
- Поиск k-ой порядковой статистики
- Поиск k-ой порядковой статистики за линейное время
- Поиск k-ой порядковой статистики в двух массивах
- Сортировка подсчетом
- Цифровая сортировка
- Карманная сортировка
- Сортировка Хана
- Задача флага Нидерландов
- Блинная сортировка
Сортирующие сети
- Сортирующие сети
- Проверка сети компараторов на то, что она сортирующая. 0-1 принцип
- Сортирующие сети для квадратичных сортировок
- Сортировочные сети с особыми свойствами
- Сеть Бетчера
Алгоритмы поиска
- Целочисленный двоичный поиск
- Поиск в матрице
- Вещественный двоичный поиск
- Троичный поиск
- Поиск с помощью золотого сечения
- Интерполяционный поиск
- Метод Фибоначчи
Динамическое программирование
Классические задачи динамического программирования
- Кратчайший путь в ациклическом графе
- Задача о числе путей в ациклическом графе
- Задача о расстановке знаков в выражении
- Задача о порядке перемножения матриц
- Задача о наибольшей общей подпоследовательности
- Задача о наибольшей возрастающей подпоследовательности
- Быстрый поиск наибольшей возрастающей подпоследовательности*
- Задача коммивояжера, ДП по подмножествам
- Задача о редакционном расстоянии, алгоритм Вагнера-Фишера
- Задача о рюкзаке
Способы оптимизации методов динамического программирования
- Метод четырёх русских для умножения матриц
- Применение метода четырёх русских в задачах ДП на примере задачи о НОП
- Задача об оптимальном префиксном коде с сохранением порядка. Монотонность точки разреза
- Meet-in-the-middle
- Convex hull trick
Другие задачи
- Задача о расстоянии Дамерау-Левенштейна
- Задача о выводе в контекстно-свободной грамматике, алгоритм Кока-Янгера-Касами
- Задача о наибольшей подпоследовательности-палиндроме
- Задача о наибольшей общей возрастающей последовательности
- Задача о наибольшей общей палиндромной подпоследовательности
- Динамическое программирование по профилю
- Динамика по поддеревьям
- Level Ancestor problem