AI-PBDD
view release on metacpan or search on metacpan
lib/AI/PBDD.pm view on Meta::CPAN
Decrease the reference count of a BDD.
=item B<localDeref($int)>
Same as C<deref>, since BuDDy does not distinguish between local and recursive derefs.
=back
=head2 BDD OPERATIONS
=over 4
=item B<$bdd = and($bdd1,$bdd2)>
BDD AND operation. The returned result is already referenced.
=item B<$bdd = or($bdd1,$bdd2)>
BDD OR operation. The returned result is already referenced.
=item B<$bdd1new = andTo($bdd1,$bdd2)>
BDD cumulative AND operation. The returned result is already referenced, while $bdd1 is de-referenced.
=item B<$bdd1new = orTo($bdd1,$bdd2)>
BDD cumulative OR operation. The returned result is already referenced, while $bdd1 is de-referenced.
=item B<$bdd = nand($bdd1,$bdd2)>
BDD NAND operation. The returned result is already referenced.
=item B<$bdd = nor($bdd1,$bdd2)>
BDD NOR operation. The returned result is already referenced.
=item B<$bdd = xor($bdd1,$bdd2)>
BDD XOR operation. The returned result is already referenced.
=item B<$bdd = ite($bdd_if,$bdd_then,$bdd_else)>
BDD ITE (If-Then-Else) operation, i.e. C<($bdd_if AND $bdd_then) OR (NOT $bdd_if AND $bdd_else)>. The returned result is already referenced.
=item B<$bdd = imp($bdd1,$bdd2)>
BDD IMPlication operation. The returned result is already referenced.
=item B<$bdd = biimp($bdd1,$bdd2)>
BDD BIIMPlication operation. The returned result is already referenced.
=item B<$bdd = not($bdd1)>
BDD NOT operation. The returned result is already referenced.
=item B<$cube = makeSet($vars,$size)>
=item B<$cube = makeSet($vars,$size,$offset)>
Create a cube (all-true minterm, e.g. C<$v1 AND $v2 AND $v3> where each C<$vi> is a BDD variable) of C<$size> variables from the array referenced by C<$vars>, starting at position 0 (or C<$offset>).
=item B<$bdd = exists($bdd1,$cube)>
BDD existential quantification. Parameter C<$cube> is an all-true minterm. The returned result is already referenced.
=item B<$bdd = forall($bdd1,$cube)>
BDD universal quantification. Parameter C<$cube> is an all-true minterm. The returned result is already referenced.
=item B<$bdd = relProd($bdd_left,$bdd_right,$cube)>
BDD relation-product (quantification and product computation in one pass): C<EXISTS $cube: $bdd_left AND $bdd_right>. The returned result is already referenced.
=item B<$bdd = restrict($bdd1,$minterm)>
Restrict a set of variables to constant values. The returned result is already referenced.
=item B<$bdd = constrain($bdd1,$bdd2)>
Compute the generalized co-factor of C<$bdd1> w.r.t. C<$bdd2>. The returned result is already referenced.
=back
=head2 VARIABLES REPLACEMENT
=over 4
=item B<$pair = createPair($vars_old,$vars_new)>
Create a function C<$pair: BDD variable -E<gt> BDD variable> that maps C<$vars_old-E<gt>[i]> to C<$vars_new-E<gt>[i]>.
=item B<deletePair($pair)>
Free the memory occupied by C<$pair>.
=item B<$bdd = replace($bdd1,$pair)>
Replace the variables in a BDD according to the given pair. The returned result is already referenced.
=item B<showPair($pair)>
Print a pair.
=back
=head2 BDD ANALYSIS
=over 4
=item B<$cube = support($bdd)>
BDD support set as a cube.
=item B<$cnt = nodeCount($bdd)>
Number of nodes a BDD.
=item B<$minterm = satOne($bdd)>
One arbitrary minterm (satisfying variable assignment), unless C<$bdd> equals 0.
lib/AI/PBDD.pm view on Meta::CPAN
=item B<$bdd_then = internal_then($bdd)>
Get the THEN-node of a BDD.
=item B<$bdd_else = internal_else($bdd)>
Get the ELSE-node of a BDD.
=back
=head2 DYNAMIC VARIABLE ORDERING
=over 4
=item B<reorder_setMethod($method)>
Set dynamic reordering heuristic. The possible values are:
=over 4
=item BDD_REORDER_NONE
No reordering.
=item BDD_REORDER_WIN2
Reordering using a sliding window of size 2. This algorithm swaps two adjacent variable blocks and if this results in more nodes then the two blocks are swapped back again. Otherwise the result is kept in the variable order. This is then repeated for...
=item BDD_REORDER_WIN3
Same as above but with a window size of 3.
=item BDD_REORDER_SIFT
Each block is moved through all possible positions. The best of these is then used as the new position. Potentially a very slow but good method.
=item BDD_REORDER_RANDOM
Select a random position for each variable.
=back
These constants are automatically exported by the package.
=item B<reorder_now>
Start dynamic reordering.
=item B<reorder_enableDynamic($enable)>
Enable/disable automatic dynamic reordering.
=item B<reorder_createVariableGroup($first,$last,$fix_group)>
Create a variable block, between the C<$first> and C<$last> variable indexes. Parameter C<$fix_group> decides whether to allow reordering inside the group or fix to current ordering.
=back
=head1 SEE ALSO
BDDs and their operations are described in many academic papers that can be found on the Internet. A good place to get started with BDDs is the wikipedia article L<http://en.wikipedia.org/wiki/Binary_decision_diagram>.
It can also be useful to look at the test code for this package in the C<t> directory, as well as at the JBDD documentation and exaples at L<http://javaddlib.sourceforge.net/jbdd/>.
=head1 VERSION
This man page documents "PBDD" version 0.01.
=head1 AUTHOR
Gianluca Torta
mailto:torta@di.unito.it
=head1 COPYRIGHT
Copyright (c) 2011 by Gianluca Torta. All rights reserved.
=head1 LICENSE
This package is free software; you can use, modify and redistribute
it under the same terms as Perl itself, i.e., at your option, under
the terms either of the "Artistic License" or the "GNU General Public
License".
The interface design and part of the C code and documentation are modifications of the JBDD package by Arash Vahidi. A copy of the JBDD licence can be found in the C<licences> directory of this package.
=head1 DISCLAIMER
This package is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
See the "GNU General Public License" for more details.
=cut
( run in 0.550 second using v1.01-cache-2.11-cpan-63c85eba8c4 )