A Minimizer implementation to use Quine-Mccluskey algorithm to minimize the TruthTable.
This algorithm can always find the best solution, but is a NP-Complete algorithm, which means, for large-scale TruthTable minimization task, it will be really slow, and might run out of memory of JVM stack.
In this situation, users should consider switch to EspressoMinimizer, which uses heuristic algorithm providing a sub-optimized result.
Minimize a multi-input multi-output logic function given by the truth table table, with function output values on unspecified inputs treated as default, and return a minimized PLA-like representation of the function.
Minimize a multi-input multi-output logic function given by the truth table table, with function output values on unspecified inputs treated as default, and return a minimized PLA-like representation of the function.
Each bit of table[]._1 encodes one 1-bit input variable of the logic function, and each bit of default and table[]._2 represents one 1-bit output value of the function.
Value parameters
table
Truth table, can have don't cares in both inputs and outputs, specified as [(inputs, outputs), ...]
Attributes
Returns
Minimized truth table, [(inputs, outputs), ...]
Example
minimize(BitPat("b?"), Seq(
(BitPat("b000"), BitPat("b0")),
// (BitPat("b001"), BitPat("b?")), // same as default, can be omitted
// (BitPat("b010"), BitPat("b?")), // same as default, can be omitted
(BitPat("b011"), BitPat("b0")),
(BitPat("b100"), BitPat("b1")),
(BitPat("b101"), BitPat("b1")),
(BitPat("b110"), BitPat("b0")),
(BitPat("b111"), BitPat("b1")),
))