3.1.7. cnfgen.families.pitfall module¶
Implementation of the Pitfall formula by Marc Vinyals, according to the paper [MV20].
| [MV20] | Marc Vinyals. Hard examples for common variable decision heuristics. In Proceedings of the 34th AAAI Conference on Artificial Intelligence (AAAI) 2020, pp. 1652–1659. https://doi.org/10.1609/aaai.v34i02.5527 |
-
PitfallFormula(v, d, ny, nz, k)¶ Pitfall Formula
The Pitfall formula was designed to be specifically easy for Resolution and hard for common CDCL heuristics. The formula is unsatisfiable and consists of three parts: an easy formula, a hard formula, and a pitfall misleading the solver into working with the hard part.
The hard part are several copies of an unsatisfiable Tseitin formula on a random regular graph. The pitfall part is made up of a few gadgets over (primarily) two sets of variables: pitfall variables, which point the solver towards the hard part after being assigned, and safety variables, which prevent the gadget from breaking even if a few other variables are assigned.
For more details, see the corresponding paper [1].
Parameters: - v : positive integer
number of vertices of the Tseitin graph
- d : positive integer
degree of the Tseitin graph
- ny : positive integer
number of pitfall variables
- nz : positive integer
number of safety variables
- k : positive, even integer
number of copies of the hard and pitfall parts; controls how easy the easy part is
Returns: - A CNF object
Raises: - ValueError
The is no d-regular graph when v < d or d*v are odd.
References
[1] Marc Vinyals. Hard examples for common variable decision heuristics. In Proceedings of the 34th AAAI Conference on Artificial Intelligence (AAAI) 2020, pp. 1652–1659. https://doi.org/10.1609/aaai.v34i02.5527