Проблема резервного копирования NP-завершена?

9

Является ли следующее решение задачи NP-завершенным:

Пусть неориентированный граф и двумя целыми числами. Можно ли выбрать для каждой вершины ровно разных соседей, чтобы ни один узел не был выбран больше, чем раз.GbcGbc

Случай может быть решен для любого за полиномиальное время с использованием максимального соответствия.b=1c

Мотивация: каждый узел хочет разместить резервные копии у разных соседей, но у каждого узла есть только емкость для хранения резервных копий .bc

Фолькер Турау
источник

Ответы:

11

Я думаю, что следующий алгоритм полиномиального времени, основанный на максимальном потоке. Пусть будет входом.G(V,E),b,c

  • Построить направленный двудольный граф с и , являющийся левой и правой перегородки и будучи направленным ребра из до .H(L,R,F)LRF LR
  • Пусть . Есть вершин и вершин .|V|=nnLnR
  • Каждая вершина имеет «копию» в (скажем, ) и копию в (скажем, ).vVLvlRvr
  • Если добавить направленное ребро из в . Каждый такой край имеет емкость 1.(u,v)Eulvr
  • Добавить «источник» узел и добавить направленные ребра из каждой вершиной в . Каждое такое ребро имеет емкость .ssLb
  • Добавьте «тонущий» узел и добавьте направленные ребра из каждой вершины в к . Каждый такой край имеет емкость .tRtc
  • Найти максимальный поток от до .st

Данный граф имеет решение тогда и только тогда, когда рассчитанный выше максимальный поток насыщает каждое ребро от до , т.е. поток на каждом ребре от до равен .GsLsLb

Шива Кинтали
источник
7
На самом деле, это именно то решение, которое я выбрал как домашнее задание.
Джефф