Ordered Binary Decision Diagrams
[9/100%]Prove Lemma 92 on p. 277 by backward induction on .
Lemma 92: After executing the step for in the algorithm СокрУБДР (OBDD reduction), in the resulting diagram, for every and for every subfunction , where for , there is exactly one vertex — a source of a subdiagram realizing that subfunction.
Using Lemma 92 on p. 277, prove statement 2) of Theorem 91 on p. 276.
Theorem 91: if the algorithm СокрУБДР applied to an OBDD returns an OBDD , then (statement 2) is, for the given variable ordering, the unique reduced (up to isomorphism) OBDD of minimal size.
Lemma 92: After executing the step for in the algorithm СокрУБДР, in the resulting diagram, for every and for every subfunction , where for , there is exactly one vertex — a source of a subdiagram realizing that subfunction.
Prove that applying the algorithm from Section 14.3 yields a reduced OBDD.
The algorithm referred to (Section 14.3) builds an OBDD for top-down, by recursion on . If , is a constant and the OBDD consists of the two sinks and . Otherwise, form the two residual functions and , recursively build (a shared) OBDD realizing the distinct functions among (duplicates among them are identified, so at most one vertex is built per distinct residual function), and then: if , let the vertex for be the same vertex that already realizes ; otherwise add one new vertex labeled whose 0-child and 1-child are the (already-built, possibly shared) vertices realizing and respectively.
Prove that every Boolean function of variables can be realized as an OBDD with no more than internal vertices. Hint. Show how to transform the complete BDD.
Circuits made of functional elements are naturally realized as linear programs. Conversely, for decision trees and OBDDs, the natural program representation is branching programs, which include only conditional statements of the form If then Else and assignments and (see Chapter 18). These correspond to internal vertices of the diagrams and to sinks, respectively. Here and are again branching programs, and the variable contains the result.
Show how to construct, from an OBDD, a branching program computing the same function.
Write branching programs computing the functions represented by the OBDDs in Fig. 69 on p. 272 and in Fig. 74 on the previous page.
Construct minimal OBDDs for the two-argument functions: , .
Construct minimal OBDDs for the function
with respect to two orderings of the variables:
and
.
The value of the threshold function of variables with threshold equals 1 if and only if the input tuple contains at least ones:
Construct an OBDD for the threshold function in general form.
Construct a minimal OBDD for the threshold function .
Does the complexity of the minimal OBDD for threshold functions depend on the order of the variables?
Estimate the complexity of the minimal OBDD for the threshold function .
Construct minimal OBDDs realizing the functions from Problems 221 and 224 on p. 266.