Angenommen, ich habe einen gerichteten azyklischen Graphen mit reellen Zahlengewichten auf seinen Eckpunkten. Ich möchte eine topologische Reihenfolge der DAG finden, in der für jedes Präfix der topologischen Reihenfolge die Summe der Gewichte nicht negativ ist. Oder wenn Sie eine ordnungstheoretische Terminologie bevorzugen, habe ich eine gewichtete Teilreihenfolge und möchte eine lineare Erweiterung, sodass jedes Präfix eine nicht negative Gewichtung hat. Was ist über dieses Problem bekannt? Ist es NP-vollständig oder in polynomieller Zeit lösbar?
ds.algorithms
directed-acyclic-graph
partial-order
David Eppstein
quelle
quelle
Antworten:
Dieses Problem scheint sehr ähnlich zu SEQUENZIEREN, UM MAXIMALE KUMULATIVE KOSTEN ZU MINIMIEREN, Problem [SS7] in Garey & Johnson . Nämlich:
Ich bin nicht sicher , ob das Problem bleibt NP-vollständig , wenn auf 0 G & J Erwähnung fixiert ist , dass das Problem bleibt NP-vollständig , wenn für all .K c(t)∈{−1,0,1} t∈T
quelle
Nun, meine Antwort ist meine Frage, aus der hervorgeht, dass Sie, wenn Sie dieses Problem in P lösen könnten, auch ein anderes offenes Problem lösen könnten: Positive topologische Ordnung, nehmen Sie 3
Bearbeiten: Dieses Problem hat sich auch als NP-vollständig erwiesen, sodass Ihr Problem bereits NP-vollständig ist, wenn Ihre DAG nur zwei Ebenen hat, dh wenn es keine gerichteten Pfade mit zwei Kanten gibt.
quelle
Wenn ich das Problem richtig verstehe, kann meiner Meinung nach das mit Vorrang verbundene Problem der Einzelmaschinenplanung zur Minimierung der gewichteten Summe der Fertigstellungszeiten (1 | vor | \ sum wc) auf das von Ihnen interessierte Problem reduziert werden. In Aufgabe 1 | prec | \ sum wc haben wir n Jobs mit jeweils einer nicht negativen Gewichtung und einer Bearbeitungszeit, eine Position auf den Jobs und wir wollen eine lineare Erweiterung der Jobs, so dass die gewichtete Summe der Jobabschlusszeiten ist minimiert. Die Probleme sind NP-vollständig, obwohl wir davon ausgehen, dass die Verarbeitungszeit für jeden Auftrag gleich 1 ist. Ist dies sinnvoll?
quelle
Was ist, wenn wir immer das maximale Element (in der Teilreihenfolge) mit dem geringsten Gewicht nehmen. Nachdem wir die Elemente erschöpft haben, geben wir sie in umgekehrter Reihenfolge als Ausgabe zurück.
quelle
Dieses Problem erinnert mich an viele Entscheidungsbäume. Ich würde diese Art von Lösung in Betracht ziehen, bei der versucht wird, immer den vielversprechendsten Weg einzuschlagen, aber indem man sich den gesamten Teilgraphen ansieht:
Arbeiten Sie sich von Sink Nodes aus schrittweise auf die Quellen zu. Geben Sie dabei jeder Kante ein Gewicht. Dieses Gewicht sollte den Mindestbetrag darstellen, den Sie "bezahlen" müssen, oder Sie "gewinnen", indem Sie den Teilgraphen ab dem Knoten, auf den die Kante zeigt, überqueren. Angenommen, wir befinden uns auf Stufe i + 1 und steigen auf Stufe i auf. Dies ist, was ich tun würde, um eine Gewichtung für eine Kante zuzuweisen, die auf einen Knoten der Ebene i zeigt:
Erstellen Sie dann die Reihenfolge wie folgt:
Die Idee ist, diejenigen Untergraphen zu durchlaufen, die zuerst so viel Gewinn wie möglich bringen, um später die Kosten für die Untergraphen mit negativem Gewicht tragen zu können.
quelle