我正在尝试使用sympy
简化布尔表达式,但是我遇到了一个问题:
from sympy.logic import simplify_logic,to_cnf,to_dnf
from sympy import Symbol,S
# Simplified to:
#'deputy | mayor | (city & director) | (city & manager) | (director & investment & of)'
# Which seems as non simplifed expression
str(simplify_logic(eval('(city&manager)|(city&director)|(deputy)|(mayor)|(director&of&investment)')))
但是这个:
# Simplified to:
# 'sales & (director | manager)'
# Which is simplified!
str(simplify_logic(eval('(sales&manager)|(sales&director)')))
如何简化第一个表达式?
谢谢!
编辑:通过简化,我指的是使用最少数量的运算符来表达。
注:所有单词都被定义为符号:
for word in words:
vars()[word]=Symbol(word)
'(city&(manager|director))|(deputy)|(mayor)|(director&of&investment)'
这样的结果,SOP和POS都不会给您一个结果。 (该表达式不是有效的POS,SOP,CNF或DNF形式) - Aviv Yaniv