Open AntoniusW opened 6 years ago
Note: the SAT4J link points to variable forgetting, not clause/nogood forgetting. Those are different things.
Good idea but keep in mind forgetting leads to incompleteness.
Good idea but keep in mind forgetting leads to incompleteness.
@jblaszczyk No, it does not. Learned nogoods that do not imply anything for the current partial assignment can be forgotten without making the search incomplete.
General note regading this issue: We should not forget that we are grounding lazily, so we might not only forget nogoods, but also datastructures in the grounder. This interferes with grounding heuristics.
Is this implemented by #197?
Is this implemented by #197?
Ping @AntoniusW
Alpha uses a CDNL-based solving component which learns new nogoods after running into conflicts. Over time, the number of nogoods becomes very large and many of the learned ones are not helpful to later search. The search almost grinds to a halt due to the massive number of superflous nogoods, which need to be treated during propagation. SAT solvers and other APS solvers therefore implement some form of nogood forgetting in order to speed-up the search and only keep those nogoods that are useful. There is a variety of literature on this topic and Alpha needs some form of nogood forgetting in order to solve the harder instances from the ASP competition.