如何在不使用真值表的情况下用Python中的不关心项简化布尔表达式?

2024-04-26 15:11:34 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图将一个包含几百个布尔变量的布尔表达式简化为Ands形式(DNF)的OR。此外,还有不关心项可以用另一个布尔表达式表示。在

我发现有几个Python包,比如sypy,可以用于布尔表达式最小化。但是,它不能处理表达式格式中的不关心术语。在

例如

>>> from sympy.logic import SOPform
>>> from sympy import symbols
>>> w, x, y, z = symbols('w x y z')
>>> minterms = [[0, 0, 0, 1], [0, 0, 1, 1],
...             [0, 1, 1, 1], [1, 0, 1, 1], [1, 1, 1, 1]]
>>> dontcares = [[0, 0, 0, 0], [0, 0, 1, 0], [0, 1, 0, 1]]
>>> SOPform([w, x, y, z], minterms, dontcares)
Or(And(Not(w), z), And(y, z))

SOPform函数可以处理dontcares术语,但它需要真值表格式的术语,因为变量太多,不适合我的情况。在

另一个函数simplify_logic接受表达式格式,但没有dontcares terms选项。在

^{pr2}$

在Python中有没有一种方法可以在表达式格式中使用不关心的术语来最小化布尔表达式?在

谢谢你!在


Tags: and函数fromimport表达式格式术语symbols