Я должен решить эту проблему:Минимальное покрывающее дерево со степенью ограничения
Учитывая взвешенный связный неориентированный граф G = (V, E) и вершину и в V. описать алгоритм, который находит MST для G так что степень u минимальна; выход T алгоритма MST и для каждого другого минимальное остовное дерево T 'является степенью u в T, меньшей или равной , равной степени u в T'.
Я думал об этом алгоритме (после некоторого Googling я нашел это решение аналогичной задачи here):
- Временно удалить вершину и.
- Для каждого из полученных соединенных компонентов C1, ..., Cm обнаруживают MST, например, Алгоритм Крускала или Прима.
- Повторно добавьте вершину u и для каждого Ci добавьте самый дешевый край между 1 и Ci.
EDIT:
я понял, что этот алгоритм может получить неправильный MST (см @AndyG комментария), так что я думал о другом:
- пусть к минимальному приращение между каждые два веса в G и добавьте 0 < x < k к каждому смежному краю u. (например, если все веса являются натуральными числами, так что k = 1, а x - дробь).
- найти MST с использованием алгоритма Крускала.
Это решение основано на том факте, что алгоритм Крускала итерации края упорядоченные по весу, так что разница между всеми МСЦ из G является каждое ребро был выбран из числа всех ребер одного и того же веса. Поэтому, если мы увеличим степень смежных ребер u, алгоритм выберет остальные ребра в той же степени, а не смежные по u, если это ребро не будет необходимо для MST, а степень u будет минимальной во всех MSTs G.
Я до сих пор не знаю, работает ли это и как доказать правильность этого алгоритма.
Буду признателен за любую помощь.
Я не уверен, что ваш алгоритм может обеспечить истинный MST. Рассмотрим граф с двумя связными компонентами, сохраняющими ребра u-v и j-k. Для аргумента предположим, что Kruskal's или Prim's выбрали бы крайний u-v, чтобы быть в MST. После удаления u вы по-прежнему остаетесь одним компонентом связи из-за края j-k. После повторного добавления u и добавления в самый дешевый ребро к u (u-v), вы остаетесь с остовным деревом с избыточным ребром j-k. – AndyG
Я думаю, что ваш x должен иметь больше ограничений, чем вы предлагаете, но тогда у меня есть доказательство правильности вашего второго алгоритма. См. Мой ответ. –