27.09.2013 Views

a modern C++ library for the manipulation of Boolean functions

a modern C++ library for the manipulation of Boolean functions

a modern C++ library for the manipulation of Boolean functions

SHOW MORE
SHOW LESS

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

2 Reduced Ordered Binary Decision<br />

Diagrams<br />

2.1 Definition<br />

2.1.1 ROBDD definition<br />

Reduced Ordered Binary Decision Diagrams (ROBDDs), first introduced by Randal<br />

E. Bryant in [Bry86] along with <strong>the</strong> basic algorithms that manipulate <strong>the</strong>m, are <strong>the</strong><br />

fundamental data structure used by CORAL to represent <strong>Boolean</strong> <strong>functions</strong>. A ROBDD<br />

is a rooted, directed, and acyclic graph where leaf nodes are ei<strong>the</strong>r 0 or 1 (<strong>the</strong> terminal<br />

nodes) and each non-leaf node n is labeled with a <strong>Boolean</strong> variable nvar ∈ Vars on which<br />

<strong>the</strong> represented <strong>Boolean</strong> function depends (nvar ∈ vars(f)). Each non-leaf node has two<br />

successors nfalse and ntrue, called <strong>the</strong> false successor and <strong>the</strong> true successor respectively.<br />

Both successors can be ei<strong>the</strong>r a leaf node or a non-leaf node labeled with a variable that<br />

is greater than nvar (this explains <strong>the</strong> Ordered part <strong>of</strong> <strong>the</strong> name). Finally, no duplicate<br />

nodes must be present (this explains <strong>the</strong> Reduced part <strong>of</strong> <strong>the</strong> name). As Bryant himself<br />

showed, it is possible to trans<strong>for</strong>m any Ordered Binary Decision Diagram into a ROBDD<br />

by applying a few simple reduction rules:<br />

Remove duplicate terminal nodes: Keep no more than one copy <strong>of</strong> <strong>the</strong> terminal nodes<br />

0 and 1 and redirect all edges that were directed towards <strong>the</strong> removed duplicates to<br />

<strong>the</strong> remaining copies.<br />

Remove duplicate non-terminal nodes: If two or more non-terminal nodes are labeled<br />

with <strong>the</strong> same variable and share <strong>the</strong> same true and false successors, keep only one<br />

copy and redirect all edges that were directed towards <strong>the</strong> removed duplicates to<br />

<strong>the</strong> remaining copy.<br />

Remove nodes having a unique successor: Remove all nodes that have <strong>the</strong>ir true successor<br />

equal to <strong>the</strong>ir false successor and redirect all edges that were directed towards<br />

<strong>the</strong>m to <strong>the</strong>ir successor.<br />

The rules must be applied repeatedly until a fixpoint is reached, as applying one rule<br />

may lead to fur<strong>the</strong>r reduction possibilities <strong>for</strong> <strong>the</strong> o<strong>the</strong>rs. We now give a <strong>for</strong>mal definition<br />

<strong>for</strong> ROBDDs:<br />

Definition 5. (ROBDDs.) If N is <strong>the</strong> set <strong>of</strong> nodes <strong>of</strong> a ROBDD <strong>the</strong>n N satisfies<br />

N ⊆ {0, 1} ∪ Vars × N × N.

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!