cudd/cuddWindow.c File Reference

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

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

Defines

#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.
static int ddWindow2 (DdManager *table, int low, int high)
 Reorders by applying a sliding window of width 2.
static int ddWindowConv2 (DdManager *table, int low, int high)
 Reorders by repeatedly applying a sliding window of width 2.
static int ddPermuteWindow3 (DdManager *table, int x)
 Tries all the permutations of the three variables between x and x+2 and retains the best.
static int ddWindow3 (DdManager *table, int low, int high)
 Reorders by applying a sliding window of width 3.
static int ddWindowConv3 (DdManager *table, int low, int high)
 Reorders by repeatedly applying a sliding window of width 3.
static int ddPermuteWindow4 (DdManager *table, int w)
 Tries all the permutations of the four variables between w and w+3 and retains the best.
static int ddWindow4 (DdManager *table, int low, int high)
 Reorders by applying a sliding window of width 4.
static int ddWindowConv4 (DdManager *table, int low, int high)
 Reorders by repeatedly applying a sliding window of width 4.

Detailed Description

Functions for variable reordering by window permutation.

Author:
Fabio Somenzi

Copyright (c) 1995-2015, Regents of the University of Colorado

All rights reserved.

Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:

Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer.

Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution.

Neither the name of the University of Colorado nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission.

THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.


Function Documentation

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:
table DD table
low lowest index to reorder
high highest index to reorder
submethod window reordering option
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
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
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
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
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
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
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
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
 All Data Structures Files Functions Variables Typedefs Enumerations Defines

Generated on 31 Dec 2015 for cudd by  doxygen 1.6.1