Komplexität des Problems der Kitten-Adoption


14

Dies geschah, als ich versuchte, diese Frage zur Verkabelungslängenminimierung zu beantworten . Ich wollte dies das Problem der "polygamen Ehe" nennen, aber das Internet, also Kätzchen. Yay!

Angenommen , wir haben Kätzchen , die von angenommen werden müssen Personen, . Für jedes Kätzchen, und jede Person gibt es einen Preis . Wir möchten die Gesamtkosten für die Adoption aller Kätzchen minimieren. Es gibt auch eine Reihe von Einschränkungen: Jede Person kann nicht mehr als Kätzchen adoptieren .MNM>Nijcijjuj

Ohne die Einschränkungen ist das Problem einfach; jedes Kätzchen, das gehe, gehört zu der Person für die minimal ist. Mit den Einschränkungen gibt es einen effizienten Algorithmus für dieses Problem oder ist es NP-schwer?ijcij

Antworten:


5

Dies ist das Min-Cost-Max-Flow-Problem.

Man betrachte einen Graphen , wobei die Menge der Kätzchen ist, die Menge der Menschen.A BG=(AB{s,t},E)AB

Sei die Kapazität der Kanten und die Kosten einer Kante. Wir sorgen dafür c : E R +C:ER+c:ER+

  1. Es gibt eine Kante zwischen , wobei und b_j \ in B und C (a_i, b_j) = 1 , c (a_i, b_j) = c_ {i, j} .a iA b jB C ( a i , b j ) = 1 c ( a i , b j ) = c i , jai,bjaiAbjBC(ai,bj)=1c(ai,bj)=ci,j
  2. Es gibt eine Kante zwischen s und aiA und C(s,ai)=1 , c(s,ai)=0 .
  3. Es gibt eine Kante zwischen bjB und t und C(bj,t)=uj , c(bj,t)=0 .

Wenn der maximale Durchfluss , wissen wir, dass es eine Lösung gibt. Sie können eine Min-Cost-Lösung aus dem Min-Cost-Max-Flow erstellen.M


4

Dies ist das perfekte Anpassungsproblem mit minimalem Gewicht, das polynomiell ist. Man betrachte den vollständigen zweigliedrigen Graphen , in dem einen Knoten für jedes Kätzchen . besteht aus u j Kopien des Knotens r j für jede Person j und Kanten e i jE zwischen l i und jede Kopie von r j mit Gewichten c i j .(L,R,E)LliiRujrjjeijElirjcij

Wir wissen , dass , ansonsten können nicht alle Kätzchen Personen zugeordnet werden.|L||R|

Da die perfekte Übereinstimmung mit allen Knoten übereinstimmen muss, müssen wir Dummy-Knoten zu hinzufügen (um | L | = | R | zu erhalten ) und sie mit Kanten mit Nullgewicht mit allen Knoten in R verbinden .L|L|=|R|R


2

Möglicherweise ist die Beobachtung von Interesse, dass man Partition auf eine Variante dieses Problems reduzieren kann. Gegeben ist eine Instanz von Partition mit Elementen mit q , aus der wir mit | eine Teilmenge S { 1 , , q } auswählen müssen S | = q / 2, so dass i S x i = i S x i = K{x1,,xq}qS{1,,q}|S|=q/2iSxi=iSxi=K. (Beachten Sie, dass die Anforderung, genau die Hälfte der Elemente zu wählen, nicht die übliche Form ist, aber diese Form ist immer noch NP-hart.) Lassen Sie jedes Kätzchen ein Element der Menge sein; lass es zwei Leute geben; seien die Gewichte und c i 2 = - x i ; sei u 1 = u 2 = q / 2 . Dann hat diese Instanz von Kitten Adoption ein Maximum von 0, wenn die Instanz von Partition eine Lösung hat.ci1=xici2=xiu1=u2=q/20

Wenn die Kosten in Kitten Adoption immer positiv sein sollen, kann man einfach ein ausreichend großes konstantes zu allen Gewichten hinzufügen, um sicherzustellen, dass sie das richtige Vorzeichen sind, wenn der erforderliche Schwellenwert C q anstelle von 0 ist.CCq

Ich bin mir nicht sicher, was dies über die Komplexität des ursprünglichen Problems aussagt, aber angesichts des oft gesehenen Konzepts "Minimieren / Maximieren ist NP-hart, das andere ist in P" für kombinatorische Optimierungsprobleme würde ich nach einem suchen effizienter Algorithmus.

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.