СНМ и Остовные деревья (26 февраля 2021)
- [35 минут] Краскал и DSU
- Алгоритм Краскала : жадность
- Доказательство
- Рассмотрим оптимальный ответ, сделаем замену
- Обобщение доказательства : лемма о разрезе (&exists; MST, содержащее всё уже выбранное и "e")
- Реализация Краскала, DSU
- Решение списками: меньшее к большему, join суммарно за O(nlogn), get за O(1)
- Решение деревьями. Эвристика "меньшее к большему" и ранговая версия.
- Решение деревьями. Эвристика "сжатие путей".
- [35 минут] DSU. Доказательства
- Эвристика сжатия путей. Доказательство O(logn) для этой эвристики (смотрим на количество тяжёлых рёбер).
- Эвристика "меньшее к большему". Варианты с рангами и размерами. Доказательство O(logn) для get.
− Перерыв −
- [35 минут] DSU. Доказательства
- Две эвристики O(mlog*n)
- Две эвристики O(m + nlog*n)
- [20 минут] MST (минимальные остовы)
- Прим = Дейкстра с функцией "max входящий вес" (с доказательством). Разрез: дерево и оставшаяся часть графа.
- Борувка = итеративное сжатие графа. Добавляем рёбра по одному в правильном порядке.
- Борувка за min(V2, ElogV)
Дополнительная лекция
- [15 минут] Алгоритм Йена'71 поиска k-го объектра
- k-й путь за O(Vk*Dijkstra)
- k-й остов за O(Ek*MST)
- Эппштейн для {unknownvariable:k}-го непростого пути
- Пример с динамикой
- Решение за O((n+m+k)log(nk))
- [30 минут] DSU: обратная функция Аккермана
- Доказываем log*(log*n) + 2, log*(log*(log*n)) + 3...
- Получаем "сколько раз нужно взять log*x, чтобы число итераций было больше результата"
- Вводим функцию Аккермана и обратные ей. Показываем основные свойства.
- Доказываем функцию Аккермана.