Критерий Тарьяна минимальности остовного дерева
Теорема (критерий Тарьяна минимальности остовного дерева): | |||||||
Остовное дерево минимально тогда и только тогда, когда любое ребро не из дерева является максимальным на цикле, который образуется при его добавлении в дерево. | |||||||
Доказательство: | |||||||
Легко заметить, что остовное дерево, не удовлетворяющее условию, не минимально: если существует ребро, не максимальное на образовавшемся цикле, то мы можем уменьшить вес дерева, добавив это ребро и удалив максимальное. Теперь докажем, что дерево , удовлетворяющее условию, минимально:
Для доказательства минимальности алгоритм Краскала, который представляет собой применение леммы о безопасном ребре некоторое число раз. На каждом шаге к строящемуся остову будет добавляться ребро минимального веса, пересекающего некоторый разрез, а этот вес, как было показано в утверждении выше, равен весу ребра из , пересекающего этот разрез. Поэтому вес получившегося минимального остова будет равен весу , что и требовалось. построим минимальное остовное дерево графа используя
Построим минимальное остовное дерево(MST) используя алгоритм Краскала. Рассмотрим рёбра вне остова, посмотрим на максимальное ребро на пути внутри остова:
Искать максимальное ребро на пути Метод двоичного подъема. Построим дополнительный массив в дереве мы можем при помощи алгоритма минимального общего предка(LCA), используя , при помощи массива двоичных подъёмов. В храним номер ребра с максимальным весом на пути , где - номер вершины, - степень подъёма(как в LCA). Когда нам нужно получить максимальное ребро на пути , ищем максимальное ребро на пути , и выбираем максимальное из них. | |||||||
Асимптотика
Построение минимального остовного дерева работает за
, нахождение максимального ребра за , максимальное количество рёбер вне остова не больше , каждое ребро проверяется за . Построение LCA и дополнительного массива работает за , остов мы построим один раз, LCA тоже один раз, каждое ребро мы не больше одного раза проверим на замену, сложность алгоритма .См.также
Литература
- Кормен Т., Лейзерсон Ч., Ривест Р., Штайн К. — Алгоритмы. Построение и анализ.