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?
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:
Teilen Sie alle in zwei Eckpunkte und . besteht aus den geteilten Scheitelpunktpaaren und und .
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 .
Nun führen wir Gewichte wie folgt ein:
- , wenn die entsprechenden Eckpunkt wurde rot .
- , wenn die entsprechenden Eckpunkt war blau .
- für alle anderen Kanten, dh diejenigen, die Kanten von und nicht Eckpunkten entsprechen.
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.
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?