Réduisez le problème suivant à SAT

21

Voici le problème. Étant donné , où chaque . Existe-t-il un sous-ensemble dont la taille est au plus telle que pour tout ? J'essaie de réduire ce problème à SAT. Mon idée d'une solution serait d'avoir une variable pour chacun de 1 à . Pour chaque , créez une clause si . Ensuite et toutes ces clauses ensemble. Mais ce n'est clairement pas une solution complète car elle ne représente pas la contrainte queT i{ 1 , , n } S { 1 , , n } k S T ii x i n T i ( x i 1x i k ) T i = { i 1 ,k,n,T1,,TmTje{1,,n}S{1,,n}kSTjejeXjenTje(Xje1Xjek)STje={je1,,jek}Sdoit avoir au plus éléments. Je sais que je dois créer plus de variables, mais je ne sais tout simplement pas comment. J'ai donc deux questions:k

  1. Mon idée de solution est-elle sur la bonne voie?
  2. Comment créer les nouvelles variables pour qu'elles puissent être utilisées pour représenter la contrainte de cardinalité ?k
Aden Dong
la source
5
Juste une remarque: votre problème est connu sous le nom de HITTING SET , qui est une formulation équivalente du problème SET COVER .
A.Schulz

Réponses:

13

Il semble que vous essayez de calculer un hypergraphe transversal de taille . Autrement dit, est votre hypergraphe, et est votre transversale. Une traduction standard consiste à exprimer les clauses telles que vous les avez, puis à traduire la restriction de longueur en une contrainte de cardinalité.{ T 1 , , T m } Sk{T1,,Tm}S

Utilisez donc votre encodage existant, c'est-à-dire puis ajoutez des clauses encodant . 1 i n xik1jmjeTjXje1jenXjek

1jenXjek est une contrainte de cardinalité. Il existe différentes traductions de contraintes de cardinalité en SAT.

La traduction de contrainte de cardinalité la plus simple mais la plus grande est simplement . De cette façon, chaque disjonction représente la contrainte - pour tous les sous-ensembles de de taille k + 1. Autrement dit, nous nous assurons qu'il n'y a aucun moyen de définir plus de k variables. Notez que ce n'est pas une taille polynomiale en ¬ i X x i X { 1 , , n } kX{1,,n},|X|=k+1jeX¬Xje¬jeXXjeX{1,,n}k

Quelques liens vers des articles sur des traductions de contraintes de cardinalité plus efficaces en espace qui sont de taille polynomiale enk :

Si vous êtes réellement intéressé à résoudre de tels problèmes, il est peut-être préférable de les formuler comme des problèmes pseudo-booléens (voir l' article wiki sur les problèmes pseudo-booléens ) et d'utiliser des solveurs pseudo-booléens (voir la concurrence pseudo-booléenne ). De cette façon, les contraintes de cardinalité ne sont que des contraintes pseudo-booléennes et font partie du langage - espérons que le solveur pseudo-booléen les traite ensuite directement et donc plus efficacement.

MGwynne
la source
1
Veuillez décrire brièvement tous les liens (au moins l'auteur et le titre) afin que les gens puissent trouver les documents en cas de rupture des liens. Il est probablement préférable d'utiliser DOI si disponible.
Raphael
1
@Raphael Bon point! Toutes mes excuses, j'aurais dû le faire pour commencer. J'ai maintenant mis à jour tous les liens; Je ne sais pas si Springer fournit des DOI mais il devrait y avoir suffisamment d'informations maintenant pour les trouver si les liens se rompent. Remarque: Je ne crée pas de lien vers les fichiers PDF officiels de Springer pour éviter les problèmes d'accès.
MGwynne
Mais il semble que la réduction que vous avez donnée ne soit pas en temps polynomial, non?
Aden Dong
@AdenDong Vous n'avez rien dit sur le polynôme;). La traduction de contrainte de cardinalité simple que je mentionne n'est pas polynomiale en (mais l'est pour fixe ). Les traductions de contraintes de cardinalité données dans la liste des articles I sont polynomiales en - utilisant de nouvelles variables. J'ai mis à jour ma réponse pour clarifier les choses. k kkkk
MGwynne
MGwynne, j'ai tendance à toujours lier le DOI officiel même s'il est paywallé afin d'être à l'épreuve du temps, et des versions gratuites en plus. Mais comme c'est le cas maintenant, n'importe qui doit pouvoir trouver les papiers, donc c'est très bien.
Raphael
6

Si vous n'êtes pas absolument défini sur le SAT normal, votre idée est déjà une réduction à MIN-ONES (sur des formules CNF positives), qui est fondamentalement SAT, mais où vous pouvez définir au plus variables sur true (strictement c'est l'optimisation version où nous minimisons le nombre de vraies variables).k

De même, si vous vous dirigez dans une direction de complexité paramétrée, alors vous avez déjà essentiellement WSAT ( ), où est la classe de tous les positifs Formules CNF (comme précédemment, la notation pourrait cependant aider vos investigations). Dans ce cas, vous devez commencer à regarder quel paramétrage serait utile dans votre cas. Γ + 2 , 1Γ2,1+Γ2,1+

Je suppose que vous recherchez une réduction explicite, mais sinon, vous pouvez toujours vous rabattre sur le théorème de Cook-Levin .

Luke Mathieson
la source