Pourquoi l'élimination littérale pure est-elle absente dans les algorithmes basés sur DPLL comme le paillette?

cs.stackexchange https://cs.stackexchange.com/questions/44924

  •  02-11-2019
  •  | 
  •  

Question

Je regarde divers Soldats Et essayer de comprendre comment ils fonctionnent et pourquoi ils sont conçus de certaines manières. (Mais je ne suis pas dans une université en ce moment et je ne connais personne qui est professeur. Alors je poste ici en espérant que quelqu'un puisse m'aider. J'apprécierais vraiment.)

Dans Balle, BCP (propagation de contrainte booléenne) est implémenté différemment de l'original Dpll: il le fait en regardant deux littéraux à la fois (une technique légèrement différente de celle initialement suggérée dans SATO: un prover propositionnel efficace) Selon l'article de 2001, Chaff: ingénierie un solveur SAT efficace. Il n'y a cependant aucune mention d'élimination littérale pure dans cet article.

Dans La complexité de l'élimination littérale pure, Jan Johannsen a écrit

Les meilleures implémentations actuelles de solveurs SAT de type DLL, comme Chaff ou Berkmin sacrifient cette heuristique afin de gagner de l'efficacité dans la propagation de l'unité.

où "cette heuristique" fait référence à l'élimination littérale pure. Ma compréhension de ce que fait l'élimination littérale pure est qu'il

  1. recherche tous littéraux en polaire (ou pur)
  2. leur attribue une valeur booléenne de telle sorte que chacun donne True
  3. Dans ce cas, nous pouvons maintenant supprimer toutes les clauses les contenant

Voici ma question:

Comment le sacrifice est-il nécessaire? Y a-t-il une bonne raison pour laquelle l'élimination littérale pure est absente dans les algorithmes basés sur DPLL comme le pailleur? Ne pouvons-nous pas simplement faire une pure élimination littérale à chaque niveau de décision (ou du moins le faire au début avant de se ramifier)?

Pas de solution correcte

Licencié sous: CC-BY-SA avec attribution
Non affilié à cs.stackexchange
scroll top