我已经给出了表达式,我需要将它们简化为正常形式,即不应该有任何代数身份。
代数身份参考如下。
X + 0 = X
X + 0 = X
X * 1 = X
X * 0 = 0
X / 1 = X
0 / X = 0
X-X = 0
X + X = 2X
X \ X = 1
样本表达式及其预期输出如下,
示例1:
给定表达式:(X *(Y / Y)-X)* X
简化表达式:0例2:
给定表达式:((X + X)/ X)*(Y + Y-Y)
简化表达式:2 * Y例3:
给定表达式:(A B / 1)(C + 1-C)
简化表达式:A * B
我怀疑的是我如何表示任何变量,如X或Y,并在prolog中执行此身份以进行此简化。
输入表格或输出表格没有限制。
答案 0 :(得分:1)
这是一个有趣的问题,因为您展示的代数身份不足来推导您展示的示例。
例如,让我们考虑第一个示例中出现的子项 Y/Y
。
您可以使用您展示的任何代数身份来简化此术语吗?
回答:不。 练习:为什么不呢?
您可能想要将“身份”X/X = 1
添加到您的身份中,但这会使身份不正确。这意味着您将能够获得明显不包含的身份。
要查看此内容,请考虑您可以减少的术语0/0
:
0/X
→0
X/X
→1
因此错误地从这些身份中获取0 = 1
。
有关这个有趣主题的更多信息,请阅读术语重写系统(TRS)。