On 11-Sep-16 18:19, Lincoln A Baxter wrote: > Having followed this discussion (more or less, I have no clue what the > MiuneMcCluskey alorithm is), but I like Logic::Minimise > > Lincoln Quine-McCluskey is used to simplify boolean functions. It's similar to Karnaugh maps, which may be familiar to more folks. But if you think of it as an expression optimizer similar to what compilers do, you have the idea.
The problem is that QM is NP-hard O(3**n/n). For non-toy problems, one partitions the problem manually and/or uses something else: e.g. EXPRESSO (BSD licensed, could be incorporated into a Perl module). Logic::Minimize works for me. (I won't get into the British vs. U.S. spelling argument.) I don't see much point in a pure QM implementation, except as an educational exercise for students. I also don't see much point in separating the algorithm from Logic::Minimize; as an implementation detail, you could have Logic::Minimize::Expresso and/or Logic::Minimize::QM as internal namespaces - mostly to allow for any breakthroughs in algorithms. The inputs and outputs of any such algorithm are stable, so changing under the covers should not be hard. Simply wrapping an algorithm to create the Logic::Minimizer namespace doesn't add any value; there's no additional (meaningful) level of abstraction. Timothe Litt ACM Distinguished Engineer -------------------------- This communication may not represent the ACM or my employer's views, if any, on the matters discussed.
smime.p7s
Description: S/MIME Cryptographic Signature