2013-05-28 3 views
0

Предположим, что нам дано минимальное остовное дерево T данного графа G (с n вершинами и m ребрами) и новое ребро e = (u, v) веса w, которое мы добавим к G.Добавить новое к графу и найти новое связующее дерево

I) Проверьте, остается ли T MST или нет. II) Если нет, дайте эффективный алгоритм для нахождения минимального остовного дерева графа G + e.

+0

Что ваш вопрос? Что вы пробовали? –

+1

@WernerHenze Несмотря на то, что у вопроса, очевидно, нет попытки попробовать что-либо и почти наверняка домашнее задание, оно * довольно ясно, что вопрос - не до вопроса вопросительного знака. –

+0

@WernerHenze, я уже видел этот вопрос в stackoverflow и получил те же ответы. Я сомневаюсь, что другие грани в MST остаются в силе, но Тимоти Шилдс объяснил ниже. Извините за неполное объяснение. –

ответ

5

Ваш текущий MST T содержит n-1 краев. Дополнение к графике нового ребра e = (u,v) с весом w создает точно один цикл C в графе T + e (T с краем e добавлено). Если новый вес кромки (w) меньше, чем вес самого высокого веса в этом цикле C, тогда вы можете создать меньший вес MST, заменив его более высоким весом e. В противном случае ваш текущий MST остается оптимальным.

Алгоритм в основном это:

  1. Найти уникальный путь P от u к v в T
  2. Найти край e* в P, который имеет максимальный вес w*
  3. ли w < w*?
    • Если да, то T' = T - e* + e является MST для G + e,
      с weight(T') = weight(T) - w* + w
    • Если нет, то T' = T является MST из G + e
+2

Это правда, но откуда вы знаете, что остальные грани в MST остаются в силе? – templatetypedef

+0

@templatetypedef Доказательство правильности или сложности алгоритма выходит за рамки стека переполнения. –

Смежные вопросы