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


14

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

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

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

Ответы:


5

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

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

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

  1. Между есть ребро , где a i ∈ A и b j ∈ B , и C ( a i , b j ) = 1 , c ( a i , b j ) = c i , j .ai,bjai∈Abj∈BC(ai,bj)=1c(ai,bj)=ci,j
  2. Между и a i ∈ A существует ребро , и C ( s , a i ) = 1 , c ( s , a i ) = 0 .sai∈AC(s,ai)=1c(s,ai)=0
  3. Между и t существует ребро , и C ( b j , t ) = u j , c ( b j , t ) = 0 .bj∈BtC(bj,t)=ujc(bj,t)=0

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


4

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

Мы знаем, что в противном случае не все котята могут быть назначены лицам.|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/2∑i∈Sxi=∑i∉Sxi=K, (Обратите внимание, что требование выбирать ровно половину элементов не является обычной формой, но эта форма все еще NP-трудна.) Пусть каждый котенок является элементом набора; пусть будет два человека; пусть весами будут и c i 2 = - x i ; пусть u 1 = u 2 = q / 2 . Затем этот экземпляр Kitten Утверждение имеет максимум в 0 тогда и только тогда экземпляр раздела имеет решение.ci1=xici2=−xiu1=u2=q/20

CCq

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

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.