Я пытаюсь выполнить ch23 в CLRS на MST, вот вопрос:
Учитывая граф G и минимальное остовное дерево T, предположим, что мы уменьшим вес одного из ребер, не находящихся вT.Дайте алгоритм для поиска минимального остовного дерева в модифицированном графе.
Решение, которое я нашел, состояло в том, чтобы добавить это новое измененное ребро в T
, тогда в T будет создан ровно один простой цикл.этот цикл и удалите край максимального веса в этом цикле, вуаля , найден новый обновленный MST!
У меня вопрос, как мне только пройти узлына этом простом цикле?Поскольку обходы DFS / BFS могут выйти из цикла, если я, скажем, начну обход в T
с одной конечной точки этого вновь добавленного ребра в T
.
Одним из решений, которое я мог придумать, былонайдите biconnected components
в T
после добавления нового ребра.Будет найден только один BCC
, который является новым сформированным простым циклом, тогда я могу добавить в мой код DFS специальное условие, говорящее только о прохождении ребер / узлов в этом BCC, и как только задний край найден,прекратить прохождение.
Редактировать: граф G подключен и ненаправлен между прочим