Минимальное остовное дерево
Материал из MachineLearning.
Содержание |
Минимальное остовное дерево (Minimum Spanning Tree, MST)
Минимальное остовное дерево (Minimum Spanning Tree, MST) — это остовное дерево взвешенного неориентированного связного графа, которое имеет минимальный возможный суммарный вес всех своих рёбер. Иными словами, это ациклический связный подграф, содержащий все вершины исходного графа, для которого сумма весов рёбер минимальна.
Задача о поиске минимального остовного дерева является одной из классических оптимизационных задач на графах. Она имеет множество эффективных решений и широко применяется в различных областях, включая кластеризацию, проектирование сетей и анализ данных.
Определения
Пусть задан связный неориентированный граф , где
— множество вершин, а
— множество рёбер. Для каждого ребра
определена его весовая функция
, которая сопоставляет ребру некоторое числовое значение (стоимость, длину, пропускную способность и т.д.).
Остовное дерево графа — это ациклический связный подграф
, где
и
. Вес остовного дерева определяется как сумма весов входящих в него рёбер:
.
Минимальное остовное дерево (MST) — это остовное дерево , такое что
для любого другого остовного дерева
графа
.
Свойства MST
Задача поиска MST обладает рядом важных свойств, которые лежат в основе всех классических алгоритмов её решения:
- Свойство разреза (Cut Property): Рассмотрим произвольное подмножество вершин
, где
и
. Пусть ребро
— ребро минимального веса среди всех рёбер, пересекающих разрез
(т.е. соединяющих вершину из
с вершиной из
). Тогда существует минимальное остовное дерево, содержащее ребро
.
- Свойство цикла (Cycle Property): Рассмотрим любое ребро
, принадлежащее некоторому циклу в графе
. Если вес ребра
строго больше веса любого другого ребра в этом цикле, то
не может принадлежать никакому минимальному остовному дереву.
- Свойство безопасного ребра (Safe Edge Property): Добавление ребра, удовлетворяющего свойству разреза, к частичному остовному лесу сохраняет возможность построения MST. Такое ребро называется безопасным.
Алгоритмы построения
Для решения задачи о минимальном остовном дереве разработано несколько классических алгоритмов. Все они, как правило, являются жадными и основаны на свойствах разреза и цикла.
Алгоритм Крускала (Kruskal's algorithm)
Алгоритм Крускала был предложен Джозефом Крускалом в 1956 году . Его основная идея заключается в построении MST путём последовательного добавления рёбер в порядке возрастания их весов, при условии, что добавляемое ребро не создаёт цикла .
Этапы алгоритма:
- Инициализировать лес, состоящий из изолированных вершин графа
.
- Отсортировать все рёбра графа
по неубыванию весов.
- Для каждого ребра
в отсортированном порядке:
- Если вершины
и
принадлежат разным компонентам связности текущего леса, добавить ребро
в остовное дерево и объединить эти две компоненты.
- В противном случае (если
и
уже в одной компоненте), пропустить ребро, так как его добавление создаст цикл.
- Если вершины
- Алгоритм завершается, когда в остовном дереве будет
ребро (т.е. все вершины будут соединены в одну компоненту).
Для эффективной проверки принадлежности вершин к разным компонентам и их объединения используется структура данных системы непересекающихся множеств (Union-Find, DSU) .
Сложность алгоритма: , где
— число рёбер,
— число вершин. Сложность определяется, в первую очередь, сортировкой рёбер . При использовании эффективной реализации DSU операции find и union выполняются почти за константное время.
Алгоритм Прима (Prim's algorithm)
Алгоритм Прима был разработан Робертом Примом в 1957 году. В отличие от алгоритма Крускала, он строит дерево, последовательно наращивая его от одной начальной вершины .
Этапы алгоритма:
- Выбрать произвольную стартовую вершину
и добавить её в множество построенного дерева
.
- Для каждой вершины
вычислить расстояние до текущего дерева
как минимальный вес ребра, соединяющего
с какой-либо вершиной из
.
- На каждом шаге выбирается вершина
, имеющая минимальное расстояние до дерева. Вершина
и соответствующее ребро минимального веса добавляются в дерево
.
- Шаги 2-3 повторяются, пока
(пока не будут включены все вершины).
Сложность алгоритма: зависит от реализации приоритетной очереди для выбора вершины с минимальным расстоянием.
- Простая реализация (без кучи):
, эффективна для плотных графов.
- С использованием двоичной кучи:
.
- С использованием кучи Фибоначчи:
.
Алгоритм Борувки (Borůvka's algorithm)
Один из первых алгоритмов для решения задачи MST, предложенный Отакаром Борувкой в 1926 году . Его идея заключается в параллельном добавлении минимальных рёбер для каждой компоненты связности. На каждом шаге для каждой компоненты выбирается исходящее ребро минимального веса, и все такие рёбра добавляются в дерево, объединяя компоненты. Алгоритм завершается, когда остаётся одна компонента. Его сложность составляет .
Применение в анализе данных и машинном обучении
Хотя задача о MST традиционно относится к области теории графов, она находит важные применения в анализе данных и машинном обучении:
- Кластеризация с одиночной связью (Single-linkage clustering): Это один из базовых иерархических алгоритмов кластеризации. Процесс построения дендрограммы методом одиночной связи эквивалентен построению MST графа, вершинами которого являются объекты, а весами рёбер — расстояния между ними . Отсечение рёбер MST с весами, превышающими некоторый порог, позволяет получить кластеры.
- Визуализация многомерных данных: MST может быть использовано для построения скелетной структуры данных, отражающей их топологию. Например, для отображения структуры многообразия или для выявления цепочек и паттернов в данных.
- Выделение признаков и снижение размерности: Алгоритмы, подобные Isomap, используют MST (или его вариант, Minimum Spanning Tree в метрическом пространстве) для оценки геодезических расстояний между точками на нелинейном многообразии, что помогает выполнить снижение размерности.
- Сжатие данных: MST может быть использовано для построения аппроксимирующих графов, которые компактно описывают структуру данных и могут служить для эффективного поиска ближайших соседей.
Вариации и обобщения
- Минимальное остовное дерево с ограничениями (Constrained MST): Задача поиска MST с дополнительными ограничениями, например, на степень вершины или на включение обязательных рёбер.
- Задача о минимальном остовном дереве Штейнера (Steiner Tree Problem): Обобщение, в котором не требуется включать все вершины графа, а только заданное подмножество (терминалы). Разрешается добавлять вспомогательные вершины (точки Штейнера) для уменьшения суммарного веса дерева .
- MST в динамических графах: Задача поддержания MST при добавлении или удалении рёбер в графе.
Список литературы
- Кормен Т., Лейзерсон Ч., Ривест Р., Штайн К. Алгоритмы: построение и анализ. — 3-е. — Вильямс, 2013.
- Седжвик Р. Фундаментальные алгоритмы на C++. Алгоритмы на графах. — ДиаСофт, 2002.
- Vorontsov, K.V., Inyakin, A.S., Strizhov, V.V., Chekhovich, Y.V. MachineLearning.ru – информационно-аналитический ресурс по проблемам машинного обучения и интеллектуального анализа данных // Труды конференции. — 2008.
- Клейнберг Д., Тардос Е. Алгоритмы: разработка и применение. — Питер, 2016.

