Hinweis: Ich habe eine ähnliche Frage zum ungerichteten Diagramm gestellt .
Gegeben
- Ein Digraph ohne Mehrfachkanten oder Schleifen
- Ein Quellknoten
- Ein Zielknoten
- Maximale Pfadlänge
Ich suche nach - Ein Teilgraph von G , der einen beliebigen Knoten und eine beliebige Kante in G enthält (und nur diejenigen), die Teil mindestens eines einfachen Pfades von s nach t mit einer Länge ≤ l sind .
Beachten Sie, dass ich die Pfade nicht aufzählen muss.
graph-algorithms
Lior Kogan
quelle
quelle
Antworten:
Wie die Frage gestellt wird, ist als Teil der Eingabe N P -hart. Dies folgt als Sonderfall der Klassifikation der Klasse von Mustern, für die das Problem des gerichteten Subgraphen-Homöomorphismus nach Fortune, Hopcroft und Wyllies Arbeit N P -vollständig ist: Das Problem des gerichteten Subgraphen-Homöomorphismus .l NP NP
Insbesondere ist das folgende Problem -vollständig: Gibt es bei einem gerichteten Graphen G und Eckpunkten s , t , v einen (einfachen) ( s , t ) -Pfad durch v ?NP G s,t,v (s,t) v
quelle
Update: Diese Antwort scheint fehlerhaft zu sein. Siehe den Kommentar von Kristoffer Arnsfelt Hansen.
Ich weiß nicht, wie ich Ihr Problem lösen soll, aber hier ist eine Technik, um eine einfachere Version Ihres Problems zu lösen: Testen Sie bei gegebener Kante , ob es einen einfachen Pfad von s nach t gibt , der Kante e enthält . (Dies entspricht dem Sonderfall Ihres Problems mit l = ∞ .)e s t e l=∞
Sie können dieses einfachere Problem lösen, indem Sie "Max-Flow mit unteren Grenzen" als Unterprogramm verwenden. Beim Standardproblem mit maximalem Durchfluss gibt uns die Kapazität jeder Kante eine Obergrenze für die Durchflussmenge, die durch diese Kante fließt, und wir fordern, dass die Durchflussmenge an der Kante durch 0 untergrenze ist. In "max-flow" mit Untergrenzen "dürfen wir sowohl eine Untergrenze als auch eine Obergrenze für den Durchfluss durch diese Kante angeben. Es ist bekannt, dass "Max-Flow mit Untergrenzen" in Polynomzeit gelöst werden kann.
Nehmen wir nun an, wir haben eine Kante und möchten testen, ob es einen einfachen Pfad von s nach t gibt , der die Kante e enthält . Wir werden einen Max-Flow mit Problem der unteren Grenzen einrichten. Nehmen Sie insbesondere den Graphen G und fügen Sie einen neuen Knoten s 0 mit der Kante s 0 → s und einen neuen Knoten t 1 mit der Kante t → t 1 hinzu . Stellen Sie die Kapazität (Obergrenze) für jede Kante 1 ein. Die Untergrenze für alle Kanten ist 0, mit der Ausnahme, dass die Untergrenze für Kante e gilte∈E s t e G s0 s0→s t1 t→t1 e ist 1. Überprüfen Sie nun, ob es einen realisierbaren Fluss von nach t gibt , der alle Grenzen erfüllt (dieser Test kann, wie oben erwähnt, in Polynomzeit durchgeführt werden). Wenn es keinen Fluss gibt, gibt es keinen einfachen Weg von s nach t . Wenn es einen solchen Fluss gibt, ergibt das Verfolgen dieses Flusses einen einfachen Pfad von s nach t , der die Kante e enthält , so dass es einen so einfachen Pfad gibt.s t s t s t e
Ich habe diese Idee aus folgendem Artikel gelernt:
(Lesen Sie unbedingt die Techreport-Version und nicht die veröffentlichte Version. Diese Idee finden Sie im zweiten Absatz der Einführung.)
Alternativ können wir Ihr Problem auf einfache Weise mithilfe der ganzzahligen linearen Programmierung (ILP) lösen. In der Praxis sind ILP-Löser bei vielen Problemen ziemlich gut. Ihre Worst-Case-Laufzeit ist jedoch immer noch exponentiell, sodass kein Algorithmus mit einer polynomiellen Worst-Case-Laufzeit erhalten wird. Lassen Sie mich wissen, ob ich erläutern soll, wie dies mit ILP formuliert werden kann.
quelle
quelle
Derandomisierung
quelle