(this file is automatically generated from Java source)
Back to book index.

Z-BDD Tutorial

This tutorial demonstrates basic Z-BDD operations

Z-BDD Initialization

There are several Z-BDD objects in JDD, they are however all created in a similar fashion to the BDD object. Consult BDD tutorial for more info.

The basic Z-BDD class is ZDD. It uses BDD-style initialization

It contains all the basic operations, which are:

This sequence of code builds all the examples found in Minato original paper:

Note that in contrast to BDDs, Z-BDD variables (here v1 and v2) are just number and no Z-BDD trees. You can't do stuff like int a = zdd.union(v1,v2)!!!

As with BDDs, you can visualize Z-BDD trees by single calls in JDD:

7. v2: 1, 1

{ base, v2 }
{ 00, 10 }

But you will probably prefer the DOT printer printDot(). It was used to produce the following images:

abcdefg






Additional Z-BDD operators

The ZDD class has some sub-classes with additional operators. These operators are used in more advanced applications. In some cases, the new operators outperform the basic Z-BDD operators, see for example the N Queens applet where a Z-BDD/CSP algorithms is included.

The ZDD2 object

ZDD2 contains additional operations for unate cube set algebra. These operations are shown below

The ZDDCSP object

ZDDCSP adds extra ZDD operations for CSP problems. it is based on 'On the properties of combination set operations', by Okuno, Minato and Isozaki.

The new operations are:

The ZDDGraph object

ZDDGraph is intended to [in near future] include common ZDD operations used in graph algorithms, as explained in Coudert's paper.

The graph-operations we are working on are:

Additional Z-BDD objects

There are several additional Z-BDD objects that are currently not documented in the API.