420 likes | 558 Views
This document presents advanced heuristics for efficient model counting in SAT and #SAT problems. It explores techniques to find satisfying assignments and count them effectively, highlighting the complexities of NP-completeness and #P-completeness. By employing methods such as DPLL and weighted model counting, alongside the compilation of Bayesian networks, the work addresses ways to speed up processing through component selection, variable selection, and effective backtracking strategies. Empirical results indicate significant speedup in counting models using optimized heuristics compared to traditional methods.
E N D
Heuristics for Fast Exact Model Counting Tian Sang, Paul Beame, and Henry Kautz Computer Science & Engineering University of Washington 2005
SAT and #SAT Given a CNF formula, • SAT: find a satisfying assignment • NP-complete: SAT, graph coloring, Hamiltonian cycle, … • #SAT: count satisfying assignments • #P-complete: #SAT, Bayesian inference, computing permanent of a matrix, … • Example: F = (x y) (y z) • 5 satisfying assignments • (0,1,0), (0,1,1), (1,1,0), (1,1,1), (1, 0, 0)
DPLL DPLL(F) if F is empty, return 1 if F contains an empty clause, return 0 else choose a variable x to branch return DPLL(F|x=1) DPLL(F|x=0) #DPLL #DPLL(F) // computes satisfying probability of F if F is empty, return 1 if F contains an empty clause, return 0 else choose a variable x to branch return 0.5*#DPLL(F|x=1) + 0.5*#DPLL(F|x=0)
Weighted Model Counting • Each literal has a weight [0,1] • Weight of a model = Product of weight of its literals • Weight of a formula = Sum of weight of its models Basic Weighted Model Counting (BWMC) BWMC(F) if F is empty, return 1 if F contains an empty clause, return 0 else choose a variable x to branch return (BWMC(F|x=1) * weight (x) + BWMC(F|x=0) * weight (x))
A P Q B Compiling Bayesian Networks to Weighted Model Counting A B
A P Q B Compiling Bayesian Networks to Weighted Model Counting
Cachet • State-of-the-art model counting algorithm [Sang, Bacchus, Beame, Kautz, Pitassi 2004] • Built on top of zchaff SAT solver[Moskewicz et al. 2001] • Incorporates • Clause learning • Component analysis • Formula caching
Component Caching • If formula breaks into separatecomponents (no shared variables), can count each separately and multiply results: #DPLL(C1 C2) = #DPLL (C1) * #DPLL (C2) [Bayardo and Pehoushek 2000] • Caching components can yield exponential time savings [Bacchus, Dalmao, & Pitassi 2003] • Subtle interaction with clause learning • Ignore learned clauses in computing components • Flush siblings of unsat components (and their children) from cache • [Sang, Bacchus, Beame, Kautz & Pitassi 2004]
Question • What heuristics can we use to speed up (weighted) model counting? • How well do SAT heuristics translate to #SAT?
Outline • Background • Heuristics for faster model counting • Component selection • Variable selection • Randomization • Backtracking • One-pass computation of all marginals • Comparison with Bayesian solvers
Component Selection • Is it always best to solve components one at a time? • Depth-first strategy: branch on variables within a component until it is empty • Best-first strategy: select next branching variable from any open component • Reduce priority for SAT components • Best-first strategy yields 2X speedup • Increases chance of finding an unsat component • No need to completely solve their siblings!
Variable Selection • Variable selection heuristics try to rapidly reduce problem size • Must balance • Accuracy of selection • Cost of evaluating heuristic • Empirical comparison: • Literal-count heuristics • VSIDS (zChaff heuristic) • Unit-propagation heuristics • New: VSADS
Literal-Count Heuristics • Scores based on #occurrence of a literal in the residual formula [Marques Silva 1999] • Dynamic Largest Individual Sum (DLIS) • Score(v) = Max (#occurrence(v), #occurrence(v)) • Dynamic Largest Combined Sum (DLCS) • Score(v) = #occurrence(v) + #occurrence(v) • Static: Does not explicitly consider unit propagations
VSIDS • Variable State Independent Decaying Sum (VSIDS) (zChaff) [Moskewicz et al. 2001] • Scores literals, rather than variables • High score determines variable and initial polarity • Initialize literal scores = # of occurrences in formula • Increment scores of literals in each newly-learned conflict clause • Literal scores decayed periodically
Unit-Propagation Based Heuristics • Exact Unit Propagation Count (EUPC) • Literals that lead to conflicts have top priority • If none, compute: Score(v) = |UP(v)|*|UP(v)| + |UP(v)| + |UP(v)| • Used in relsat [Bayardo and Shrag 1997] • Approximate Unit Propagation Count (AUPC) • Consider 2 levels of unit propagation through binary clauses [Goldberg and Novikov 2002] • #Bin(x) = number of binary clauses containing literal x • #Bin2(x) = Sum #Bin(y) for all binary clauses (x,y) Score(v) = #Bin(v) + #Bin2(v) + #Bin(v) + #Bin2(v)
New Heuristic: VSADS • Variable State Aware Decaying Sum (VSADS) • The score of a variable is the combination of its DLCS and VSIDS scores ScoreVSADS(v) = 0.5 * ScoreDLCS(v) + Max( ScoreVSIDS(v), ScoreVSIDS(v) ) • Intuition • VSIDS is strong if there are many learned clauses, weak if there are few
Results: Circuit Formulas X = time-out of 12 hours
Results: Logistics Formulas X = time-out of 12 hours
Summary: Variable Selection • VSADS best performance overall • Most robust: best or 2nd best • Better than DLCS or VSIDS alone • More expensive unit propagation heuristics usually slightly faster, but much worse on circuit benchmarks
Randomized Restarts • Randomize decisions and restart if too long • Decision randomly chosen from variables whose score is within 25% of the best • Kill run and restart after time limit • Good for SAT: great variance between runs • Bad for #SAT: less variance & each run worse • Exhaustive search less sensitive to order • Random decisions make the residual formulas diverge quickly and reduce cache hits
Backtracking Strategies • Standard non-chronological (far) backtracking: • At a conflict, learn a conflict clause • Backtrack to most recent literal in the clause • Good for SAT • Prunes only unsatisfiable portions of search space • Bad for #SAT • Many solutions may have been found before conflict was reached • Non-chronological backtracking can skip over non-empty portions of the search space, which will then be re-explored from scratch • Solution: only backtrack to parents of UNSAT components
Outline • Background • Heuristics for faster model counting • Component selection • Variable selection • Randomization • Backtracking • One-pass computation of all marginals • Comparison with Bayesian solvers
Computing All Marginals • Task: In one counting pass, • Compute number of models in which each variable is true • Equivalently: compute marginal probabilities • Approach • Each recursion computes a vector of marginals • At branch point: compute left and right vectors, combine with vector sum • Need to account for fact that some variables may appear in one branch, but be eliminated (reduced) in the other • Cache vectors, not just counts • Reasonable overhead: 10% - 40% slower than counting
All_Marginals (Sketch) AM(F, Marginals) if (F ==) return 1 if ( F) return 0 Process the left branch LValue = 1/2 select v F to branch LMarginals[v] = 0 // by definition for each G components_of (F|v) LValue *= AM(G, LMarginals) // recursion for each u F if u (F|v) LMarginals[u] *= LValue // adjusting else LMarginals[u] = LValue / 2 // eliminated vars do the similar steps for the right branch Marginals = sumVector (LMarginals, RMarginals) Marginals /= (LValue + RValue) // normalizing return LValue + RValue
Outline • Background • Heuristics for faster model counting • Component selection • Variable selection • Randomization • Backtracking • One-pass computation of all marginals • Comparison with Bayesian solvers
Effectiveness of Heuristics • How to evaluate the final result of Cachet 2005’s improved heuristics? • Best model-counting program – but few competitors! • One method: compare against Bayesian inference engines • Both problems #P-complete • Simple translation Bayes nets #SAT
Exact Bayesian Inference Algorithms • Comparison: • Junction tree [Shenoy & Shafer 90], [Jensen et al. 90] • Recursive conditioning [Darwiche 01] • Value elimination [Bacchus et al. 03] • Weighted model counting [Sang, Beame and Kautz 05] • Other methods: • Cutset conditioning [Dechter 90] • Variable elimination [Zhang & Poole 94]
Implementations • Junction trees (Netica) • Space/time exponential largest clique size • If fits in memory, very fast; all marginals • Recursive conditioning (Samiam) • DPLL, static var ordering, dtree based heuristic • Sub-problem caching, any space; all marginals • Value elimination (Valelim) • DPLL, static var ordering • Dependency set caching, single query node • Weighted model counting (Cachet) • DPLL, dynamic var ordering, component caching • Clause learning; all marginals
S T Network Problems A fraction of nodes are deterministic, specified as a parameter ratio
Results of ratio=0.5 10 problems of each size, X=memory out or time out
Strategic Plan Recognition • Task: • Given a planning domain described by STRIPS operators, initial and goal states, and time horizon • Infer the marginal probabilities of each action • Abstraction of strategic plan recognition: • We know enemy’s capabilities and goals, what will it do? • Modified Blackbox planning system [Kautz & Selman 1999] to translate such plans to both • Weighted model counting (CNF) • Standard Bayes net specification language
BN of a 3-step plan graph BN of a 3-step plan graph
Summary • Good strategies for model counting: • Best-first component selection • VSADS variable selection • Poor strategies • Randomization • Aggressive Non-chronological backtracking • Can generalize to efficiently compute all marginals • Model counting can be useful for Bayesian inference • Problems with large cliques, many deterministic nodes