Je pense que ce problème est NP-difficile. J'essaie d'esquisser une réduction de MinSAT. Dans le problème MinSAT, on nous donne un CNF et notre objectif est de minimiser le nombre de clauses satisfaites. Ce problème est NP-difficile, voir par exemple http://epubs.siam.org/doi/abs/10.1137/S0895480191220836?journalCode=sjdmec
Divisez les sommets en deux groupes - certains représenteront des littéraux, les autres clauses, donc où est le nombre de variables du CNF (généralement dénoté par ) et est le nombre de clauses. Dirigez une arête de chaque sommet littéral vers le sommet de la clause où elle se produit. Définissez pour un sommet littéral qui représente comme (où est un paramètre arbitraire), donc soit et ou et . Pour chaque clause-vertix, soitn=2v+cvncSxi{i,i+v+k}kf(xi)=if(x¯i)=i+v+kf(x¯i)=if(xi)=i+v+kkS={v+1,…,v+k,2v+k+1,…,n}, donc des vertex de clause sont `` petits ''.k
Maintenant, le CNF a une affectation où au moins clauses sont fausses si et seulement si votre problème peut être résolu pour l'instance ci-dessus. Le problème MinSAT est exactement de tester si une formule CNF φ a une affectation qui rend faux au moins k clauses, donc cela montre que votre problème est NP-difficile.kφk
Pour vous aider à comprendre cette réduction, voici l'intuition: les petites étiquettes ( ) correspondent à la valeur de vérité Faux et les grandes étiquettes ( v + k + 1 , … , 2 v + k ) correspondent à Vrai. Les contraintes pour les sommets littéraux garantissent que chaque x i est soit vrai soit faux et que ¯ x i1,2,…,v+kv+k+1,…,2v+kxixi¯¯¯¯¯a la valeur de vérité opposée. Les arêtes garantissent que si un littéral est vrai, tous les sommets de clause qui le contiennent sont également affectés True. (En revanche, si tous les littéraux d'une clause se voient attribuer la valeur False, cette structure de graphe permet d'affecter le vertex de la clause à False ou True.) Enfin, le choix de garantit que k des vertex de la clause sont False et c - k d'entre eux ont la valeur True. Donc, s'il y a une sorte topologique valide de ce graphe, alors il y a une affectation aux variables qui fait au moins k des clauses de φkkc−kkφfalse (tous les vertex de clause affectés à False, plus peut-être certains de ceux à True). Inversement, s'il y a une affectation aux variables qui rend au moins des clauses de φ faux, alors il y a une sorte topologique valide de ce graphique (nous remplissons les étiquettes pour les sommets littéraux de la manière évidente; et pour chaque clause de φ qui est vraie, nous donnons à sa clause-sommet correspondante une étiquette qui correspond à True; les autres clauses-sommets peuvent recevoir des étiquettes correspondant à une valeur de vérité arbitraire).kφφ