← к оглавлению

MST и DSU — теория устных вопросов 14–17

Система непересекающихся множеств, минимальное остовное дерево, лемма о безопасном ребре, Прим, Крускал. Формулировки — по лекции курса.

Содержание: 14. DSU 15. MST и лемма о безопасном ребре 16. Прим 17. Крускал

14. Система непересекающихся множеств (DSU)

Что это

Структура для работы с набором непересекающихся множеств. Операции: Unite(a,b) — объединить множества a и b; AreSame(a,b) — лежат ли в одном множестве; FindSet(x) — представитель (корень) множества x.

Каждое множество хранится как подвешенное дерево, его представитель — корень. Объединение = подвесить один корень к другому. AreSame = сравнить представителей.

Две эвристики

Ранговая (весовая) эвристика: при объединении подвешиваем дерево с меньшим рангом (глубиной) или весом (размером) к большему.

Сжатие путей: при FindSet подвешиваем все вершины на пути к корню напрямую к корню.

Асимптотика

α(N) = min{k | A(k,k) ≥ N}. Для всех реальных N имеем α(N) ⩽ 4 (так как A(4,4) астрономически велико), но формально это не константа.

Спросят: определение α(N), почему обе эвристики дают почти константу, применение (Крускал, оффлайн-компоненты связности).

15. MST. Лемма о безопасном ребре

Определения

Остов графа G=(V,E) — подграф H=(V,E′), E′⊆E (те же вершины, часть рёбер).
Остовное дерево — остов, являющийся деревом.
MST — остовное дерево минимального суммарного веса.
Разрез ⟨S,T⟩: S∪T=V, S∩T=∅. Ребро (u,v) пересекает разрез, если u и v в разных долях.

Безопасное ребро

Пусть G′=(V,E′) — подграф некоторого MST. Ребро (u,v)∉E′ безопасно, если G′∪{(u,v)} тоже подграф некоторого MST.

Лемма. Если ни одно ребро E′ не пересекает разрез ⟨S,T⟩, а (u,v) — ребро минимального веса среди пересекающих разрез, то (u,v) безопасно для E′.

Доказательство (для устного)

Достроим E′ до некоторого MST T_min. Если (u,v)∈T_min — готово. Иначе рассмотрим путь из u в v в T_min: так как u и v в разных долях разреза, на пути есть ребро e′, пересекающее разрез. По условию w(u,v) ⩽ w(e′). Заменим e′ на (u,v): получим снова остовное дерево (связность сохранилась), вес не вырос → это тоже MST. Значит E′∪{(u,v)} достраивается до MST, ребро безопасно.

Спросят: смысл «некоторого MST», доказательство замены ребра, как из леммы следуют Прим и Крускал.

16. Алгоритм Прима

Идея

Растим одно дерево из S={s}. На каждом шаге рассматриваем разрез ⟨S, V∖S⟩, находим минимальное ребро через разрез (оно безопасно по лемме), добавляем его и новую вершину в S. Повторяем, пока S≠V.

Корректность — прямое следствие леммы о безопасном ребре: каждое добавляемое ребро безопасно.

Асимптотика

Контейнер рёберИтого
МассивO(|V|²)
Приоритетная очередь / TreeSetO(|E| log|V|)
Фибоначчиева кучаO(|E| + |V| log|V|)
Спросят: связь с Дейкстрой (та же структура, другой ключ релаксации — вес ребра, а не расстояние), выбор контейнера, когда O(|V|²) лучше (плотные графы).

17. Алгоритм Крускала

Идея

Проверка «в разных компонентах» — через DSU: добавление ребра = Unite, проверка цикла = AreSame.

Корректность: минимальное ребро, соединяющее две компоненты, безопасно (лемма, где разрез отделяет одну компоненту от остальных).

Асимптотика

O(|E| log|E|) на сортировку + O(|E|·α(|V|)) на DSU = O(|E| log|E|) (доминирует сортировка).

Спросят: роль DSU, почему сортировка доминирует, сравнение с Примом по плотности графа.
▶ интерактив: Крускал на точках (манхэттен)
Прим vs Крускал: оба строят MST, оба опираются на лемму о безопасном ребре. Прим растит одно дерево (хорош на плотных графах, особенно O(V²) массивом). Крускал сортирует все рёбра и склеивает компоненты через DSU (хорош на разреженных графах). На экзамене полезно уметь вывести оба из леммы.