Ich habe ein Problem und ich denke, es ist NP-schwer, aber ich kann es nicht beweisen.
Hier ist ein Ebenendiagramm, wobei Schicht 0 die höchste Schicht und Schicht L die niedrigste ist.
Es gibt einige gerichtete Kanten zwischen Schichten, wobei eine Kante (A, B) anzeigt, dass Knoten A Knoten B [abdecken] kann. Und wenn A B abdecken kann, kann jeder Knoten auf einem beliebigen Pfad von A nach B B abdecken, B kann abdecken selbst.
Schließlich kommt hier eine Menge von Knoten S. Ich muss eine andere Menge von Knoten ANS auswählen und sicherstellen, dass für jeden Knoten q in S ein Knoten p in ANS existiert und p q abdeckt.
Für jeden Knoten fallen Kosten an, und ich muss die Gesamtkosten für das Festlegen von ANS minimal halten.
Ist das ein NP-hartes Problem? Ich denke schon, aber ich kann es nicht beweisen.
Kannst du mir helfen?
Vielen Dank.
Antworten:
Ja, dieses Problem ist definitiv NP schwer. Ich poste diese Antwort, da Sie einen Beweis benötigen.
Wenn Sie diesem Link folgen: http://en.wikipedia.org/wiki/Set_cover_problem , heißt es, dass die Optimierungsversion des minimalen Set-Cover-Problems NP-Hard ist.
Das Problem im Link:
Sie können dies wie folgt mit Ihrem Problem in Verbindung bringen:
S ist die Menge von Knoten, die mindestens einen Knoten in Ihrer Eingabemenge abdecken. Dies kann durch Durchführen einer DFS an den Knoten des Eingabesatzes mit umgekehrter Kantenrichtung festgestellt werden.
Das im Link beschriebene Problem ist nun ein Sonderfall Ihres Problems, bei dem die Kosten für jeden Knoten gleich sind und Sie nur die Anzahl der Knoten (Sätze) minimieren möchten.
Daher ist Ihr Problem im allgemeinen Fall noch schwieriger zu lösen und daher NP Hard.
quelle
S
. Vielleicht gibt es negative Kosten oder so etwas ...