NAME
Algorithm::QuineMcCluskey  solve QuineMcCluskey setcover problems
SYNOPSIS
use Algorithm::QuineMcCluskey;
#
# Fivebit, 12minterm Boolean expression test with don'tcares
#
my $q = Algorithm::QuineMcCluskey>new(
width => 5,
minterms => [ 0, 5, 7, 8, 10, 11, 15, 17, 18, 23, 26, 27 ],
dontcares => [ 2, 16, 19, 21, 24, 25 ]
);
my $result = $q>solve();
or
my $q = Algorithm::QuineMcCluskey>new(
width => 5,
columnstring => '10001011011000111001110000'
);
In either case $result will be "(AC') + (A'BDE) + (B'CE) + (C'E')"
.
DESCRIPTION
This module minimizes Boolean expressions using the QuineMcCluskey algorithm.
Object Methods
new([<attribute> => value, ...])
Creates the QuineMcCluskey object. The attributes are:
 'width'

The number of variables (columns) in the Boolean expression.
This is a required attribute.
 'minterms'

An array reference of terms representing the 1values of the Boolean expression.
 'maxterms'

An array reference of terms representing the 0values of the Boolean expression. This will also indicate that you want the expression in productofsum form, instead of the default sumofproduct form.
 'dontcares'

An array reference of terms representing the don'tcarevalues of the Boolean expression. These represent inputs that simply shouldn't happen (e.g., numbers 11 through 15 in a base 10 system), and therefore don't matter to the result.
 'columnstring'

Present the entire list of values of the boolean expression as a single string. The values are ordered from left to right in the string. For example, a simple twovariable AND equation would have a string "0001".
 'dc'

Default value: ''
Change the representation of the don'tcare character. The don'tcare character is used both in the columnstring, and internally as a place holder for eliminated variables in the equation. Some of those internals may be examined via other methods.
 'title'

A title for the problem you are solving.
 'vars'

Default value: ['A' .. 'Z']
The variable names used to form the equation. The names will be taken from the leftmost first:
my $f1 = Algorithm::QuineMcCluskey>new( width => 4, maxterms => [1 .. 11, 13, 15], vars => ['w' .. 'z'] );
The names do not have to be single characters, e.g.:
vars => ['a0', 'a1', 'b0', 'b1']
solve()
Returns a string of the Boolean equation.
complement()
Returns a new object that's the complement of the existing object:
my $qc = $q>complement();
print $qc>solve(), "\n";
Prints "(ABC) + (A'B'D'E) + (BD'E) + (CE')"
.
dual()
Returns a new object that's the dual of the existing object:
my $qd = $q>dual();
print $qd>solve(), "\n";
Prints "(ABCE') + (A'B'C') + (B'DE') + (C'E)"
.
to_columnstring()
Return a string made up of the function column. Position 0 in the string is the 0th row of the column, and so on.
to_boolean()
Generating Boolean expressions
AUTHOR
Darren M. Kulp <darren@kulp.ch>