Adiar 2.1.0
An External Memory Decision Diagram Library
|
A Zero-suppressed Decision Diagram (ZDD) represents a family of a set of \( n \) numbers, i.e. an \( S \subseteq 2^{\{ 0, 1, \dots, n-1 \}} \). More...
Classes | |
class | adiar::__zdd |
A (possibly unreduced) Zero-suppressed Decision Diagram. More... | |
class | adiar::zdd |
Reduced Ordered Zero-suppressed Decision Diagram. More... | |
Basic ZDD Constructors | |
To construct a more complex but well-structured zdd by hand, please use the zdd_builder (see builder) instead. | |
zdd | adiar::zdd_terminal (bool value) |
The ZDD of only a single terminal. | |
zdd | adiar::zdd_empty () |
The empty family, i.e. Ø . | |
zdd | adiar::zdd_null () |
The family only with the empty set, i.e. { Ø } . | |
zdd | adiar::zdd_ithvar (zdd::label_type var, const generator< zdd::label_type > &dom) |
The set of bitvectors over a given domain where var is set to true. | |
template<typename ForwardIt > | |
zdd | adiar::zdd_ithvar (zdd::label_type var, ForwardIt begin, ForwardIt end) |
The set of bitvectors over a given domain where var is set to true. | |
zdd | adiar::zdd_ithvar (zdd::label_type var) |
The set of bitvectors over the globally set domain where var is set to true. | |
zdd | adiar::zdd_nithvar (zdd::label_type var, const generator< zdd::label_type > &dom) |
The set of bitvectors over a given domain where var is set to false. | |
template<typename ForwardIt > | |
zdd | adiar::zdd_nithvar (zdd::label_type var, ForwardIt begin, ForwardIt end) |
The set of bitvectors over a given domain where var is set to false. | |
zdd | adiar::zdd_nithvar (zdd::label_type var) |
The set of bitvectors over the globally set domain where var is set to false. | |
zdd | adiar::zdd_vars (const generator< zdd::label_type > &vars) |
The family { { 1, 2, ..., k } }. | |
template<typename ForwardIt > | |
zdd | adiar::zdd_vars (ForwardIt begin, ForwardIt end) |
The family { { 1, 2, ..., k } }. | |
zdd | adiar::zdd_point (const generator< zdd::label_type > &vars) |
The family { { 1, 2, ..., k } } with a single bit-vector. | |
template<typename ForwardIt > | |
zdd | adiar::zdd_point (ForwardIt begin, ForwardIt end) |
The family { { 1, 2, ..., k } } with a single bit-vector. | |
zdd | adiar::zdd_singleton (zdd::label_type var) |
The family { {i} } . | |
zdd | adiar::zdd_singletons (const generator< zdd::label_type > &vars) |
The family { {1}, {2}, ..., {k} }. | |
template<typename ForwardIt > | |
zdd | adiar::zdd_singletons (ForwardIt begin, ForwardIt end) |
The family { {1}, {2}, ..., {k} }. | |
zdd | adiar::zdd_powerset (const generator< zdd::label_type > &vars) |
The powerset of all given variables. | |
template<typename ForwardIt > | |
zdd | adiar::zdd_powerset (ForwardIt begin, ForwardIt end) |
The powerset of all given variables. | |
zdd | adiar::zdd_bot (const generator< zdd::label_type > &dom) |
Bottom of the powerset lattice. | |
template<typename ForwardIt > | |
zdd | adiar::zdd_bot (ForwardIt begin, ForwardIt end) |
Bottom of the powerset lattice. | |
zdd | adiar::zdd_bot () |
Bottom of the powerset lattice. | |
zdd | adiar::zdd_top (const generator< zdd::label_type > &dom) |
Top of the powerset lattice. | |
template<typename ForwardIt > | |
zdd | adiar::zdd_top (ForwardIt begin, ForwardIt end) |
Top of the powerset lattice. | |
zdd | adiar::zdd_top () |
Top of the powerset lattice. | |
Basic ZDD Manipulation | |
__zdd | adiar::zdd_binop (const zdd &A, const zdd &B, const predicate< bool, bool > &op) |
Apply a binary operator between the sets of two families. | |
__zdd | adiar::zdd_binop (const exec_policy &ep, const zdd &A, const zdd &B, const predicate< bool, bool > &op) |
Apply a binary operator between the sets of two families. | |
__zdd | adiar::zdd_union (const zdd &A, const zdd &B) |
The union of two families of sets. | |
__zdd | adiar::zdd_union (const exec_policy &ep, const zdd &A, const zdd &B) |
The union of two families of sets. | |
__zdd | adiar::operator| (const zdd &lhs, const zdd &rhs) |
zdd | adiar::operator+ (const zdd &A) |
__zdd | adiar::operator+ (const zdd &lhs, const zdd &rhs) |
__zdd | adiar::zdd_intsec (const zdd &A, const zdd &B) |
The intersection of two families of sets. | |
__zdd | adiar::zdd_intsec (const exec_policy &ep, const zdd &A, const zdd &B) |
The intersection of two families of sets. | |
__zdd | adiar::operator& (const zdd &lhs, const zdd &rhs) |
__zdd | adiar::operator* (const zdd &lhs, const zdd &rhs) |
__zdd | adiar::zdd_diff (const zdd &A, const zdd &B) |
The set difference of two families of sets. | |
__zdd | adiar::zdd_diff (const exec_policy &ep, const zdd &A, const zdd &B) |
The set difference of two families of sets. | |
__zdd | adiar::operator- (const zdd &A) |
__zdd | adiar::operator- (const zdd &lhs, const zdd &rhs) |
__zdd | adiar::zdd_change (const zdd &A, const generator< zdd::label_type > &vars) |
The symmetric difference between each set in the family and the given set of variables. | |
__zdd | adiar::zdd_change (const exec_policy &ep, const zdd &A, const generator< zdd::label_type > &vars) |
The symmetric difference between each set in the family and the given set of variables. | |
template<typename ForwardIt > | |
__zdd | adiar::zdd_change (const zdd &A, ForwardIt begin, ForwardIt end) |
The symmetric difference between each set in the family and the given set of variables. | |
template<typename ForwardIt > | |
__zdd | adiar::zdd_change (const exec_policy &ep, const zdd &A, ForwardIt begin, ForwardIt end) |
The symmetric difference between each set in the family and the given set of variables. | |
__zdd | adiar::zdd_complement (const zdd &A, const generator< zdd::label_type > &dom) |
Complement of A within the given domain. | |
__zdd | adiar::zdd_complement (const exec_policy &ep, const zdd &A, const generator< zdd::label_type > &dom) |
Complement of A within the given domain. | |
template<typename ForwardIt > | |
__zdd | adiar::zdd_complement (const zdd &A, ForwardIt begin, ForwardIt end) |
Complement of A within the given domain. | |
template<typename ForwardIt > | |
__zdd | adiar::zdd_complement (const exec_policy &ep, const zdd &A, ForwardIt begin, ForwardIt end) |
Complement of A within the given domain. | |
__zdd | adiar::zdd_complement (const zdd &A) |
Complement of A within the global Variable Domain. | |
__zdd | adiar::zdd_complement (const exec_policy &ep, const zdd &A) |
Complement of A within the global Variable Domain. | |
__zdd | adiar::operator~ (const zdd &A) |
__zdd | adiar::zdd_expand (const zdd &A, const generator< zdd::label_type > &vars) |
Expands the domain of the given ZDD to also include the given set of labels. | |
__zdd | adiar::zdd_expand (const exec_policy &ep, const zdd &A, const generator< zdd::label_type > &vars) |
Expands the domain of the given ZDD to also include the given set of labels. | |
template<typename ForwardIt > | |
__zdd | adiar::zdd_expand (const zdd &A, ForwardIt begin, ForwardIt end) |
Expands the domain of the given ZDD to also include the given set of labels. | |
template<typename ForwardIt > | |
__zdd | adiar::zdd_expand (const exec_policy &ep, const zdd &A, ForwardIt begin, ForwardIt end) |
Expands the domain of the given ZDD to also include the given set of labels. | |
__zdd | adiar::zdd_offset (const zdd &A, zdd::label_type var) |
Subset that do not include the given element. | |
__zdd | adiar::zdd_offset (const exec_policy &ep, const zdd &A, zdd::label_type var) |
Subset that do not include the given element. | |
__zdd | adiar::zdd_offset (const zdd &A) |
Subset that do not include the top variable. | |
__zdd | adiar::zdd_offset (const exec_policy &ep, const zdd &A) |
Subset that do not include the top variable. | |
__zdd | adiar::zdd_offset (const zdd &A, const generator< zdd::label_type > &vars) |
Subset that do not include the given set of variables. | |
__zdd | adiar::zdd_offset (const exec_policy &ep, const zdd &A, const generator< zdd::label_type > &vars) |
Subset that do not include the given set of variables. | |
template<typename ForwardIt > | |
__zdd | adiar::zdd_offset (const zdd &A, ForwardIt begin, ForwardIt end) |
Subset that do not include the given set of variables. | |
template<typename ForwardIt > | |
__zdd | adiar::zdd_offset (const exec_policy &ep, const zdd &A, ForwardIt begin, ForwardIt end) |
Subset that do not include the given set of variables. | |
__zdd | adiar::zdd_onset (const zdd &A, zdd::label_type var) |
Subset that do include the given element. | |
__zdd | adiar::zdd_onset (const exec_policy &ep, const zdd &A, zdd::label_type var) |
Subset that do include the given element. | |
__zdd | adiar::zdd_onset (const zdd &A) |
Subset that do include the top variable. | |
__zdd | adiar::zdd_onset (const exec_policy &ep, const zdd &A) |
Subset that do include the top variable. | |
__zdd | adiar::zdd_onset (const zdd &A, const generator< zdd::label_type > &vars) |
Subset that do include the given set of variables. | |
__zdd | adiar::zdd_onset (const exec_policy &ep, const zdd &A, const generator< zdd::label_type > &vars) |
Subset that do include the given set of variables. | |
template<typename ForwardIt > | |
__zdd | adiar::zdd_onset (const zdd &A, ForwardIt begin, ForwardIt end) |
Subset that do include the given set of variables. | |
template<typename ForwardIt > | |
__zdd | adiar::zdd_onset (const exec_policy &ep, const zdd &A, ForwardIt begin, ForwardIt end) |
Subset that do include the given set of variables. | |
__zdd | adiar::zdd_project (const zdd &A, const predicate< zdd::label_type > &dom) |
Project family of sets onto a domain, i.e. remove from every set all variables not within the domain. | |
__zdd | adiar::zdd_project (const exec_policy &ep, const zdd &A, const predicate< zdd::label_type > &dom) |
Project family of sets onto a domain, i.e. remove from every set all variables not within the domain. | |
__zdd | adiar::zdd_project (const zdd &A, const generator< zdd::label_type > &dom) |
Project family of sets onto a domain, i.e. remove from every set all variables not within the domain. | |
__zdd | adiar::zdd_project (const exec_policy &ep, const zdd &A, const generator< zdd::label_type > &dom) |
Project family of sets onto a domain, i.e. remove from every set all variables not within the domain. | |
template<typename ForwardIt > | |
__zdd | adiar::zdd_project (const zdd &A, ForwardIt begin, ForwardIt end) |
Project family of sets onto a domain, i.e. remove from every set all variables not within the domain. | |
template<typename ForwardIt > | |
__zdd | adiar::zdd_project (const exec_policy &ep, const zdd &A, ForwardIt begin, ForwardIt end) |
Project family of sets onto a domain, i.e. remove from every set all variables not within the domain. | |
ZDD Predicates | |
bool | adiar::zdd_iscanonical (const zdd &A) |
Check whether a given ZDD is canonical. | |
bool | adiar::zdd_isterminal (const zdd &A) |
Whether this ZDD represents a terminal. | |
bool | adiar::zdd_isfalse (const zdd &A) |
Whether this ZDD represents false terminal. | |
bool | adiar::zdd_isempty (const zdd &A) |
Whether it is the empty family, i.e. Ø . | |
bool | adiar::zdd_istrue (const zdd &A) |
Whether this BDD represents true terminal. | |
bool | adiar::zdd_isnull (const zdd &A) |
Whether it is the null family, i.e. { Ø } . | |
bool | adiar::zdd_ispoint (const zdd &A) |
Whether it contains a single bit-vector a , i.e. A = { a }. | |
bool | adiar::zdd_equal (const zdd &A, const zdd &B) |
Whether they represent the same family. | |
bool | adiar::zdd_equal (const exec_policy &ep, const zdd &A, const zdd &B) |
Whether they represent the same family. | |
bool | adiar::operator== (const zdd &lhs, const zdd &rhs) |
bool | adiar::zdd_unequal (const zdd &A, const zdd &B) |
Whether they represent two different families. | |
bool | adiar::zdd_unequal (const exec_policy &ep, const zdd &A, const zdd &B) |
Whether they represent two different families. | |
bool | adiar::operator!= (const zdd &lhs, const zdd &rhs) |
bool | adiar::zdd_subseteq (const zdd &A, const zdd &B) |
Whether one family is a subset or equal to the other. | |
bool | adiar::zdd_subseteq (const exec_policy &ep, const zdd &A, const zdd &B) |
Whether one family is a subset or equal to the other. | |
bool | adiar::operator<= (const zdd &lhs, const zdd &rhs) |
bool | adiar::operator>= (const zdd &lhs, const zdd &rhs) |
bool | adiar::zdd_subset (const zdd &A, const zdd &B) |
Whether one family is a strict subset of the other. | |
bool | adiar::zdd_subset (const exec_policy &ep, const zdd &A, const zdd &B) |
Whether one family is a strict subset of the other. | |
bool | adiar::operator< (const zdd &lhs, const zdd &rhs) |
bool | adiar::operator> (const zdd &lhs, const zdd &rhs) |
bool | adiar::zdd_disjoint (const zdd &A, const zdd &B) |
Whether the two families are disjoint. | |
bool | adiar::zdd_disjoint (const exec_policy &ep, const zdd &A, const zdd &B) |
Whether the two families are disjoint. | |
ZDD Counting Operations | |
size_t | adiar::zdd_nodecount (const zdd &A) |
The number of (internal) nodes used to represent the family of sets. | |
zdd::label_type | adiar::zdd_varcount (const zdd &A) |
The number of variables that exist in the family of sets, i.e. the number of levels in the ZDD. | |
uint64_t | adiar::zdd_size (const zdd &A) |
The number of sets in the family of sets. | |
uint64_t | adiar::zdd_size (const exec_policy &ep, const zdd &A) |
The number of sets in the family of sets. | |
Set Elements | |
void | adiar::zdd_support (const zdd &A, const consumer< zdd::label_type > &cb) |
Get (in ascending order) all of the variable labels that occur in the family. | |
template<typename OutputIt , typename = enable_if<!is_convertible<OutputIt, consumer<zdd::label_type>>>> | |
OutputIt | adiar::zdd_support (const zdd &A, OutputIt iter) |
Copy all of the variable labels (in ascending order) that occur in the family into the given container. | |
zdd::label_type | adiar::zdd_topvar (const zdd &f) |
Get the root's variable label. | |
zdd::label_type | adiar::zdd_minvar (const zdd &A) |
Get the minimal occurring variable in the family. | |
zdd::label_type | adiar::zdd_maxvar (const zdd &A) |
Get the maximal occurring variable in the family. | |
bool | adiar::zdd_contains (const zdd &A, const generator< zdd::label_type > &a) |
Whether the family includes the given set of labels. | |
template<typename ForwardIt > | |
bool | adiar::zdd_contains (const zdd &A, ForwardIt begin, ForwardIt end) |
Whether the family includes the given set of labels. | |
zdd | adiar::zdd_minelem (const zdd &A) |
Retrieves the lexicographically smallest set a in A. | |
void | adiar::zdd_minelem (const zdd &A, const consumer< zdd::label_type > &cb) |
Retrieves the lexicographically smallest set a in A. | |
template<typename OutputIt , typename = enable_if<!is_convertible<OutputIt, consumer<zdd::label_type>>>> | |
OutputIt | adiar::zdd_minelem (const zdd &A, OutputIt iter) |
Retrieves the lexicographically smallest set a in A. | |
zdd | adiar::zdd_maxelem (const zdd &A) |
Retrieves the lexicographically largest set a in A. | |
void | adiar::zdd_maxelem (const zdd &A, const consumer< zdd::label_type > &cb) |
Retrieves the lexicographically largest set a in A. | |
template<typename OutputIt , typename = enable_if<!is_convertible<OutputIt, consumer<zdd::label_type>>>> | |
OutputIt | adiar::zdd_maxelem (const zdd &A, OutputIt iter) |
Retrieves the lexicographically largest set a in A. | |
Conversion to ZDDs | |
__zdd | adiar::zdd_from (const bdd &f, const generator< zdd::label_type > &dom) |
Obtains the ZDD that represents the same function/set as the given BDD within the given domain. | |
__zdd | adiar::zdd_from (const exec_policy &ep, const bdd &f, const generator< zdd::label_type > &dom) |
Obtains the ZDD that represents the same function/set as the given BDD within the given domain. | |
template<typename ForwardIt > | |
__zdd | adiar::zdd_from (const bdd &f, ForwardIt begin, ForwardIt end) |
Obtains the ZDD that represents the same function/set as the given BDD within the given domain. | |
template<typename ForwardIt > | |
__zdd | adiar::zdd_from (const exec_policy &ep, const bdd &f, ForwardIt begin, ForwardIt end) |
Obtains the ZDD that represents the same function/set as the given BDD within the given domain. | |
__zdd | adiar::zdd_from (const bdd &f) |
Obtains the ZDD that represents the same function/set as the given BDD within the global Variable Domain. | |
__zdd | adiar::zdd_from (const exec_policy &ep, const bdd &f) |
Obtains the BDD that represents the same function/set as the given ZDD within the global domain. | |
Dot Files of ZDDs | |
void | adiar::zdd_printdot (const zdd &A, std::ostream &out=std::cout, bool include_id=false) |
Output a DOT drawing of a ZDD to the given output stream. | |
void | adiar::zdd_printdot (const zdd &A, const std::string &file_name, bool include_id=false) |
Output a DOT drawing of a ZDD to the file with the given name. | |
A Zero-suppressed Decision Diagram (ZDD) represents a family of a set of \( n \) numbers, i.e. an \( S \subseteq 2^{\{ 0, 1, \dots, n-1 \}} \).
The zdd class takes care of reference counting and optimal garbage collection of the underlying files. To ensure the most disk-space is available, try to garbage collect the zdd objects as quickly as possible and/or minimise the number of lvalues of said type.
zdd adiar::operator+ | ( | const zdd & | A | ) |
__zdd adiar::operator- | ( | const zdd & | A | ) |
Apply a binary operator between the sets of two families.
A | ZDD for the left-hand-side of the operator |
B | ZDD for the right-hand-side of the operator |
op | Binary predicate to combine the two families. |
zdd adiar::zdd_bot | ( | const generator< zdd::label_type > & | dom | ) |
Bottom of the powerset lattice.
dom | Generator function of the variables in descending order. These values may not exceed zdd::max_label . |
Bottom of the powerset lattice.
begin | Single-pass forward iterator that provides the domain's variables in descending order. The variables may not exceed zdd::max_label . |
end | Marks the end for begin . |
The symmetric difference between each set in the family and the given set of variables.
A | ZDD to apply with the other. |
vars | Generator function of labels to flip in ascending order. These values may not exceed zdd::max_label . |
The symmetric difference between each set in the family and the given set of variables.
A | ZDD to apply with the other. |
begin | Single-pass forward iterator that provides the to-be flipped variables in ascending order. These values may not exceed zdd::max_label . |
end | Marks the end for begin . |
Complement of A within the global Variable Domain.
A | family of sets to complement |
A
.Complement of A within the given domain.
A | family of sets to complement |
dom | Labels of the domain in ascending order |
Complement of A within the given domain.
A | family of sets to complement |
begin | Single-pass forward iterator that provides the domain's variables in ascending order. These values may not exceed zdd::max_label . |
end | Marks the end for begin . |
Whether the family includes the given set of labels.
A | Set of interest |
a | Generator of a bit-vector in ascending order. All variables geneated should be smaller than or equal to zdd::max_label . |
Whether the family includes the given set of labels.
A | Set of interest |
begin | Single-pass forward iterator of the set of labels in ascending order. All its values should be smaller than or equals to zdd::max_label . |
end | Marks the end for begin . |
The set difference of two families of sets.
Expands the domain of the given ZDD to also include the given set of labels.
Adds don't care nodes on each levels in vars
. That is, this essentially is the inverse of the zdd_project
and lifts the set of sets unprojects to a larger domain.
A | Family of set to expand. |
vars | Generator function of labels to unproject in ascending order. No variables it generates may already exist in A or exceed zdd::max_label . |
Expands the domain of the given ZDD to also include the given set of labels.
A | Family of set to expand. |
begin | Single-pass forward iterator that provides the to-be unprojected variables in ascending order. These may not be present in A or exceed zdd::max_label . |
end | Marks the end for begin . |
Obtains the ZDD that represents the same function/set as the given BDD within the global Variable Domain.
f | Boolean function with the given domain |
A
.Obtains the ZDD that represents the same function/set as the given BDD within the given domain.
f | Boolean function with the given domain |
dom | Domain of all variables in ascending order. All generated values should be smaller than or equals to zdd::max_label . |
Obtains the ZDD that represents the same function/set as the given BDD within the given domain.
f | Boolean function with the given domain |
begin | Single-pass forward iterator that provides the domain's variables in ascending order. None of its values may exceed zdd::max_label . |
end | Marks the end for begin . |
The intersection of two families of sets.
zdd adiar::zdd_ithvar | ( | zdd::label_type | var | ) |
The set of bitvectors over the globally set domain where var is set to true.
var | The variable to be forced to true. |
domain_isset() == true
and the variable var
should occur in the global domain. zdd adiar::zdd_ithvar | ( | zdd::label_type | var, |
const generator< zdd::label_type > & | dom | ||
) |
The set of bitvectors over a given domain where var is set to true.
This function is (given the same domain of variables) semantically equivalent to bdd_ithvar
even though the ZDD DAG does not at all look like the BDD DAG.
var | The variable to be forced to true. |
dom | Generator function of the domain in descending order. These variables should be smaller than or equals to zdd::max_label . |
var
should occur in dom
.invalid_argument | If dom is not in descending order. |
zdd adiar::zdd_ithvar | ( | zdd::label_type | var, |
ForwardIt | begin, | ||
ForwardIt | end | ||
) |
The set of bitvectors over a given domain where var is set to true.
var | The variable to be forced to true. |
begin | Single-pass forward iterator that provides the domain's variables in descending order. The variables may not exceed zdd::max_label . |
end | Marks the end for begin . |
var
should occur in dom
.invalid_argument | If the iterator does not provide values in descending order. |
Retrieves the lexicographically largest set a in A.
Outputs the trace of the high-most path to the true terminal. The resulting assignment is lexicographically largest, where every variable is treated as a digit and \( x_0 > x_1 > \dots \).
A | Set of sets of interest. |
Retrieves the lexicographically largest set a in A.
A | Set of sets of interest. |
cb | Callback function that is called with the variables of the largest set in ascending order of the levels of A . |
A != zdd_empty()
OutputIt adiar::zdd_maxelem | ( | const zdd & | A, |
OutputIt | iter | ||
) |
Retrieves the lexicographically largest set a in A.
A | Set of sets of interest. |
begin | Single-pass output iterator for where to place the output. |
zdd::label_type adiar::zdd_maxvar | ( | const zdd & | A | ) |
Get the maximal occurring variable in the family.
invalid_argument | If A is a terminal. |
Retrieves the lexicographically smallest set a in A.
Outputs the trace of the low-most path to the true terminal. The resulting assignment is lexicographically smallest, where every variable is treated as a digit and \( x_0 > x_1 > \dots \).
A | Set of sets of interest. |
Retrieves the lexicographically smallest set a in A.
A | Set of sets of interest. |
cb | Callback function that is called with the variables of the smallest set in ascending order of the levels of A . |
A != zdd_empty()
OutputIt adiar::zdd_minelem | ( | const zdd & | A, |
OutputIt | iter | ||
) |
Retrieves the lexicographically smallest set a in A.
A | Set of sets of interest. |
begin | Single-pass forward iterator for where to place the output. |
zdd::label_type adiar::zdd_minvar | ( | const zdd & | A | ) |
Get the minimal occurring variable in the family.
invalid_argument | If A is a terminal. |
zdd adiar::zdd_nithvar | ( | zdd::label_type | var | ) |
The set of bitvectors over the globally set domain where var is set to false.
var | The variable to be forced to false. |
domain_isset() == true
and the variable var
should occur in the global domain. zdd adiar::zdd_nithvar | ( | zdd::label_type | var, |
const generator< zdd::label_type > & | dom | ||
) |
The set of bitvectors over a given domain where var is set to false.
Creates a ZDD with a don't care chain of nodes to the true child except for the node for var
; this one instead is forced to be true.
var | The variable to be forced to false. |
dom | Generator function of the domain in descending order. The variables should be smaller than or equals to zdd::max_label . |
var
should occur in dom
.invalid_argument | If dom is not in descending order. |
zdd adiar::zdd_nithvar | ( | zdd::label_type | var, |
ForwardIt | begin, | ||
ForwardIt | end | ||
) |
The set of bitvectors over a given domain where var is set to false.
var | The variable to be forced to false. |
begin | Single-pass forward iterator that provides the domain's variables in descending order. The variables may not exceed zdd::max_label . |
end | Marks the end for begin . |
var
should occur in dom
.invalid_argument | If the iterator does not provide values in descending order. |
Subset that do not include the top variable.
A | Family of set |
invalid_argument | If A is a terminal. |
Subset that do not include the given set of variables.
A | Family of set |
vars | Generator function of the variable labels to filter on in ascending order. The values generated should not exceed zdd::max_label . |
Subset that do not include the given set of variables.
A | Family of set |
begin | Single-pass forward iterator that provides the variables to filter out in ascending order. These values may not exceed zdd::max_label . |
end | Marks the end for begin . |
__zdd adiar::zdd_offset | ( | const zdd & | A, |
zdd::label_type | var | ||
) |
Subset that do not include the given element.
A | Family of set |
var | Variable to include. |
Subset that do include the top variable.
A | Family of set |
invalid_argument | If A is a terminal. |
Subset that do include the given set of variables.
A | Family of set |
vars | Generator function of the variable labels to filter on in ascending order. The values generated may not exceed zdd::max_label |
Subset that do include the given set of variables.
A | Family of set |
begin | Single-pass forward iterator that provides the variables to filter out in ascending order. These values may not exceed zdd::max_label |
end | Marks the end for begin . |
__zdd adiar::zdd_onset | ( | const zdd & | A, |
zdd::label_type | var | ||
) |
Subset that do include the given element.
A | Family of set |
var | Variable to include. |
zdd adiar::zdd_point | ( | const generator< zdd::label_type > & | vars | ) |
The family { { 1, 2, ..., k } } with a single bit-vector.
Creates the ZDD for a set with a single bit-vector, i.e. a point.
vars | Generator function of the variables in descending order. The variables may not exceed zdd::max_label . |
invalid_argument | If vars are not in descending order. |
The family { { 1, 2, ..., k } } with a single bit-vector.
begin | Single-pass forward iterator that provides the variables in descending order. The variables may not exceed zdd::max_label . |
end | Marks the end for begin . |
invalid_argument | If the iterator does not provide values in descending order. |
zdd adiar::zdd_powerset | ( | const generator< zdd::label_type > & | vars | ) |
The powerset of all given variables.
Creates a ZDD with a don't care chain of nodes to the true child.
vars | Generator function of the variables in descending order. These values may not exceed zdd::max_label . |
invalid_argument | If vars are not in ascending order. |
The powerset of all given variables.
begin | Single-pass forward iterator that provides the variables in descending order. The variables may not exceed zdd::max_label |
end | Marks the end for begin . |
invalid_argument | If the iterator does not provide values in descending order. |
Project family of sets onto a domain, i.e. remove from every set all variables not within the domain.
A | Family of sets to project |
dom | Generator function, that produces the variables of the domain in descending order. They should not exceed zdd::max_label . |
Project family of sets onto a domain, i.e. remove from every set all variables not within the domain.
A | Family of sets to project |
dom | Predicate function that defines the domain. |
Project family of sets onto a domain, i.e. remove from every set all variables not within the domain.
A | Family of sets to project |
begin | Single-pass forward iterator that provides the domain in descending order. Its values should not exceed zdd::max_label |
end | Marks the end for begin . |
zdd adiar::zdd_singleton | ( | zdd::label_type | var | ) |
The family { {i} } .
Creates a ZDD of a single node with label var
and the children false and true. The given label must be smaller than zdd::max_label
.
var | The label of the desired variable to include |
invalid_argument | If var is a too large value. |
zdd adiar::zdd_singletons | ( | const generator< zdd::label_type > & | vars | ) |
The family { {1}, {2}, ..., {k} }.
Creates a ZDD with a chain of nodes on the 'low' arc to the true child, and false otherwise.
vars | Generator function of the variables in descending order. The variables may not exceed zdd::max_label . |
invalid_argument | If vars are not in descending order. |
The family { {1}, {2}, ..., {k} }.
begin | Single-pass forward iterator that provides the variables in descending order. The variables may not exceed zdd::max_label . |
end | Marks the end for begin . |
invalid_argument | If the iterator does not provide values in descending order. |
Get (in ascending order) all of the variable labels that occur in the family.
A | ZDD of interest. |
cb | Callback function that consumes the variable labels. |
OutputIt adiar::zdd_support | ( | const zdd & | A, |
OutputIt | iter | ||
) |
Copy all of the variable labels (in ascending order) that occur in the family into the given container.
A | ZDD of interest. |
begin | Single-pass output iterator for where to place the output. |
zdd adiar::zdd_top | ( | ) |
Top of the powerset lattice.
Since no set of variables is given, the global Variable Domain is used (if available).
zdd adiar::zdd_top | ( | const generator< zdd::label_type > & | dom | ) |
Top of the powerset lattice.
dom | Generator of the variables in descending order. These values may not exceed zdd::max_label . |
Top of the powerset lattice.
begin | Single-pass forward iterator that provides the domain's variables in descending order. These values may not exceed zdd::max_label . |
end | Marks the end for begin . |
zdd::label_type adiar::zdd_topvar | ( | const zdd & | f | ) |
Get the root's variable label.
invalid_argument | If A is a terminal. |
The union of two families of sets.
zdd adiar::zdd_vars | ( | const generator< zdd::label_type > & | vars | ) |
The family { { 1, 2, ..., k } }.
Creates a ZDD with a chain of nodes on the 'high' arc to the true child, and false otherwise.
vars | Generator function of the variables in descending order. The variables may not exceed zdd::max_label . |
invalid_argument | If vars are not in descending order. |
The family { { 1, 2, ..., k } }.
begin | Single-pass forward iterator that provides the variables in descending order. The variables may not exceed zdd::max_label . |
end | Marks the end for begin . |
invalid_argument | If the iterator does not provide values in descending order. |