Ich denke, dieses Problem ist NP-schwer. Ich versuche eine Reduktion von MinSAT zu skizzieren. Im MinSAT-Problem erhalten wir einen CNF und unser Ziel ist es, die Anzahl der erfüllten Klauseln zu minimieren. Dieses Problem ist NP-schwer, siehe z. B. http://epubs.siam.org/doi/abs/10.1137/S0895480191220836?journalCode=sjdmec
Teilen Sie die Eckpunkte in zwei Gruppen ein - einige stellen Literale dar, die anderen Klauseln, also wobei v die Anzahl der Variablen des CNF (normalerweise mit n bezeichnet ) und c die Anzahl der Klauseln ist. Richten Sie eine Kante von jedem Literal-Vertex zu dem Klausel-Vertex, an dem sie auftritt. Definiere S für einen Literal-Vertex, der x i als { i , i + v + k } darstellt (wobei k ein beliebiger Parameter ist), also entweder f ( x i )n=2v+cvncSxi{ i , i + v + k }k und f ( ˉ x i ) = i + v + k oder f ( ˉ x i ) = i und f ( x i ) = i + v + k . Für jeden Vertix sei S = { v + 1 , … , v + k , 2 v + k + 1 , …f( xich) = if( x¯ich) = i + v + kf( x¯ich) = if( xich) = i + v + k , also sind k der Klauselknoten `` small ''.S={v+1,…,v+k,2v+k+1,…,n}k
Jetzt hat der CNF eine Zuweisung, bei der mindestens Klauseln genau dann falsch sind, wenn Ihr Problem für die obige Instanz gelöst werden kann. Das MinSAT-Problem besteht genau darin, zu testen, ob eine CNF-Formel φ eine Zuweisung hat, die mindestens k- Klauseln falsch macht. Dies zeigt also, dass Ihr Problem NP-schwer ist.kφk
Um Ihnen das Verständnis dieser Reduktion zu erleichtern, ist hier die Intuition: Kleine Bezeichnungen ( ) entsprechen dem Wahrheitswert False und große Bezeichnungen ( v + k + 1 , … , 2 v + k ) entsprechen Wahr. Die Einschränkungen für literal-Eckpunkte sicherzustellen , dass jedes x i entweder wahr oder falsch ist und dass ¯ x i1,2,…,v+kv+k+1,…,2v+kxixi¯¯¯¯¯hat den entgegengesetzten Wahrheitswert. Die Kanten stellen sicher, dass, wenn ein Literal True ist, alle Klauselscheitelpunkte, die es enthalten, ebenfalls True zugewiesen werden. (Wenn im Gegensatz dazu allen Literalen in einer Klausel False zugewiesen wird, kann der Klauselscheitelpunkt in dieser Diagrammstruktur entweder False oder True zugewiesen werden.) Schließlich wird durch die Auswahl von sichergestellt, dass k der Klauselscheitelpunkte False und zugewiesen wird c - k von ihnen sind True zugeordnet. Wenn es also eine gültige topologische Sortierung dieses Graphen gibt, dann gibt es eine Zuordnung zu den Variablen, die mindestens k der Klauseln von φ ergibtkkc−kkφfalse (alle Klauselscheitelpunkte, denen False zugewiesen wurde, plus möglicherweise einige derjenigen, denen True zugewiesen wurde). Umgekehrt gibt es, wenn es eine Zuordnung zu den Variablen gibt, die mindestens der Sätze von φ falsch macht, eine gültige topologische Sortierung dieses Graphen (wir füllen die Bezeichnungen für die Literalscheitelpunkte auf offensichtliche Weise aus; und für Für jeden Satz von φ , der wahr ist, geben wir seinem entsprechenden Satz-Eckpunkt eine Bezeichnung, die wahr entspricht (die anderen Satz-Eckpunkte können Bezeichnungen erhalten, die einem beliebigen Wahrheitswert entsprechen).kφφ