gpt4 book ai didi

python - 分发 bool 逻辑表达式

转载 作者:太空宇宙 更新时间:2023-11-03 14:50:15 25 4
gpt4 key购买 nike

我有什么:

(A.B.C) + (D.E) + (F.G.H.I)

我想要使用分配律:

(A + D + F).(A + D + G).(A + D + H).(A + D + I).
(A + E + F).(A + E + G).(A + E + H).(A + E + I).
(B + D + F).(B + D + G).(B + D + H).(B + D + I).
(B + E + F).(B + E + G).(B + E + H).(B + E + I).
(C + D + F).(C + D + G).(C + D + H).(C + D + I).
(C + E + F).(C + E + G).(C + E + H).(C + E + I)

两个表达式是等价的。我使用分配律得到第二个:A + (B . C) ⇔ (A + B) 。 (A + C)

表达式可以更大,但始终由OR 分隔的AND 组组成。我正在寻找的是一个能够分发逻辑表达式的库。像 Sympy 这样的图书馆但应用于逻辑而不是代数。

最佳答案

Sympy 是完美的选择,看看 logic模块,特别是 Equivalentto_cnf函数,示例如下:

from sympy import *

A, B, C, D, E, F, G, H, I = symbols('A,B,C,D,E,F,G,H,I')

formula = (
(A & B & C) | (D & E) | (F & G & H & I)
)
formula2 = (
(A | D | F) & (A | D | G) & (A | D | H) & (A | D | I) &
(A | E | F) & (A | E | G) & (A | E | H) & (A | E | I) &
(B | D | F) & (B | D | G) & (B | D | H) & (B | D | I) &
(B | E | F) & (B | E | G) & (B | E | H) & (B | E | I) &
(C | D | F) & (C | D | G) & (C | D | H) & (C | D | I) &
(C | E | F) & (C | E | G) & (C | E | H) & (C | E | I)
)

print(to_cnf(formula))
print(Equivalent(to_cnf(formula), formula2))

结果:

(A | D | F) & (A | D | G) & (A | D | H) & (A | D | I) & (A | E | F) & (A | E | G) & (A | E | H) & (A | E | I) & (B | D | F) & (B | D | G) & (B | D | H) & (B | D | I) & (B | E | F) & (B | E | G) & (B | E | H) & (B | E | I) & (C | D | F) & (C | D | G) & (C | D | H) & (C | D | I) & (C | E | F) & (C | E | G) & (C | E | H) & (C | E | I)
True

关于python - 分发 bool 逻辑表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46323842/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com