Myślę, że ten problem jest trudny NP. Próbuję naszkicować redukcję z MinSAT. W przypadku problemu MinSAT otrzymujemy CNF, a naszym celem jest zminimalizowanie liczby spełnionych klauzul. Ten problem jest trudny NP, patrz np. Http://epubs.siam.org/doi/abs/10.1137/S0895480191220836?journalCode=sjdmec
Podziel wierzchołki na dwie grupy - niektóre będą reprezentować literały, inne klauzule, więc gdzie v jest liczbą zmiennych CNF (zwykle oznaczoną przez n ), a c jest liczbą klauzul. Kieruj krawędź z każdego dosłownego wierzchołka do klauzuli-wierzchołka, w której występuje. Zdefiniuj S dla dosłownego wierzchołka reprezentującego x i jako { i , i + v + k } (gdzie k jest dowolnym parametrem), więc albo f ( x i )n=2v+cvncSxi{i,i+v+k}k oraz f + k + 1 , …f(xi)=i lub f ( ˉ x i ) = i oraz f ( x i ) = i + v + k . Dla każdego wierzchołka zdania niech S = { v + 1 , … , v + k , 2 v , n }f(x¯i)=i+v+kf(x¯i)=if(xi)=i+v+kS={v+1,…,v+k,2v+k+1,…,n} , więc wierzchołków klauzul jest `` małe ''.k
Teraz CNF ma przypisanie, w którym co najmniej klauzul jest fałszywych wtedy i tylko wtedy, gdy problem można rozwiązać dla powyższej instancji. Problem MinSAT polega właśnie na sprawdzeniu, czy formuła CNF φ ma przypisanie, które powoduje, że co najmniej klauzule k są fałszywe, więc pokazuje to, że twój problem jest trudny NP.kφk
Aby pomóc ci zrozumieć tę redukcję, oto intuicja: małe etykiety ( ) odpowiadają wartości prawdy Fałsz, a duże etykiety ( v + k + 1 , … , 2 v + k ) odpowiadają Prawdziwe. Ograniczenia dla dosłownych wierzchołków zapewniają, że każdy x i ma wartość Prawda lub Fałsz oraz że ¯ x i1,2,…,v+kv+k+1,…,2v+kxixi¯¯¯¯¯ma przeciwną wartość prawdy. Krawędzie zapewniają, że jeśli dowolny literał ma wartość PRAWDA, wówczas wszystkie zawierające go wierzchołki klauzul mają również wartość PRAWDA. (W przeciwieństwie do tego, jeśli wszystkie literały w klauzuli mają wartość False, wówczas ta struktura graficzna pozwala na przypisanie wierzchołka klauzuli albo False, albo True.) Na koniec, wybór zapewnia, że k wierzchołków klauzuli ma False i c - k z nich ma przypisane True. Tak więc, jeśli istnieje ważny rodzaj topologiczną z tego wykresu, to nie jest zadanie dla zmiennych sprawia, że co najmniej k klauzul cpkkc−kkφfalse (wszystkie z wierzchołków klauzul, którym przypisano wartość False, oraz ewentualnie niektóre z tych, którym przypisano wartość True). I odwrotnie, jeśli jest przypisanie do zmiennych sprawia, że co najmniej klauzul cp fałszywe, to nie jest ważny rodzaj topologiczna tego wykresu (wypełniamy etykiet dla dosłownych-wierzchołków w oczywisty sposób, a dla każda klauzula cp to prawda, dajemy jej odpowiednia klauzula-Vertex etykietę, która odpowiada true; pozostałe wierzchołki-klauzuli może otrzymać etykiety odpowiadające dowolnej wartości logicznej).kφφ