Partitionieren Sie einen Graphen in knotendisjunkte Zyklen

14

Zugehöriges Problem: Der Satz von Veblen besagt, dass "ein Graph eine Zykluszerlegung nur dann zulässt, wenn sie gerade ist". Die Zyklen sind kantendisjunkt, aber nicht notwendigerweise knotendisjunkt. Anders ausgedrückt: "Die Kantenmenge eines Graphen kann genau dann in Zyklen unterteilt werden, wenn jeder Scheitelpunkt einen geraden Grad hat."

Mein Problem: Ich frage mich, ob jemand die Partition eines Graphen in knotendisjunkte Zyklen untersucht hat. Das heißt, die Scheitelpunkte eines Graphen G werden in V 1 , V 2 , , V k unterteilt , und jeder durch V i induzierte Untergraph ist hamiltonisch.VGV1,V2,,VkVi

Ist es NP-schwer oder einfach?

Weiteres Problem: Die Teilung in Dreiecke ist NP-vollständig. (Seite 68 von "Computer und Störanfälligkeit")

Vielen Dank für Ihre Beratung im Voraus. ^^

Peng Zhang
quelle
8
Es gibt eine einfache Reduktion auf Matching. Bekannte Übung in Algorithmen.
Chandra Chekuri
1
Ist das Ihr Problem: en.wikipedia.org/wiki/Vertex_cycle_cover ?
Thomas Ahle
@ThomasAhle Danke, mir war diese Wiki-Seite nicht bekannt. Es heißt 'Disjoint Cycle Cover' und wird auf dieser Wiki-Seite erwähnt.
Peng Zhang

Antworten:

19

Eine Unterteilung in vertex-disjunkte Zyklen ist dasselbe wie ein 2-regulärer Subgraph, der üblicherweise als 2-Faktor bezeichnet wird. Es kann (falls vorhanden) in der Polynomzeit durch einen Algorithmus gefunden werden, der auf Matching basiert. ZB siehe diesen Link .

ETA Nov 2013: Aus den nachstehenden Kommentaren geht hervor, dass die Reduzierung von der oben verlinkten Quelle falsch ist. Die Aussage, dass das Problem auf eine perfekte Übereinstimmung reduziert werden kann, bleibt jedoch richtig. Die korrekte Reduktion findet sich in WT Tutte (1954), "Ein kurzer Beweis des Faktorsatzes für endliche Graphen", Kanadier J. Math. 6: 347–352 .

Ersetze jeden Vertex mit Grad d durch einen vollständigen zweigliedrigen Graphen G v = K d ,vd und repräsentieren jede Kanteuvdes ursprünglichen Graphen durch eine Kante von einem Scheitelpunkt von G u bis zu einem Scheitelpunkt von G v (auf der Seite der Bipartition mitdScheitelpunkten) in der Weise, dass jeder Scheitelpunkt von G v Auf dieser Seite der Bipartition tritt genau eine solche Kante auf.Gv=Kd,d2uvGuGvdGv

Dann muss eine perfekte Übereinstimmung im modifizierten Graphen die Eckpunkte auf ihrer Seite der Bipartition von G v mit d - 2 von den d Eckpunkten auf der anderen Seite abgleichen , wobei genau zwei freie Eckpunkte übrig bleiben, mit denen abgeglichen werden müssen ihre Nachbarn in anderen Untergraphen G u . Auf diese Weise entsprechen die perfekten Übereinstimmungen des modifizierten Diagramms 1-zu-1 den Zyklusabdeckungen des ursprünglichen Diagramms.d2Gvd2dGu

David Eppstein
quelle
Ich verstehe es nicht. Alle Erwähnungen, die ich zu diesem Algorithmus gefunden habe, beginnen mit der Berechnung einer Euler-Tour. Es gibt jedoch viele Diagramme, die ohne eine Eulertour mit dem Fahrrad abgedeckt werden können. Ist es auch in P, wenn nicht alle Kanten verwendet werden müssen?
Thomas Ahle
Hast du den Artikel gelesen, auf den ich verlinkt bin? Ich sehe dort keine Erwähnung von Eulertouren.
David Eppstein
Es ist nur ein bisschen schwer zu verstehen. Wenn Sie konstruieren , indem Sie jede Kante ( i , j ) in eine Kante von V nach V ' ( ( i , j ' ) ) ändern , woher wissen Sie, welches Ende in V und welches in V ' zu setzen ist ? Die Zeitung scheint "nur die zweite zu nehmen", aber es ist keine gerichtete Grafik.E(i,j)VV(i,j)VV
Thomas Ahle
Ich meine, ich könnte auch jede ungerichtete Kante in eine gerichtete Kante in jeder Richtung umwandeln, aber dann könnte das Matching mir einfach eine Menge "Länge 2" Zyklen geben, oder?
Thomas Ahle
1
@ThomasAhle offenbar Begriffe vertauscht; was ich meinte, ist ein reguläres überspannendes Diagramm, auch bekannt als k- Faktorkk
Manfred Weis