Dieses Problem ist NP-schwer . Um dies zu zeigen, werde ich dieses (Optimierungs-) Problem zunächst in ein Entscheidungsproblem umformulieren. Dann formuliere ich dieses Problem in ein äquivalentes um, aus dem es ziemlich einfach ist, eine Reduktion aus dem Farbproblem zu erhalten, das für jedes k ≥ 3 NP-schwer ist .kk≥3
Eine kurze Formulierung des Problems lautet wie folgt:
Finden Sie bei Personen und einem Diagramm G , das ihre "Geschenk" -Beziehungen kodiert, die Mindestanzahl der erforderlichen Reisen, damit alle Geschenke gekauft werden können, ohne Überraschungen zu ruinieren.nG
Dies ist jedoch ein Optimierungsproblem. Die Klasse NP wird normalerweise für Entscheidungsprobleme definiert (wobei die Antwort auf jede Instanz entweder JA oder NEIN lautet). Eine Entscheidungsvariante davon ist:
Ist es bei Personen und einem Diagramm G , das ihre "Geschenk" -Relationen und eine ganze Zahl t codiert , höchstens t Reisen ausreichend, um alle Geschenke zu kaufen, ohne irgendwelche Überraschungen zu ruinieren?nGtt
Ich definiere das Problem, eine richtig gerichtete Mehrfachfärbungt eines Graphen als eine Mehrfarbenfunktion c : V → P ( C ), die richtig ist , wobei C eine Menge von t 'Farben' ist ( dh | C | = t ) und P ( C ) ist die Potenzmenge von C (dh die Menge aller Teilmengen von C.G=(V,E) c:V→P(C)Ct|C|=tP(C)CC(u→v)∈Ec(u)⊈c(v)
Ich behaupte, dass das Problem der Einkaufstour dem Problem entspricht, die Existenz einer gerichteten Mehrfachfärbungt desselben Graphen .G
Beweis : Wenn wir eine richtige gerichtet haben -multicoloring für , wo wir die Farben , so dass umbenennen dann betrachten die Folge von stellt , wo ein Scheitelpunkt geht in Reise genau dann einkaufen, wenn . Dann haben wir für jede Kante , dass es eine Reise so dass und , da . Daher sind die Fahrtenc G C = { 1 , … , t } t T 1 , … , T t v T i i ∈ c ( v ) ( u → v ) ∈ E T i u ∈ T i v ∉ T i c ( u ) ⊈ c ( v ) T itcGC={1,…,t}tT1,…,TtvTii∈c(v)(u→v)∈ETiu∈Tiv∉Tic(u)⊈c(v)Ti sind ausreichend, um alle Geschenke zu kaufen.
Wenn wir eine Folge von , konstruieren Sie die Mehrfarbenfunktion auf der so, dass . Dann wird für jede Kante existiert eine Reise so dass und (da ein Geschenk kaufen auf einige Fahrt), was bedeutet , dass und , also . c C = { 1 , … , t } c ( u ) = { i ∈ N | u ∈ T i } ( u → v ) ∈ E T i u ∈ T i v ∉ T i u v i ∈ c ( u ) i ∉ c (T1,…,TtcC={1,…,t}c(u)={i∈N|u∈Ti}(u→v)∈ETiu∈Tiv∉Tiuvi∈c(u)c ( u ) ⊈ c ( v ) ◻i∉c(v)c(u)⊈c(v)□
Das Finden einer richtigen gerichteten Mehrfachfärbung ist im Grunde eine seltsame Neuformulierung eines bestimmten Falles der Färbung. Daher kann ich eine Polynomzeitverkürzung aus dem -Farbproblem zeigen: Wenn ein ungerichteter Graph , transformiere zuerst diesen Graphen in den gerichteter Graph , so dass und genau dann, wenn oder ( Mit anderen Worten, wir ändern ungerichtete Kanten in zwei gerichtete Kanten.ktk(t⌊t/2⌋)G′=(V′,E′)G=(V,E)V=V′(u→v)∈E(u,v)∈E′(v,u)∈E′
Betrachten Sie eine größte Menge , so dass es , kein gibt , so dass . Die Menge aller Teilmengen von der Größe , wobeiist so ein Satz. Daher ist die maximale Größe einer solchen Teilmenge .K⊂P(C)a,b∈Ka≠ba⊂bC⌊t/2⌋t=|C|(t⌊t/2⌋)
Wenn für eine richtige Mehrfachfärbung existiert , gibt es eine richtige Färbung, die nicht mehr als ungleiche Elemente aus (*) verwendet. Dies ist also eine gültige -Farbe für .tG(t⌊t/2⌋)P(C) (t⌊t/2⌋)G′
Wenn für eine richtige -Farbe existiert , dann existiert eine Menge , , so dass und es gibt kein , , so dass . Also, hat ein richtigen gerichtet -multicoloring.(t⌊t/2⌋)G′K⊂P(C)|C|=t|K|≥(t⌊t/2⌋)a,b∈Ka≠ba⊂bGt
Daher ist dies eine gültige Polynomzeitverkürzung von -Farbe auf das gegenwärtige Einkaufsproblem mit Reisen, was bedeutet, dass das gegenwärtige Einkaufsproblem NP-schwer ist. Beachten Sie, dass das derzeitige Einkaufsproblem NP-vollständig ist, da wir leicht überprüfen können, ob eine bestimmte Liste von höchstens Reisen es uns ermöglicht, alle Geschenke zu kaufen, ohne Überraschungen zu ruinieren.(t⌊t/2⌋)tt
(*): Wenn einige Mehrfachfarben mehr Farbsätze verwenden als eine maximale Mehrfachfärbung ohne Untermenge , können wir so umbenennen, dass Es ist eine Obermenge von . bleibt korrekt, da keines der Elemente aus neben einem anderen Element als ein Problem darstellt und keines der Farbsätze in nebeneinander liegt das Original . Ohne Verlust der Allgemeinheit können wir also annehmen .CC∗CC∗CC∗C∗CC∗⊂C
Beachten Sie dann, dass das Umbenennen von in eine beliebige Teilmenge von die Kanten zwischen den Knoten von Farbsätzen nicht ruiniert , da keine Elemente enthält, die eine Teilmenge eines anderen sind. Sie müssen nur noch sicherstellen, dass die Kanten zwischen und die Farbgebung nicht "ruinieren".C∖C∗C∗C∖C∗C∗C∖C∗C∗
Betrachten Sie die folgende Beziehung für die Farbsätze in : Zwei Farbsätze und sind genau dann verbunden, wenn ein Paar von Eckpunkten so dass hat farb gesetzt und Farbsatz und . Diese Beziehung kann durch den ungerichteten Graphen .RC∪C∗ABa,baAbB(a,b)∈EG=(C∪C∗,R)
Erstens können wir 'reduzieren', indem wir jedes Paar, das in keine Kante hat, durch einen einzelnen Farbsatz ersetzen . Die Färbung bleibt korrekt, da das Ändern von zwei Farbsätzen, die überhaupt nicht benachbart sind, in dieselbe Farbe keine ungültigen Kanten einführt. Infolgedessen haben wir auf ein vollständiges Diagramm reduziert .C∖C∗GG
Dies bedeutet, dass wenn weniger oder gleich viele Farbsätze hat wieist die gewünschte Färbung vorhanden. Andernfalls gibt es überhaupt keine richtige Mehrfachfärbung, da eine größte 'Nicht-Teilmenge' ist, sodass wir diese Clique nicht färben können. Daher besteht notwendigerweise die erforderliche Mehrfachfärbung.G|C∗|C∗
Da der vollständige Graph auf Knoten genau dann farbfähig ist, wenn wir mindestens Farben haben, haben wir die Möglichkeit , dass Personen in Reisen genau dann Geschenke für einander einkaufen können, wenn . Dies bedeutet insbesondere, dass bei nur Fahrten ausreichen. Wenn weniger Geschenke zu kaufen sind, werden keine weiteren Reisen benötigt, sodass dies eine allgemeine Obergrenze für jede Lösung ist.nKnnnt(t⌊t/2⌋)≥nn≤1287016
Unten ist meine frühere 'Antwort', die einen heuristischen Algorithmus liefert, der nicht garantiert, dass das Optimum erreicht wird, sondern in Polynomzeit berechnet werden kann.
Eine andere Möglichkeit, dieses Problem zu formulieren, besteht darin, eine Abdeckung von zweigeteilten Graphen auf den Partitionen für einen gerichteten Graphen mit Knoten zu finden , so dass die Anzahl der Partitionen (dh Auslösungen), hier , minimal ist.C={(S1,T1),…,(Sm,Tm)}(Si,Ti)Gnm
Erstens einige Beobachtungen, die teilweise aus anderen Antworten stammen:
- Die gierige Strategie, bei der wir ein mit einem zweigeteilten Graphen auswählen bei dem die Anzahl der mit gemeinsamen Kanten maximal ist, führt nicht zu einer optimalen Lösung (Ein starkes Gegenbeispiel ist der vollständige Graph mit Knoten). wo diese Strategie fehlschlägt, egal welcher maximale zweigliedrige Graph gewählt wird.).(Si,Ti)G6
- Die gierige Strategie ist für beliebige azyklische Graphen nicht optimal. Betrachten Sie den folgenden Graphen:
Sowohl für als auch für der zweigeteilte Graph Kanten, aber nur ist optimal.Si={3,5,6}Si={1,3,6}4{3,5,6}
- Jeder (optimale) Greedy-Algorithmus kann die Größe der ausgewählten Partition nicht der Anzahl der von der Partition "entfernten" Zyklen ( beliebiger Größe) vorziehen . Um dies zu sehen, betrachten Sie das Diagramm mit Knoten, wobei es einen Zyklus von Knoten gibt und jeder Knoten im Zyklus zusätzliche ausgehende Kanten zu zusätzlichen Knoten , die keine ausgehenden Kanten haben (siehe Abbildung unten für ein Beispiel mit ). Eine gierige Wahl, die es vorzieht, die Anzahl der Kanten über Zyklen der Länge zu maximieren, sendet alle Eckpunkte im Zyklus auf der ersten Fahrt. Dies ist nicht optimal, da dadurch keine Kanten des Zyklus entfernt werden und einfach ignoriertn+2n22A,Bn=4nA,BWenn Sie alle Kanten aus dem Zyklus entfernen, werden auch alle Kanten in Richtung . Daher ist jede gierige Wahl, die die Größe der Partition dem Entfernen eines Zyklus vorzieht, nicht optimal.A,B
Basierend auf diesen Beobachtungen schlage ich die folgende gierige Wahl vor: Wählen Sie so, dass die Anzahl der Zyklen, die diese Reise von 'entfernt', maximal ist, und wählen Sie im Fall von Bindungen eine Partition mit maximaler Überlappung mit unter sie (dh schauen Sie sich die Kanten nicht auf Zyklen).(Si,Ti)GG
Da sich dieser Algorithmus nicht von der "grundlegenden" Greedy-Strategie für azyklische Graphen unterscheidet (Entfernen einer maximalen Anzahl von Kanten bei jeder Fahrt), ist dieser Greedy-Algorithmus daher nicht optimal. Die Intuition, Zyklen zu entfernen, ist jedoch immer noch sinnvoll und stellt eine Verbesserung gegenüber der grundlegenden Strategie der Gier dar, sodass es sich um eine anständige Heuristik handeln könnte.