6. Übungsblatt
Automatisches Zeichnen von Graphen
Prof. Dr. Jens M. Schmidt, Dr. Alexander Apke, Arne Heimendahl, David Könen und Robin Kühling.
Aufgabe 1: Azyklizität (10 Punkte)
Das Problem, in einem gerichteten Graphen eine kleinste Kantenteilmenge F zu finden, so dass (V, E\F) kreisfrei ist, ist laut Vorlesung NP-vollständig. Das zuge- hörige Entscheidungsproblem kann so formuliert werden:
MinimumFeedbackArcSetProblem (MFAS) Eingabe: Gerichteter GraphG= (V, E), Zahlk ∈N.
Frage: Existiert eine Kantenmenge F ⊆ E mit |F| ≤ k, so dass G0 := (V, E \F) kreisfrei ist?
(i) Betrachten Sie das folgende aus der Vorlesung bekannte Entscheidungsproblem MFS und zeigen Sie, dass wenn MFAS NP-vollständig ist, auch MFS NP- vollständig ist (dafür ist unter anderem MFAS∈ NP zu zeigen).
MinimumFeedbackSetProblem (MFS)
Eingabe: Gerichteter GraphG= (V, E), Zahl k ∈N.
Frage: Existiert eine Kantenmenge F ⊆ E mit |E| ≤k, so dass G0 := (V, E0) mit E0 ={uv :uv ∈E\F} ∪ {vu:uv ∈F} azyklisch ist?
(ii) Es ist nicht nur in ungerichteten, sondern auch in gerichteten Graphen in Li- nearzeit möglich, auf Kreisfreiheit zutesten. Eine erste Idee zur heuristischen Lösung von MFS sucht deswegen iterativ nach gerichteten Kreisen und ori- entiert jeweils eine beliebige Kante dieses Kreises um, bis keine Kreise mehr existieren. Geben Sie einen schlichten gerichteten Graph auf höchstens 6 Kno- ten an, für den dieses Verfahren nicht zum Ziel führt. Erläutern Sie kurz, warum das Verfahren nicht die gewünschte Lösung berechnet.
(iii) Sei G= (V, E) ein zusammenhängender ungerichteter Graph, der Kreise ent- hält. Ist das Problem, eine minimale Anzahl Kanten zu entfernen, so dass G kreisfrei ist, ebenfalls NP-schwer? Begründen Sie Ihre Aussage!
Aufgabe 2: Azyklizität II (10 Punkte)
Sei G ein gerichteter Graph mit Maximalgrad höchstens 3, der keine 2-Kreise ent- hält. Zeigen Sie, dass der Algorithmus von Eades-Lin-Smyth für G sogar Güte mindestens 2m/3 erreicht (in der Vorlesung wurde Güte≥m/2 +n/6 gezeigt).
Aufgabe 3: Eades-Lin-Smyth im OGDF (Bearbeitungszeit: 2 Wochen, 10 Punkte) Schreiben Sie ein Programm innerhalb des OGDF, das den Algorithmus von Eades- Lin-Smyth auf einer Reihe von Zufallsgraphen ausführt. Vergleichen Sie den von Ihnen implementierten Algorithmus mit der in OGDF implementierten Methode
DfsAcyclicSubgraph, indem Sie die Anzahl der jeweils gelöschten Kanten mitein- ander vergleichen. Schreiben Sie diese Kantenanzahlen für jeden getesteten Zufalls- graph in Tabellenform in die im SourceCode angegebene Ausgabedatei.
Benutzen Sie dazu die zum Download bereitgestellte Datei Uebung06.cpp. Die Korrektheit Ihres Algorithmus können Sie zusätzlich anhand des Einzelgraphen example.gml(in den Ordner der ausführbaren Datei stellen) testen.