Gibt es einen effizienten Algorithmus für dieses Vertex-Cycle-Cover-Problem?

23

Ich habe versucht, einen Algorithmus zu finden, um eine maximale Scheitelpunktzyklusabdeckung eines gerichteten Graphen - dh eine Menge von disjunkten Zyklen, die alle Scheitelpunkte in , mit so vielen Zyklen wie möglich (wir berücksichtigen dies nicht) einzelne Eckpunkte zyklisch hier). Ich weiß, dass das Problem, eine minimale Vertex-Zyklus-Abdeckung sowie eine Vertex-Zyklus-Abdeckung mit genau Zyklen zu finden, NP-vollständig ist. Aber was ist mit dem Maximalfall?G kGGk

Obwohl ich eine Antwort auf diese Frage im Allgemeinen interessant finde, sind die Graphen, für die ich sie verwenden möchte, durch ihre Konstruktion tatsächlich ziemlich eingeschränkt. Selbst wenn das Problem NP-vollständig ist, gibt es möglicherweise eine polynomielle Lösung für diese speziellen Fälle.

Wir haben eine Liste von Ganzzahlen , Elemente und wir werden , Elemente , um nach dem Sortieren auf zu verweisen . Als Beispiel:l i S s i LLliSsiL

L=(1,3,2,5,0,7,4,2,6,0,8,1)S=(0,0,1,1,2,2,3,4,5,6,7,8)

Die Eckpunkte des Graphen werden mit Paaren identifiziert so dass und . Der Graph hat genau dann eine gerichtete Kante wenn . (Ein Zyklus in diesem Diagramm entspricht einer Reihe von Werten, die zyklisch so permutiert werden können, dass sie in ihrer sortierten Position enden.)l i = n s in ( n , i ) ( m , j ) s j = n(n,i)li=nsin(n,i)(m,j)sj=n

Das obige Beispiel würde das folgende Diagramm ergeben (unter Verwendung von 1-basierten Indizes):

Bildbeschreibung hier eingeben

Eine Sache, die nicht funktioniert, ist der gierige Ansatz, den kleinsten Zyklus wiederholt zu entfernen (wie dieses Beispiel zeigt).

Beachten Sie, dass dieses Problem (wenn ich keine Fehler gemacht habe) der Frage entspricht, wie viele Tauschvorgänge Sie zum Sortieren einer bestimmten Liste benötigen . (Welches ist der Grund, warum dieses Problem in erster Linie untersucht wurde.)

|C|1|C|1.) Das heißt, das Gewicht hängt von der Größe des Zyklus ab und nicht von den jeweiligen Kanten, die er enthält. Aber vielleicht gibt dies jemandem eine andere Idee, wie das Problem verringert werden kann.

Es scheint auch, dass die Begrenzung der Größe der Zyklen das Problem APX-schwer für allgemeine Graphen macht. Dies bedeutet nicht zwangsläufig, dass dies auch für die Maximierung der Anzahl der Zyklen gilt, und auch nicht für die hier betrachteten spezifischen Diagramme, aber es scheint hinreichend eng miteinander verbunden zu sein, dass dies wichtig sein könnte.

Zusammenfassend lässt sich sagen, dass für die nach dem obigen Verfahren erstellten Graphen eine maximale Abdeckung des Scheitelpunkt-disjunkten Zyklus gefunden werden kann.

Abgesehen davon würde mich auch interessieren, ob die maximale Abdeckung des vertex-disjunkten Zyklus auch eine effiziente Lösung für beliebige Graphen bietet, die mindestens eine Zyklusabdeckung zulassen (die wahrscheinlich als Antwort auf die Hauptfrage herausfallen wird), oder ob Allein die Bestimmung der Anzahl der Zyklen in der maximalen Abdeckung (im Gegensatz zu den tatsächlichen Kanten in jeder) macht das Problem einfacher. Ich poste diese Fragen gerne als separate Fragen, wenn die Leute der Meinung sind, dass sie selbst umfassende Antworten verdienen.

Martin Ender
quelle
Haben Sie sich die CS-Literatur zum Nierenaustausch angesehen? Das Problem scheint verwandt zu sein, daher frage ich mich, ob eine der dort beschriebenen Methoden auf diese angewendet werden kann. Dies könnte jedoch eine Sackgasse sein ...
DW
@ DW habe ich nicht (ich wusste nicht, dass das eine Sache ist). Ich werde sehen, was ich finden kann, danke.
Martin Ender
Das Problem ähnelt in der Tat dem Nierenaustausch, der anhand eines theoretischen POV untersucht wurde. In diesem Artikel von Roughgarden wird erklärt, dass kleine Zyklen aus naheliegenden Gründen bevorzugt werden (S. 3). Die Zyklusgrößen implizieren "gleichzeitige Operationen" und kleinere verringern das Risiko, alle Operationen
abzubrechen,
@AustinMohr Ich glaube, dass die aus der von mir beschriebenen Konstruktion erhaltenen Graphen immer in Zyklen zerlegbar sind (und unabhängig davon, welchen Zyklus Sie entfernen, der Rest weiterhin in Zyklen zerlegbar ist). Wenn Sie sich auch mit allgemeinen Grafiken befassen möchten, gehen Sie davon aus, dass mindestens eine vollständige Abdeckung vorhanden ist.
Martin Ender
@ MartinBüttner Wenn in Ihrem speziellen Fall alle Listenelemente verschieden sind, wäre Ihr Problem gleichbedeutend damit, die (eindeutige) Zykluszerlegung der Permutation zu finden ?
Mhum

Antworten:

4

Gkk=2k=3 kk

GG((3/5)ϵ)ϵ>0

Zu Einzelheiten und Nachweisen der vorstehenden Ansprüche siehe [1].


[1] Bläser, Markus und Bodo Manthey. "Zwei Approximationsalgorithmen für 3-Zyklus-Cover." Approximationsalgorithmen zur kombinatorischen Optimierung. Springer Berlin Heidelberg, 2002. 40-50.

Juho
quelle
Interessant, ich werde versuchen, die Referenzen aus diesem Papier zu folgen. Vielen Dank. (Ich muss etwas falsch verstanden haben, als ich dachte, dass K-Cycle-Cover genau K-Cycle-Cover sind. Oder vielleicht ist das eine andere Definition, die an anderer Stelle verwendet wird.)
Martin Ender
2
@ MartinBüttner By the way, Sie werden wahrscheinlich einen Blick die Doktorarbeit von Bläser haben wollen hier . (Es ist auf Deutsch, aber Sie werden wahrscheinlich kein Problem damit haben :-)). Es sollte die Details des tatsächlichen Berechnens einer Abdeckung mit maximalem Gewicht für zwei Zyklen abdecken.
Juho
|V|nn
Wenn ich noch etwas darüber nachdenke, bin ich mir nicht sicher, ob es tatsächlich möglich ist, das Problem in Bezug auf Gewichte zu formulieren. Bei gleichen Gewichten haben alle Fahrradüberzüge das gleiche Gewicht. Meine "Kosten" für einen Zyklus sind eigentlich seine Länge minus 1. Deshalb möchte ich so viele Zyklen wie möglich. Wenn dies in Form von Gewichten formuliert werden kann, reduziert sich dies auf das Zuweisungsproblem, aber wenn nicht, muss ich wohl weiter suchen.
Martin Ender