Динамика по подмножествам, по профилю (30 ноября 2016)

  1. Динамика по подотрезкам
    1. Сводим задачу к меньшим такого же вида
    2. Динамика тоже описывается графом, но не является напрямую задачей поиска пути на этом графе

  2. Задача: покрасить вершины графа в минимальное число цветов
    1. Предподсчет good[A] за O(2nn2). Решение за O(4n).
    2. Перебор всех надмножеств всех множеств за O(3n)
    3. Перебор всех подмножеств всех множеств за O(3n)
    4. [на практику] замена O(2nn2) на O(2n) (good[] - динамика).
    5. Алгоритм перебора всех максимальных по включению за 3n/3 = 1.44n
    6. Покраска вершин, описание решения за O(2.44n).

  3. Задачи на подмножествах
    1. Рюкзак (Set Cover: покрыть множество {0,1,...,n-1} минимальным числом множеств из набора A1,...,Am
    2. Перевёрнутая битовая запись числа
− Перерыв −
  1. Meet-In-The-Middle
    1. Решение задачи о рюкзаке за 2n/2n
    2. Решение задачи о поиске максимальной клики за 2n/2
    3. Хиршберг − тоже Meet-In-The-Middle
  2. DP и скошенный профиль через рекурсию (задача про доминошки)
    1. Перебор за O(2wh/2)
    2. Запоминание → получили динамику → доказали число состояний O(2min(w,h)wh)
    3. Как кодировать матрицу? Матрица → одномерный массив → число → хеш