Как показали комментарий Рафаэля и комментарий j_random_hacker в ответ положительный. Фактически, любое MST достижимо любым алгоритмом MST с некоторыми небольшими исключениями.
Для графа две весовые функции на всех ребрах (до вещественных чисел) определяются как (слабо)G совместимые по сравнению (друг с другом), если мы можем распространить строгий слабый порядок на ребрах, индуцированный любой весовой функцией, на одну и ту же строгую общий заказ. То есть мы можем разработать согласованные правила разрыва связи с каждой весовой функцией, чтобы результат сравнения любых двух ребер одной весовой функцией и ее правил разрыва связи был таким же, как результат другой весовой функции и ее связи. нарушая правила.
Лемма 1 : Пусть и w 2 - две весовые функции. Следующие пять утверждений эквивалентны друг другу.w1w2
- и w 2w1w2 совместимы для сравнения.
- В любом наборе ребер есть общее самое легкое ребро от и от w 2w1w2 .
- В любом наборе ребер есть общее самое тяжелое ребро на и на w 2w1w2 .
- Существует весовая функция которая присваивает разные веса различным ребрам, так что w 3 сопоставимо с w 1 и w 2 по сравнению .w3w3w1w2
- для любого ребра и e 2 , так что e 1 легче, чем e 2, на одну весовую функцию, e 1 легче или легче, чем e 2 , на другую весовую функцию.e1e2e1e2e1e2
Доказательство леммы 1 оставлено в качестве простого упражнения.
Лемма 2 : Пусть две весовые функции и w 2 таковы, что если e 1 < w 1 e 2 , то e 1 < w 2 e 2w1w2e1<w1e2e1<w2e2 . Тогда они сопоставимы.
(Подсказка к) Доказательство. Один из подходов состоит в проверке условия 5 леммы 1. Другой подход заключается в проверке условия 2 леммы 1, показывая, что в любом наборе ребер самый легкий ребро по также является самым легким ребром по ш 1w2w1 ,
Алгоритм сравнения на графе определяется какG совместимый с сравнением, если для любых двух (слабо) сравниваемых весовых функций на всех ребрах, совместимых со сравнением, мы можем запустить алгоритм с одной весовой функцией таким образом, чтобы его можно было повторить без каких-либо изменений. с другой весовой функцией. В частности, эти два запуска алгоритма будут иметь одинаковые выходные данные.
Обратите внимание, что большинство, если не все алгоритмы MST, могут быть указаны в двух вариантах. Первый вариант предполагает, что разные ребра имеют разные веса, что используется, когда основной задачей является поиск одного MST (который на самом деле также является уникальным MST). Второй вариант позволяет различным краям группы G иметь одинаковые веса. Конечно, в этом ответе, где основной задачей является поиск всех MST, мы будем заботиться только об алгоритмах MST во втором варианте.GG
Совместимый со сравнением алгоритм MST может найти все MST.
Чтобы доказать вышеприведенное утверждение, нам просто нужно немного адаптировать раздел «Kruskal может найти каждое MST» при вычислении количества MST . Для любого MST от G с весовой функцией ш 1 , выбирает положительный вес , который легче , чем абсолютная разница между любой парой неравных весов ребер. Если мы вычтем этот вес из веса каждого ребра в m, не меняя веса других ребер, мы получим новую весовую функцию, скажем, w 2 . Если ребро e 1 легче, чем e 2 на w 1 , то e 1 должно быть легче, чемmGw1mw2e1e2w1e1сe2также на . По лемме 2 w 1 и w 2 совместимы по сравнению. Обратите внимание, что m является уникальным MST с w 2 . (Один из способов показать эту уникальность состоит в том, чтобы доказать, что всякий раз, когда вес одного ребра MST уменьшается, любое MST с новой весовой функцией должно содержать это ребро.) Таким образом, любой прогон алгоритма на w 2 найдет m . Поскольку алгоритм совместим для сравнения, мы можем запустить алгоритм таким же образом с w 1 или с w 2 . Поскольку этот прогон найдет уникальный MST, mw2w1w2mw2w2mw1w2m , он также найдет m с w 1 .w2mw1
Каждый алгоритм MST совместим для сравнения
Вышеупомянутое предложение звучит слишком широко. Ну, под каждым алгоритмом MST я подразумеваю любой общий алгоритм MST, основанный на сравнении, который я видел, исключая те явно патологические, как неправильные или имеющие ненужные шаги. Поскольку алгоритм MST, совместимый со сравнением, может найти все MST, каждый алгоритм MST может найти все MST. В частности, каждый из четырех классических алгоритмов MST , а именно алгоритмы Боровки, Прима, Крускала и обратного удаления, может найти все MST.
Вот еще три сравнительно-совместимых алгоритма MST.
- алгоритм удаления сильного края. Начните со всех краев. Повторно найдите цикл и удалите один из его самых тяжелых краев, пока цикл не останется.
- алгоритм add-non-heavy-edge. Начните с пустого набора. Итерация по всем ребрам. Каждое ребро добавляется и, если цикл сформирован, удаляет одно из самых тяжелых ребер.
- алгоритм замены на более светлый край. Начните с любого остовного дерева . Найти цикл в Т плюс ребро е не в Т . Если ребро т в этом цикле тяжелее , чем е , удалить т из Т и добавить е к Т . Повторяйте, пока мы не сможем уменьшить вес T больше.TTeTtetTeTT
Следующий алгоритм MST несовместим.
- смещенный по степени алгоритм Крускала, который является алгоритмом Крускала со следующей модификацией. Предположим, что когда мы собираемся удалить ребро с минимальным весом из как в описании алгоритма Крускала в Википедии , у нас есть несколько ребер с минимальным весом, которые нужно выбрать. Ребро, которое мы выбираем для удаления, будет ребром, сумма степеней двух его вершин является наибольшей среди всех вариантов. Этот алгоритм не может быть совместимым для сравнения, так как он не находит MST { a b , b c , c d } графа с вершинами a , b , c и ребром a bS{ab,bc,cd}a,b,cabвесом и ребрами b c , c d , d b веса 2 . Этот алгоритм считается патологическим из-за этой ненужной модификации.1bc,cd,db2
Обратите внимание, что все восемь упомянутых выше алгоритмов MST основаны на сравнении.
Как показать алгоритм совместим сравнения?
Я буду использовать алгоритм Крускала в качестве примера. Ниже приведено описание алгоритма Крускал (во втором аромате) на взвешенный неориентированный связной графе .G
- создайте граф который имеет те же вершины, что и G, но без ребер. Таким образом, F - это лес разделенных деревьев одной вершины.FGF
- S
- SF
- F
w1w2GSw1w2
Алгоритм является совместимым для сравнения, если в общих чертах он может быть описан в трех видах шагов.
- делать то, что не связано с весом.
- выберите ребро с минимальным весом в данном наборе ребер
- выберите ребро с максимальным весом в данном наборе ребер
Это достаточное условие охватывает алгоритмы Боровки, Прима, Крускала, обратное удаление, удаление тяжелого края и добавление не тяжелого края. Обратите внимание, что для соответствия этому достаточному условию нам, возможно, придется изменить некоторые описания алгоритма, не влияя на набор достижимых MST. Из-за того, что алгоритм Крускала, смещенный по степени, совместим со сравнением, позвольте мне подчеркнуть, что это достаточное условие описано в нечетких терминах.