N . Для каждого котенка, iii..."/>

Сложность проблемы усыновления котенка

14

Это произошло, когда я пытался ответить на этот вопрос о минимизации длины проводки . Я собирался назвать это проблемой "полигамного брака", но интернет, так что котята. Ура!

Предположим , что мы имеем M котят , которые должны быть приняты N человек, M>N . Для каждого котенка, i и каждого человека j есть стоимость cij . Мы хотели бы минимизировать общую стоимость получения всех усыновленных котят. Существует также ряд ограничений: каждый человек j может усыновить не более uj котят.

Без ограничений проблема проста; каждый котенок i иду с человеком j , для которого cij минимально. С учетом ограничений есть эффективный алгоритм для этой проблемы или NP-трудно?

Блуждающая логика
источник

Ответы:

5

Это проблема минимального расхода с максимальным расходом.

Рассмотрим граф , где A - множество котят, B - множество людей.G=(AB{s,t},E)AB

Пусть - емкость ребер, а c : E R + - стоимость ребра. Мы уверены, чтоC:ER+c:ER+

  1. Между есть ребро , где a iA и b jB , и C ( a i , b j ) = 1 , c ( a i , b j ) = c i , j .ai,bjaiAbjBC(ai,bj)=1c(ai,bj)=ci,j
  2. Между и a iA существует ребро , и C ( s , a i ) = 1 , c ( s , a i ) = 0 .saiAC(s,ai)=1c(s,ai)=0
  3. Между и t существует ребро , и C ( b j , t ) = u j , c ( b j , t ) = 0 .bjBtC(bj,t)=ujc(bj,t)=0

Если максимальный поток равен , то мы знаем, что существует решение. Вы можете создать решение с минимальными затратами из максимального потока с минимальными затратами.M

Чао Сюй
источник
4

Это минимальная масса идеального соответствия, которая является полиномиальной. Рассмотрим полный двудольный граф , в котором L содержит узел l i для каждого котенка i , R состоит из u j копий узла r j для каждого человека j и ребер e i jE между l i и каждая копия r j с весами c i j .(L,R,E)LliiRujrjjeijElirjcij

Мы знаем, что в противном случае не все котята могут быть назначены лицам.|L||R|

Поскольку совершенное паросочетание должно соответствовать всем узлам, нам нужно добавить фиктивные узлы (для получения | L | = | R | ) и соединить их с нулевым весом ребер для всех узлов в R .L|L|=|R|R

Пархам
источник
2

Возможно, интерес представляет наблюдение, что можно свести разбиение к варианту этой проблемы. Дан экземпляр раздела с элементами с q, даже из которого мы должны выбрать подмножество S { 1 , , q } с | S | = Д / 2 , такие , что Σ я S х я = Σ я S х я = К{x1,,xq}qS{1,,q}|S|=q/2iSxi=iSxi=K, (Обратите внимание, что требование выбирать ровно половину элементов не является обычной формой, но эта форма все еще NP-трудна.) Пусть каждый котенок является элементом набора; пусть будет два человека; пусть весами будут и c i 2 = - x i ; пусть u 1 = u 2 = q / 2 . Затем этот экземпляр Kitten Утверждение имеет максимум в 0 тогда и только тогда экземпляр раздела имеет решение.ci1=xici2=xiu1=u2=q/20

CCq

Я не уверен, что это говорит о сложности исходной задачи, но, учитывая часто встречающееся «одно из минимизации / максимизации является NP-сложным, а другое находится в P» для задач комбинаторной оптимизации, я бы начал искать эффективный алгоритм.

Андраш Саламон
источник