8

Ich suche nach einer Möglichkeit, eine topologische Sortierung auf einem bestimmten gerichteten ungewichteten Graphen durchzuführen, der Zyklen enthält. Das Ergebnis sollte nicht nur die Ordnung der Knoten enthalten, sondern auch die Menge der Kanten, die durch die gegebene Reihenfolge verletzt werden. Dieser Kantensatz soll minimal sein.Topologische Art von zyklischen Graph mit minimaler Anzahl von verletzten Kanten

Da mein Eingabediagramm möglicherweise groß ist, kann ich keinen exponentiellen Zeitalgorithmus verwenden. Wenn es nicht möglich ist, eine optimale Lösung in polynomieller Zeit zu berechnen, welche Heuristik wäre für das gegebene Problem sinnvoll?

+0

Ist das nicht [Feedback Arc Set] (http://en.wikipedia.org/wiki/Feedback_arc_set)? Sie können die Bestellung erhalten, indem Sie die Rest-DAG topologisch sortieren. –

+0

Wollen Sie auch eine minimale Lösung (jeder entfernte Bogen würde einen Zyklus in der DAG abschließen) oder eine minimale Lösung (so wenig Bögen wie möglich entfernt)? –

+0

@DavidEisenstat eigentlich interessiere ich mich nicht zu sehr, wenn es ein Bogen mehr oder weniger ist, muss ich einfach getrennt damit umgehen. Wenn ein Algorithmus die doppelte Laufzeit benötigt und nur eine Lösung mit wenigen Bögen weniger findet, ist dies nicht wirtschaftlich. Das Problem scheint ein Feedback-Bogen zu sein, aber das ist in diesem Fall NP schwer, also brauchen wir eine Annäherung. – orsg

Antwort

8

Eades, Lin und Smyth vorgeschlagen A fast and effective heuristic for the feedback arc set problem. Der Originalartikel befindet sich hinter einer Paywall, aber eine kostenlose Kopie ist erhältlich unter here.

Es gibt einen Algorithmus für die topologische Sortierung, der die Scheitelpunktordnung aufbaut, indem er einen Scheitelpunkt ohne ankommende Bögen auswählt, auf dem Graphen minus dem Scheitel rekursiv vorgeht und diesen Scheitelpunkt der Reihenfolge voranstellt. (Ich beschreibe den Algorithmus rekursiv, aber Sie müssen ihn nicht so implementieren.) Der Eades-Lin-Smyth-Algorithmus sucht auch nach Scheitelpunkten ohne ausgehende Bögen, und hängt sie an an. Natürlich kann es vorkommen, dass alle Scheitelpunkte ein- und ausgehende Bögen haben. Wählen Sie in diesem Fall den Eckpunkt mit der höchsten Differenz zwischen ein- und ausgehend. Hier kann zweifellos experimentiert werden.

Die Algorithmen mit nachweisbarem Worst-Case-Verhalten basieren auf linearen Programmier- und Graphenschnitten. Diese sind sauber, aber die Garantien sind weniger als ideal (log^2 n oder log n log log n mal so viele Bögen wie benötigt), und ich vermute, dass effiziente Implementierungen ein ziemliches Projekt wären.

+0

Diese Frage bekommt immer noch eine Reihe von Ansichten und ich bin gerade mit dem Papier auf sie gestoßen. Wenn jemand an den Approximationsalgorithmen interessiert ist, die David im letzten Abschnitt erwähnt, könnte er sich auf "Divide-and "Conquer Approximation Algorithms über Spreading Metrics" von Even, Naor, Rao, Schieber, Journal of the ACM, Vol. 47, Nr. 4, Juli 2000, S. 585-616, welche die log n log log n Approximation sogar für gewichtete Digraphen durchführt. –

+0

Eine frühere log^2 n -Näherung für das Problem der ungewichteten minimalen Rückkopplungsbogenmenge (wobei wir die Anzahl der zu entfernenden Flanken minimieren), die auf linearer Programmierung basiert, kann in Max-Flow-Min-Cut-Sätze und deren Verwendung in gefunden werden Entwicklung von Approximationsalgorithmen ", Leighton, Rao, Journal of the ACM, Vol. 46, Nr. 6, November 1999, S. 787-832. –