BDD graph for the Boolean formula x1 * x2 + x3 * x4 + x5 * x6 + x7 * x8 using a good variable ordering
Visualization of the BDD for the Boolean formula x1 * x2 + x3 * x4 + ... + x19 * x20 using a bad variable ordering
The following is the RML (Relational Manipulation Language) code that I fed to CrocoPat
to produce the GraphViz dot files:
// RML program to generate BDD graphs for the formula
// x1 & x2 | x3 & x4 | x5 & x6 | x7 & x8,
// using two different variable orderings.
// "crocopat -e BDD_Variable_Ordering.rml" generates two files in dot format.
// "dot -Tsvg BDD_Variable_Ordering_Bad.dot -o BDD_Variable_Ordering_Bad.svg"
// generates a file in SVG format from the file in dot format.
// There are two ('Boolean') values for the variables x1, ..., x8.
DOM("0");
DOM("1");
// F is the name of the Boolean formula.
F(x1,x2,x3,x4,x5,x6,x7,x8) := (x1="1" & x2="1")
| (x3="1" & x4="1")
| (x5="1" & x6="1")
| (x7="1" & x8="1");
// Prints the BDD as graph in GraphViz dot format,
// using a good variable ordering resulting in linear size of the graph.
PRINT GRAPH( F(x1,x2,x3,x4,x5,x6,x7,x8) )
TO "BDD_Variable_Ordering_Good.dot";
// Prints the BDD as graph in GraphViz dot format,
// using a bad variable ordering resulting in exponential size of the graph.
// The first term of the conjunction sets the variable ordering.
PRINT GRAPH( TRUE(x1,x3,x5,x7,x2,x4,x6,x8) &
F(x1,x2,x3,x4,x5,x6,x7,x8) )
TO "BDD_Variable_Ordering_Bad.dot";;
Licenciranje
Ja, nosilac autorskih prava nad ovim delom, objavljujem isto pod sledećim licencama:
Data je dozvola da se kopira, distribuira i/ili menja ovaj dokument pod uslovima GNU-ove licence za slobodnu dokumentaciju, verzije 1.2 ili bilo koje novije verzije koju objavi Zadužbina za slobodni softver; bez nepromenljivih odeljaka i bez teksta na naslovnoj i zadnjoj strani. Tekst licence možete pročitati ovde.http://www.gnu.org/copyleft/fdl.htmlGFDLGNU Free Documentation Licensetruetrue
da delite – da umnožavate, raspodeljujete i prenosite delo
da prerađujete – da preradite delo
Pod sledećim uslovima:
autorstvo – Morate da date odgovarajuće zasluge, obezbedite vezu ka licenci i naznačite da li su izmene napravljene. Možete to uraditi na bilo koji razuman manir, ali ne na način koji predlaže da licencator odobrava vas ili vaše korišćenje.
deliti pod istim uslovima – Ako izmenite, preobrazite ili dogradite ovaj materijal, morate podeliti svoje doprinose pod istom ili kompatibilnom licencom kao original.
Ova licenca je dodata na ovu datoteku kao deo ažuriranja GFDL licence.http://creativecommons.org/licenses/by-sa/3.0/CC BY-SA 3.0Creative Commons Attribution-Share Alike 3.0truetrue
da delite – da umnožavate, raspodeljujete i prenosite delo
da prerađujete – da preradite delo
Pod sledećim uslovima:
autorstvo – Morate da date odgovarajuće zasluge, obezbedite vezu ka licenci i naznačite da li su izmene napravljene. Možete to uraditi na bilo koji razuman manir, ali ne na način koji predlaže da licencator odobrava vas ili vaše korišćenje.
deliti pod istim uslovima – Ako izmenite, preobrazite ili dogradite ovaj materijal, morate podeliti svoje doprinose pod istom ili kompatibilnom licencom kao original.
== Summary == {{Information| |Description = BDD graph for the Boolean formula x1 * x2 + x3 * x4 + x5 * x6 + x7 * x8 using a bad variable ordering |Source = self-made using CrocoPat, a tool for relational programming, and GraphViz dot, a tool for graph lay