Второе лучшее минимальное остовное дерево

Опубликовано: 22 Сентября, 2022

Предпосылки Граф, Остовное дерево, Непересекающееся множество (Объединение — Найти).

A minimum spanning tree (MST) T, for a given graph G, spans over all vertices of a given graph and has minimum weight sum of all edges, out of all the possible spanning trees. 

Second best MST, T’, is a spanning tree with the second minimum weight sum of all edges, out of all spanning trees of graph G.

T и T' отличаются только одной заменой ребер. Таким образом, мы должны найти ребро e new , которого нет в T, и заменить его ребром в T (скажем, e old ), таким образом, что T' = T union {e new } – {e old } является остовным деревом, а разность весов of (e new – e old ) минимально (e new , e old – ребра в графе G).

Используя алгоритм Крускала -

  • Используйте алгоритм Крускала, чтобы найти MST T графа G. Удалите из него одно ребро и замените его другим, чтобы получить T'.
  • Отсортируйте ребра за время O (ElogE) (E-количество ребер) и найдите MST, используя алгоритм Крускала, за время O (E) (количество ребер в MST = V-1, где V = количество вершин в графе ГРАММ).
  • Для каждого ребра в MST временно исключим его из списка ребер (чтобы мы не могли его выбрать).
  • Затем попытайтесь найти MST в O(E), используя оставшиеся ребра. (не нужно снова сортировать)
  • Повторите вышеописанное для всех ребер в MST и выберите лучшее. (со 2-й минимальной суммой веса). Таким образом, мы получили T' – второй лучший MST.
  • Общая временная сложность — O (ElogE + E + VE) = O (VE)

Ниже приведена реализация вышеуказанного подхода:

Временная сложность — O(VE), где V — количество вершин во входном графе, E — количество ребер во входном графе.