繁体   English   中英

如何在 python 中使用并集、交集和否定来简化集合表达式

[英]How to simplify set expressions with union, intersection, and negation, in python

是否有任何内置的 python 库可用于生成简化的集合表达式?

例如,假设我们有一个集合表达式(A∩B)U(A∩C) 这可以简化为A∩(BUC)

类似地(A∩B)U(A∩!B)可以简化为A

我希望在 python 中实现这个逻辑。 我发现sympy可以用来简化像x**2 + 2*x + 1这样的代数表达式,但我不确定它是否能处理集合表达式。

是的。 集合表达式等价于 boolean 表达式,而sympy 可以简化这些.

你的例子:

  • (A∩B)U(A∩C)等价于(a & b) | (a & c) (a & b) | (a & c) ,
  • (A∩B)U(A∩!B)等价于(a & b) | (a & ~b) (a & b) | (a & ~b) ,
from sympy import *
a, b, c = symbols('a, b, c')

expr = (a & b) | (a & c)
simplify_logic(expr)  # produces: a∧(b∨c)

expr = (a & b) | (a & ~b)
simplify_logic(expr)  # produces: a

可以在此处找到其他一些示例。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM