cudd  3.0.0
The University of Colorado Decision Diagram Package
Macros | Functions
cuddWindow.c File Reference

Functions for variable reordering by window permutation. More...

#include "util.h"
#include "cuddInt.h"
Include dependency graph for cuddWindow.c:

Macros

#define ABC   1
 
#define BAC   2
 
#define BCA   3
 
#define CBA   4
 
#define CAB   5
 
#define ACB   6
 
#define ABCD   1
 
#define BACD   7
 
#define BADC   13
 
#define ABDC   8
 
#define ADBC   14
 
#define ADCB   9
 
#define DACB   15
 
#define DABC   20
 
#define DBAC   23
 
#define BDAC   19
 
#define BDCA   21
 
#define DBCA   24
 
#define DCBA   22
 
#define DCAB   18
 
#define CDAB   12
 
#define CDBA   17
 
#define CBDA   11
 
#define BCDA   16
 
#define BCAD   10
 
#define CBAD   5
 
#define CABD   3
 
#define CADB   6
 
#define ACDB   4
 
#define ACBD   2
 

Functions

int cuddWindowReorder (DdManager *table, int low, int high, Cudd_ReorderingType submethod)
 Reorders by applying the method of the sliding window. More...
 
static int ddWindow2 (DdManager *table, int low, int high)
 Reorders by applying a sliding window of width 2. More...
 
static int ddWindowConv2 (DdManager *table, int low, int high)
 Reorders by repeatedly applying a sliding window of width 2. More...
 
static int ddPermuteWindow3 (DdManager *table, int x)
 Tries all the permutations of the three variables between x and x+2 and retains the best. More...
 
static int ddWindow3 (DdManager *table, int low, int high)
 Reorders by applying a sliding window of width 3. More...
 
static int ddWindowConv3 (DdManager *table, int low, int high)
 Reorders by repeatedly applying a sliding window of width 3. More...
 
static int ddPermuteWindow4 (DdManager *table, int w)
 Tries all the permutations of the four variables between w and w+3 and retains the best. More...
 
static int ddWindow4 (DdManager *table, int low, int high)
 Reorders by applying a sliding window of width 4. More...
 
static int ddWindowConv4 (DdManager *table, int low, int high)
 Reorders by repeatedly applying a sliding window of width 4. More...
 

Detailed Description

Functions for variable reordering by window permutation.

Author
Fabio Somenzi

Function Documentation

◆ cuddWindowReorder()

int cuddWindowReorder ( DdManager table,
int  low,
int  high,
Cudd_ReorderingType  submethod 
)

Reorders by applying the method of the sliding window.

Tries all possible permutations to the variables in a window that slides from low to high. The size of the window is determined by submethod. Assumes that no dead nodes are present.

Returns
1 in case of success; 0 otherwise.
Side effects None
Parameters
tableDD table
lowlowest index to reorder
highhighest index to reorder
submethodwindow reordering option

◆ ddPermuteWindow3()

static int ddPermuteWindow3 ( DdManager table,
int  x 
)
static

Tries all the permutations of the three variables between x and x+2 and retains the best.

Assumes that no dead nodes are present.

Returns
the index of the best permutation (1-6) in case of success; 0 otherwise.
Side effects None

◆ ddPermuteWindow4()

static int ddPermuteWindow4 ( DdManager table,
int  w 
)
static

Tries all the permutations of the four variables between w and w+3 and retains the best.

Assumes that no dead nodes are present.

Returns
the index of the best permutation (1-24) in case of success; 0 otherwise.
Side effects None

◆ ddWindow2()

static int ddWindow2 ( DdManager table,
int  low,
int  high 
)
static

Reorders by applying a sliding window of width 2.

Tries both permutations of the variables in a window that slides from low to high. Assumes that no dead nodes are present.

Returns
1 in case of success; 0 otherwise.
Side effects None

◆ ddWindow3()

static int ddWindow3 ( DdManager table,
int  low,
int  high 
)
static

Reorders by applying a sliding window of width 3.

Tries all possible permutations to the variables in a window that slides from low to high. Assumes that no dead nodes are present.

Returns
1 in case of success; 0 otherwise.
Side effects None

◆ ddWindow4()

static int ddWindow4 ( DdManager table,
int  low,
int  high 
)
static

Reorders by applying a sliding window of width 4.

Tries all possible permutations to the variables in a window that slides from low to high. Assumes that no dead nodes are present.

Returns
1 in case of success; 0 otherwise.
Side effects None

◆ ddWindowConv2()

static int ddWindowConv2 ( DdManager table,
int  low,
int  high 
)
static

Reorders by repeatedly applying a sliding window of width 2.

Tries both permutations of the variables in a window that slides from low to high. Assumes that no dead nodes are present. Uses an event-driven approach to determine convergence.

Returns
1 in case of success; 0 otherwise.
Side effects None

◆ ddWindowConv3()

static int ddWindowConv3 ( DdManager table,
int  low,
int  high 
)
static

Reorders by repeatedly applying a sliding window of width 3.

Tries all possible permutations to the variables in a window that slides from low to high. Assumes that no dead nodes are present. Uses an event-driven approach to determine convergence.

Returns
1 in case of success; 0 otherwise.
Side effects None

◆ ddWindowConv4()

static int ddWindowConv4 ( DdManager table,
int  low,
int  high 
)
static

Reorders by repeatedly applying a sliding window of width 4.

Tries all possible permutations to the variables in a window that slides from low to high. Assumes that no dead nodes are present. Uses an event-driven approach to determine convergence.

Returns
1 in case of success; 0 otherwise.
Side effects None