220 likes | 323 Views
Binary Decision Diagrams (BDDs). Daniel Kroening and Ofer Strichman. Part I. Reminders - What is Logic Proofs by deduction Proofs by enumeration Decidability, Soundness and Completeness some notes on Propositional Logic Deciding Propositional Logic SAT tools BDDs. . . . . .
E N D
Binary Decision Diagrams (BDDs) Daniel Kroening and OferStrichman
Part I • Reminders - • What is Logic • Proofs by deduction • Proofs by enumeration • Decidability, Soundness and Completeness • some notes on Propositional Logic • Deciding Propositional Logic • SAT tools • BDDs
Next: Binary Decision Diagrams • SAT looked for a satisfying solution to CNF • We will now examine a graph-based data structure called Binary Decision Diagrams. • It has several advantages and disadvantages comparing to SAT • Developed by Bryant [1986]. Next few slides are from the source …
A B C 0 1 A B C 0 1 Alternate Approach • Generate complete representation of function • Canonicity: functions are equal iff representations are identical (A ∧C) ∨(C ∧B) (A Ç B) Æ (C)
Decision Structures • Vertex represents decision • Follow green (dashed) line for value 0 • Follow red (solid) line for value 1 • Function value determined by leaf value. Truth Table Decision Tree
Variable Ordering • Assign arbitrary total ordering to variables • e.g., x1 < x2 < x3 • Variables must appear in ascending order along all paths OK Not OK x x 3 1 x 2 x x3 1
a a a Reduction Rule #1 Merge equivalent leaves
x x x x x x y z y z y z Reduction Rule #2 Merge isomorphic nodes
x y y Reduction Rule #3 Eliminate Redundant Tests
Example OBDD • Canonical representation of Boolean functions • For a given variable ordering • Two functions are equivalent iff graphs are isomorphic • Can be tested in linear time • Desirable property: simplest form is canonical. Initial Graph Reduced Graph (x1Ç x2) Æ x3
Constants Unique unsatisfiable function Unique tautology Satisfiability etc. • Conclusion: given a BDD it takes constant time to check: • Validity • Contradiction • Satisfiability • Is this a free lunch ? …
Linear Growth Exponential Growth Effect of Variable Ordering Good Ordering Bad Ordering
Selecting Good Variable Ordering • Intractable Problem • Even when problem represented as OBDD • i.e., to find optimum improvement to current ordering • Application-Based Heuristics • Exploit characteristics of application • e.g., Ordering for functions of combinational circuit • Traverse circuit graph depth-first from outputs to inputs
Building BDDs ‘from below’ • Starting from a binary decision tree is too hard for formulas with many variables. • Goal: construct the BDD ‘from below’.
Building BDDs ‘from below’ • For this we will need a function called APPLY: • Given the BDDs for f1 and f2, • and a binary connective F2 {Æ, Ç, !, $...} (any one of the 16 binary connectives), • Construct the BDD for f1F f2,
x 1 x 3 0 1 Building BDDs ‘from below’ • Def: a restriction of a function f to x=d, denoted f|x=d where x2 vars(f), d 2 {0,1}, is equal to f after assigning x=d. • Given the BDD of f, deriving the BDD of f|x=0 is simple: f|x2=1 f: (x1Ç x2) Æ x3 x 3 0 1
Now, APPLY (1/3) • Let v1,v2 denote that root nodes of f1, f2, respectively, with var(v1) = x1 and var(v2)=x2. • If v1 and v2 are leafs, f1F f2 is a leaf node with value val(v1) F val(v2) 1 Ç = 0 1 1 Æ = 0 0
x BDD for f1|x=1 Æf2|x=1 BDD for f1|x=0 Æf2|x=0 Now, APPLY (2/3) • If x1 = x2 = x, apply Shanon expansion:f1Ff2 = (:xÆf1|x=0Ff2|x=0 ÇxÆf1|x=1Ff2|x=1) x x Æ = BDD for f1|x=1 BDD for f2|x=1 BDD for f1|x=0 BDD for f2|x=0
Now, APPLY (3/3) • else, suppose x1 < x2 in the variable order.f1Ff2 = (:x1Æf1|x=0Ff2 Çx1Æf1|x=1Ff2) x1 x2 x1 Æ = BDD for f1|x=1 Æf2 BDD for f1|x=0 Æf2 BDD for f1|x1=1 BDD for f2|x2=1 BDD for f1|x1=0 BDD for f2|x2=0
BDD for f1|x1=0 Çf2 BDD for f1|x1=1 Çf2 x x 1 1 BDD for f1|x1=0 Çf2 = x2 x x x x Ç 2 2 2 2 = 0 1 1 1 1 1 0 0 0 0 0 Ç 0 = 0 1 Ç 1 = 1 BDDs from below: example. x 2 = Ç f2: :x2 f1: x1$ x2
BDD for f1|x=0 Çf2 BDD for f1|x=1 Çf2 x x x x 1 1 1 1 x x x x x x 2 2 2 2 2 2 = 1 1 1 1 1 0 0 0 0 BDDs from below: example. x 2 = Ç f2: :x2 f1: x1$ x2 f1Ç f2 = x1Ç (:x1Æ:x2) =
Comparing SAT to BDDs • BDD is a canonical data structure that represents the semantic of a function, i.e. all its solutions • Some applications (e.g. symbolic model checking) need canonicity to detect when two sets are equivalent. • Can require exponential space & time (highly sensitive to variable ordering) • SAT searches through CNF for a single solution • CNF is not canonical. • Poly-space algorithms exists. Time can be exponential.