看起来你可以做到这一点的包boolean.py(从皮普与pip install boolean.py
安装):
from boolean import BooleanAlgebra
exp1 = algebra.parse("(A*B*C) + (D*E) + (F*G*H*I)")
# Convert to conjunctive normal form (CNF)
exp2 = algebra.cnf(exp1)
print(exp2.pretty())
输出:
AND(
OR(
Symbol('A'),
Symbol('D'),
Symbol('F')
),
OR(
Symbol('A'),
Symbol('D'),
Symbol('G')
),
OR(
Symbol('A'),
Symbol('D'),
Symbol('H')
),
OR(
Symbol('A'),
Symbol('D'),
Symbol('I')
),
OR(
Symbol('A'),
Symbol('E'),
Symbol('F')
),
OR(
Symbol('A'),
Symbol('E'),
Symbol('G')
),
OR(
Symbol('A'),
Symbol('E'),
Symbol('H')
),
OR(
Symbol('A'),
Symbol('E'),
Symbol('I')
),
OR(
Symbol('B'),
Symbol('D'),
Symbol('F')
),
OR(
Symbol('B'),
Symbol('D'),
Symbol('G')
),
OR(
Symbol('B'),
Symbol('D'),
Symbol('H')
),
OR(
Symbol('B'),
Symbol('D'),
Symbol('I')
),
OR(
Symbol('B'),
Symbol('E'),
Symbol('F')
),
OR(
Symbol('B'),
Symbol('E'),
Symbol('G')
),
OR(
Symbol('B'),
Symbol('E'),
Symbol('H')
),
OR(
Symbol('B'),
Symbol('E'),
Symbol('I')
),
OR(
Symbol('C'),
Symbol('D'),
Symbol('F')
),
OR(
Symbol('C'),
Symbol('D'),
Symbol('G')
),
OR(
Symbol('C'),
Symbol('D'),
Symbol('H')
),
OR(
Symbol('C'),
Symbol('D'),
Symbol('I')
),
OR(
Symbol('C'),
Symbol('E'),
Symbol('F')
),
OR(
Symbol('C'),
Symbol('E'),
Symbol('G')
),
OR(
Symbol('C'),
Symbol('E'),
Symbol('H')
),
OR(
Symbol('C'),
Symbol('E'),
Symbol('I')
)
)
哇错过了所有的!我甚至不知道CNF和DNF,非常具有启发性。事实上,我想要的是DNF CNF。谢谢,我们会更详细地研究模块。 – Dionys