Динамика по подмножествам, по профилю (3 декабря 2024)
- Задача: покрасить вершины графа в минимальное число цветов
- Напоминание: умеем за 3n + 2nn2
- 2nn2 → 2n (можно ещё раз, если уже было)
- Алгоритм перебора всех максимальных по включению за 3n/3 = 1.44n
- Покраска вершин, описание решения за O(2.44n). Доказательство: (1+1.44)n
- Задачи на подмножествах
- [есть в прошлой практике!] Рюкзак (Set Cover: покрыть множество {0,1,...,n-1} минимальным числом множеств из набора A1,...,Am
- Перевёрнутая битовая запись числа (001101 → 101100)
- Meet-In-The-Middle
- Решение задачи о рюкзаке
- Выбрать подмножество заданной суммы за 2n/2 (2 способа: сортировка, хеш-таблица)
- Выбрать подмножество веса до W максимальной стоимостью за 2n/2n (сортировка и префиксный минимум)
- Решение задачи о поиске максимальной клики (подводка к кликам: выбрать дружную компанию на день рождения)
- За 2n
- Классический Meet-In-The-Middle. 2n/2n (до 2n/2 можно не оптимизировать)
- Перебор (две ветки: берём или не берём) с отсечением запоминанием + док-во того, что не более 2n/2 состояний
− Перерыв −
- DP и скошенный профиль без рекурсии рекурсию (задача про доминошки)
- Вспоминаем задачу, решение.
- Пишем код без рекурсии по изломаному профилю.
- Замечаем, что можно ещё делать то же самое по прямому (матрица в степени).
- Покраска за 2nn
- постановка задачи, предподсчёт
- формула включения-исключения
- Максимальная клика быстрее 2n/2