Ist es NP-schwer, einen Pfad mit mehr roten als blauen Eckpunkten zu finden?

7

Wenn ein verbundener, gerichteter Graph , die Eckpunkte und eine Färbung, st und schwarz sind und alle anderen Eckpunkte entweder rot oder blau sind , ist es möglich, einen einfachen Pfad von zu finden bis mit mehr roten als blauen Eckpunkten in der Polynomzeit?G=(V,E)s,tVstst

Ich denke, es sollte möglich sein, aber unser TA sagte, dies sei NP-schwer.

Idee für eine Lösung:

Erstellen Sie aus wie folgt: GG=(V,E)

  • Teilen Sie alle in zwei Eckpunkte und . besteht aus den geteilten Scheitelpunktpaaren und und . vV{s,t}vinvoutVst

  • für alle eine Kante ein . (Für Kante oder wobei Kante bzw. .) Fügen Sie außerdem eine Kante für einen der geteilten Scheitelpunkte ein. So enthält zwei Arten von Kanten: diejenigen , die entsprechen den Kanten von und diejenigen , die entsprechen den Eckpunkten von .e=(u,v)E(uout,vin)(x,v)(u,x)x{s,t}(x,vin)(uout,x)(vin,vout)EEV

Nun führen wir Gewichte wie folgt ein:

  • w((vin,vout))=1 , wenn die entsprechenden Eckpunkt wurde rot . v
  • w((vin,vout))=+1 , wenn die entsprechenden Eckpunkt war blau . v
  • w(e)=0 für alle anderen Kanten, dh diejenigen, die Kanten von und nicht Eckpunkten entsprechen.G

Führen Sie nun einen Algorithmus für kürzeste Pfade Ihrer Wahl wie Dijkstra, Bellman-Ford, ... durch. Überprüfen Sie, ob die Länge des angegebenen Pfads und Sie sind fertig.<0

Warum geht das nicht? Liegt es daran, dass wir möglicherweise negative Zyklen haben? Wir könnten diejenigen mit Bellman Ford erkennen, aber dann müssten wir den gewünschten Weg mit nicht effizienten Mitteln finden, um dieses Entscheidungsproblem NP-schwer zu machen? Gibt es eine elegante Reduktion, um die NP-Härte zu zeigen?

Valerie Poulain
quelle

Antworten:

9

Ihre Lösung funktioniert nicht, da Dijkstra und Bellman-Ford die Funktion "einfacher Pfad" nicht interpretieren können. Und sie werden in der Tat in jeden negativen Zyklus fallen.

Ich denke, das Beste, um die NP-Vollständigkeit zu zeigen, ist die Verwendung des Hamiltonschen Pfadproblems. Nehmen wir einen Graphen von roten Eckpunkten.GN

Dann erstellen Sie einen Graphen und fügen , und blaue Eckpunkte hinzu . Sie verketten zuerst mit Kanten alle Blues-Eckpunkte von der Quelle bis zur letzten blauen ( -> -> -> ...-> ). Dann setzen Sie Kanten von auf jeden roten Scheitelpunkt und eine Kante von jedem roten Scheitelpunkt auf .GstN1Gsb1b2bN1bN1t

Ein einzelner Pfad von nach führt also notwendigerweise durch alle blauen Knoten ( ) und muss dann zu allen roten Knoten ( ) gehen, um darauf zu antwortenstN1N

Gibt es in einen einfachen Pfad von nach mit mehr roten als blauen Eckpunkten?Gst

Das ist also wie eine Antwort auf:

Gibt es einen Hamilton-Pfad inG

Ihr Problem ist also in der Tat NP-vollständig.

Optidad
quelle
1
Ordentlich, danke. Wenn ich also formal beweisen wollte, wo ich mit einer Instanz für den Hamilton-Pfad beginnen und sie einer Instanz dieses Problems zuordnen muss, könnte ich das tun Folgendes: Färben Sie alle vorhandenen Scheitelpunkte rot, fügen Sie blaue Scheitelpunkte hinzu und verbinden Sie sie in einer Kette . Addiere eine Kante und für jede in eine Kante in bleibt der Rest wie er ist. DHPProblemAboveG,s,tG,s,t|V{s,t}|1(b1)(bn)(s,b1)(s,v)G(bn,v)G
Valerie Poulain
1
Ja, ich bin mit der NP-Vollständigkeitsdemonstration nicht sehr vertraut, aber diese Art der Darstellung ist eindeutig besser. Ich würde trotzdem mit einer Instanz von ohne & da das anfängliche Hamilton-Pfadproblem keinen spezifischen Scheitelpunkt hat. Gst
Optidad
2
Upvoted für (ich denke) Korrektheit; Dieses Argument wäre jedoch viel einfacher zu verstehen, wenn Sie mit dem beliebigen Graphen und ihn dann in das speziell konstruierte einbetten würden . Im Moment verbirgt sich die Reduktion vollständig in dem einzigen Satz "Schließlich setzen Sie eine beliebige Anzahl von Kanten zwischen rote Eckpunkte", den ich bei meiner ersten Lesung verpasst habe. "Beliebig viele Kanten" ist Code für "Sie wählen einen beliebigen Graphen dessen Hamilton-Pfad Sie entdecken möchten, und binden ihn dort ein." Das macht dies zu einer gültigen Ermäßigung. GGG
Quuxplusone
1
@Quuxplusone Sie haben Recht, ich bearbeite, um es klarer zu machen.
Optidad
@ValeriePoulain: Vince hat Recht, dass Start- und Endscheitelpunkte für das übliche HP-Problem nicht angegeben werden. Wenn sie jedoch angegeben werden, muss Ihre Reduzierung geringfügig angepasst werden: Sie müssen eine Kette von einfügen blaue Eckpunkte in einer Linie entlang jeder Kante zwischen und jedem anderen roten Eckpunkt. Dies soll verhindern, dass beispielsweise eine einzelne Kante von zu einem roten Scheitelpunkt eine gültige Lösung für die konstruierte Instanz darstellt. |V{s,t}|1ss
j_random_hacker