Критерий Тарьяна минимальности остовного дерева
НЕТ ВОЙНЕ |
24 февраля 2022 года российское руководство во главе с Владимиром Путиным развязало агрессивную войну против Украины. В глазах всего мира это военное преступление совершено от лица всей страны, всех россиян. Будучи гражданами Российской Федерации, мы против своей воли оказались ответственными за нарушение международного права, военное вторжение и массовую гибель людей. Чудовищность совершенного преступления не оставляет возможности промолчать или ограничиться пассивным несогласием. Мы убеждены в абсолютной ценности человеческой жизни, в незыблемости прав и свобод личности. Режим Путина — угроза этим ценностям. Наша задача — обьединить все силы для сопротивления ей. Эту войну начали не россияне, а обезумевший диктатор. И наш гражданский долг — сделать всё, чтобы её остановить. Антивоенный комитет России |
Распространяйте правду о текущих событиях, оберегайте от пропаганды своих друзей и близких. Изменение общественного восприятия войны - ключ к её завершению. |
meduza.io, Популярная политика, Новая газета, zona.media, Майкл Наки. |
Критерий Тарьяна
Теорема (критерий Тарьяна минимальности остовного дерева): |
Остовное дерево минимально тогда и только тогда, когда для любого ребра, не принадлежащего остову, цикл, образуемый этим ребром при добавлении к остову, не содержит рёбер тяжелее этого ребра. |
Доказательство: |
Докажем, что остовное дерево, состоящее из ребер наименьшего веса на циклах — минимально. Предположим противное: пусть остовное дерево состоит из всех минимальных ребер на циклах, тогда оно не минимально.Если не минимально, то его можно улучшить, значит есть ребро, которое имеет наименьший вес на цикле и не принадлежит дереву. Следовательно, дерево построено не на минимальных ребрах в циклах — противоречие.
Построим минимальное остовное дерево , с помощью общего алгоритма построения MST. Докажем, что оно имеет минимальные ребра на каждом цикле.function Generic MST(леммы о безопасном ребре return): while не является остовом do найти безопасное ребро для // нужное ребро находится с помощью Заметим, что дерево состоит полностью из безопасных ребер, так как на каждом шаге добавлялось безопасное ребро.Теперь, рассмотрим какой-нибудь разрез Следовательно, любое ребро не принадлежащее уже построенного дерева и пересекающее ребро , причем , а . Найдем путь в изначальном графе , соединяющий вершины и . Так как они находятся в разных компонентах связности, то какое-нибудь ребро тоже будет пересекать разрез . Очевидно, что , так как первое — безопасное ребро. не легче ребер принадлежащих на этом цикле. |
Уникальность остовного дерева
Задача: |
Поиск минимального остовного дерева и проверка его на уникальность. |
Алгоритм решения
Построим минимальное остовное дерево используя алгоритм Краскала. Рассмотрим рёбра вне остова в любом порядке. Очередное обозначим . Рассмотрим максимальное ребро на пути и внутри остова:
- Если его вес совпадает с весом ребра, то при добавлении ребра в остов, мы получим остов с циклом на котором несколько рёбер имеют одинаковый вес, значит мы можем удалить любое из них и остовное дерево будет всё ещё минимальным, это нарушает уникальность дерева. На этом алгоритм завершается и по критерию Тарьяна мы можем сказать, что в графе можно построить несколько остовных деревьев.
- Если его вес больше ребра, то заменив ребро мы получим остов с большим весом, этот случай не влияет на уникальность.
- Его вес не может быть меньше ребра из остова, иначе мы смогли бы построить минимальное остовное дерево с меньшим весом.
После рассмотрения всех рёбер, если мы не нашли ребро вне остова, при добавлении которого создаётся цикл с максимальным ребром таким же как и на пути heavy-light декомпозиции.
и , то в графе нету другого остовного дерева и наше дерево уникально. Искать максимальное ребро на пути и в дереве мы можем при помощиАсимптотика
Построение минимального остовного дерева работает за
, нахождение максимального ребра за , максимальное количество рёбер вне остова не больше , каждое ребро проверяется за . Построение heavy-light декомпозиции работает за , остов мы построим один раз, heavy-light декомпозицию тоже один раз, каждое ребро мы не больше одного раза проверим на замену, сложность алгоритма .См.также
Источники информации
- Кормен Т., Лейзерсон Ч., Ривест Р., Штайн К. — Алгоритмы. Построение и анализ.