MST — это дерево, имеющее минимальный суммарный вес всех ребер графа. Таким образом, 2-й минимальный mst будет иметь 2-й минимальный суммарный вес всех ребер в графе.
пусть T -> BEST_MST (отсортируйте ребра в графе, затем найдите MST с помощью алгоритма Крускала)
T '-› 2-й лучший MST
допустим, у T есть 7 ребер, теперь, чтобы найти T ', мы будем одно за другим удалять одно из этих 7 ребер и найдем замену для этого ребра (стоимость этого ребра определенно будет больше, чем ребро, которое мы только что удалили из T ).
допустим исходный граф имеет 15 ребер
наш лучший MST ( T ) имеет 7 ребер
и 2-й лучший MST ( T ' ) также будет иметь только 7 ребер.
Как найти Т '
в T 7 ребер, теперь для всех этих 7 ребер удаляем их одно за другим и находим замену этим ребрам.
скажем, ребра в MST ( T ) --› { a,b,c,d,e,f,g }
скажем, наш ответ будет 2nd_BEST_MST, и изначально он имеет бесконечное значение (я знаю, что это звучит не очень хорошо, давайте пока просто предположим, что это так).
для всех ребер в BEST_MST:
current_edge = я нахожу замену для этого ребра, замена для этого ребра определенно будет иметь вес больше, чем i-е ребро (одно из 7 ребер) как мы собираемся найти замену для этого ребра, используя алгоритм Крускула (мы находим MST снова, поэтому мы будем использовать только алгоритм kruskal, но нам не нужно снова сортировать ребра, потому что мы сделали это, когда находили BEST_MST (T). вернуть 2nd_best_MST АЛГОРИТМ
скажем, исходный граф имеет 10 ребер, найдите BEST_MST (используя алгоритм kruskal) и предположим, что BEST_MST имеет только 6 ребер, но осталось 4 ребра, которых нет в BEST_MST (потому что их значение веса велико, и одно из этих ребер даст нам наш 2nd_Best_MST для каждого ребра «X», отсутствующего в BEST_MST (т.е. осталось 4 ребра), добавить это ребро в BEST_MST, которое создаст цикл, найти ребро «K» с максимальным весом в цикле (кроме new_added_edge «X» ) временно удалите ребро «K», которое сформирует новое связующее дерево, вычислите разницу в весе и сопоставьте weight_difference с ребром «X». Повторите шаг 4 для всех этих четырех ребер и верните связующее дерево с наименьшей разницей в весе в ЛУЧШИЙ_MST.
person
56teekri
schedule
05.04.2021