Паросочетание в произвольном графе
- Рандомизированный алгоритм поиска паросочетания в произвольном графе
Гамильтоновость
- Теорема Дирака (1952): если у любой вершины deg >= n / 2, граф гамильтонов.
- Алгоритм построения за O(N3) и док-во. На самом деле алгоритм работает за O(N2).
- Теорема Оре (1960): deg v + deg u >= N для любых u и v не связных ребром.
- Теорема 3: deg[k] > k для всех k < n / 2, где deg[i] - i-я по возрастанию степень.
- Теорема Хватала (1972): признак гамильтоновости (deg[k] <= k < n / 2) => (deg[n-k] >= n - k)
- Турниры - алгоритм поиска Гамильтонова пути за O(N2)
- Турниры - алгоритм поиска Гамильтонова цикла за O(N3)
- Турниры - алгоритм поиска Гамильтонова цикла за O(N2)
Планарность
- Теорема Эйлера. E + K + 1 = V + G.
- E < 3V - 6. E = O(V).
- Любой граф можно уложить в R3. Например, все вершины на прямой, каждому ребру своя плоскость.
- Укладка на сфере = укладке на плоскости. Любую грань можно сделать внешней.
- K3,3 и K5 не планарны.
- Теорема Куратовского: если в графе нет подграфов гомеоморфных K3,3 или K5, граф планарен.
- Алгоритм Демукрона укладки графа за O(V2).
- Док-во времени работы (разбиение на k компонент работает за O(Vk), сумма всех k = O(V)).
- Алгоритм разбиения графа на грани за O(V + sort). Как этот алгоритм применить к результату алгоритма Демукрона?
- Алгоритм определения внешних граней за O(V).
2-SAT
- Постановки задачи. Решение перебором за O(2N*N)
- Жадное решение за O(NE). Алгоритм = пусть (x[i] = 0) из этого что-то следует... dfs. Если нашли противоречие, значит x[i] = 1.
- Док-во: если есть ребро (x[i]=a) --> (x[p]=b), то есть ребро (x[p]=!b) --> (x[i]=!a). То же можно сформулировать для путей.
- Решение за O(E) = топологическая сортировка вершин в орграфе из 2N вершин.
Матроиды.
- Построение MST: алгоритм Краскала = отсортировали ребра по весу и в таком порядке пробуем их добавлять в ответ.
- Построение базиса минимального веса: отсортировали вектора по весу и в таком порядке пробуем их добавлять в ответ.
- Паросочетание минимального по сумме весов вершин первой доли весу: отсортировали и...
- Пытаемся доказать и обобщить. Утверждение: множество остовных лесов данного графа образуют Матроид.
- Матроид = множество хороших множеств. Определение Матроида = 3 аксиомы.
- Трансверсальный и векторный матроиды.
- Алгоритмы Радо-Эдмондса: получения max по размеру, а из таких min по сумме весов хорошего множества.
Задачи на потоки
- [LR-flow] Округление вещественной матрицы округленными числами с сохранением суммы в строках и столбцах
- [mincost-flow] Нужно последовательность разбить на K подпоследовательностей: разница индексов не более X, разница значений не более Y.