带有未使用变量的布尔表达式?
Boolean expressions with unused variables?
我正在审核知识库,并注意到一些布尔表达式,例如:
A 和(A 或 B)
这个布尔表达式值得注意,因为 B 的值实际上是无关紧要的。这可能表明知识库中存在错误,因为表达式的创建者可能打算让它考虑它包含的所有变量。
我有两个问题:
- 这种现象有名字吗?
- 是否有任何有效的算法来识别这些 unused/redundant 变量?我可以使用真值表来做到这一点,但这对于长表达式来说是无效的。我还研究了最小化算法,但其中许多算法并不能保证找到最佳解决方案,因此我不确定它们是否能保证识别出任何未使用的变量。
- 您正在查看 吸收
- 这些被称为 逻辑等价 并且存在众所周知和已证明的等价列表。算法可能类似于编程语言的解释器或编译器使用的算法,它们通常基于树。您可以使用树来确定您要查找的表达式类型,然后将其与其对应的逻辑等价性进行匹配。重要的是您还阅读了运算符的优先级。
链接
我正在审核知识库,并注意到一些布尔表达式,例如:
A 和(A 或 B)
这个布尔表达式值得注意,因为 B 的值实际上是无关紧要的。这可能表明知识库中存在错误,因为表达式的创建者可能打算让它考虑它包含的所有变量。
我有两个问题:
- 这种现象有名字吗?
- 是否有任何有效的算法来识别这些 unused/redundant 变量?我可以使用真值表来做到这一点,但这对于长表达式来说是无效的。我还研究了最小化算法,但其中许多算法并不能保证找到最佳解决方案,因此我不确定它们是否能保证识别出任何未使用的变量。
- 您正在查看 吸收
- 这些被称为 逻辑等价 并且存在众所周知和已证明的等价列表。算法可能类似于编程语言的解释器或编译器使用的算法,它们通常基于树。您可以使用树来确定您要查找的表达式类型,然后将其与其对应的逻辑等价性进行匹配。重要的是您还阅读了运算符的优先级。
链接