约束比较器
你知道一个我可以用来比较约束(不仅是数学)的工具吗?这是更容易的例子来解释:约束比较器
A)简单的例子
C1: x < 0 && y * y < x
C2: x < 0 && y * y < x - 1
我想知道,如果C2是强则C1,它是。这意味着C2的(x,y)也在C1中。
B)复杂的例子
C1: x > 0 && y > 0
C2: x > 0
C2较弱则C1,因为它不含有Y上的约束。
我可以试着手写东西,但我不认为这是一个解决方案。我知道解决约束的问题是不可判定的,但我想知道在这方面做了哪些工作。
谢谢,
您是否试图确定约束C1是否包含C2(意思是不可能找到一组满足C1且不满足C2并且不满足C2 - > C2的值在所有情况下均为真,但可能而不是相反)?当C1包含C2时,C2可以被删除,因为它不会将任何语义添加到问题中。
如果是这种情况,我建议您为此使用CSP解算器。它比看起来更容易。例如,Eclipse CSP求解器(这里的Eclipse不反驳IDE平台,求解器具有相同的名称)可以通过定义良好的API从Java程序轻松调用,因此您可以将问题发送给解算器,看哪个约束更弱
感谢您的回答,我会尝试Eclipse CSP求解器,会给你“问题回答”;-)。 – 2010-08-20 13:25:01
这是一个有趣的问题!你可以编写一个脚本来解析每个约束,并检查每个约束的单独比较数,尽管我不确定这是否是衡量它们的最好方法。
我认为这是微不足道的。我可以为我的案例编写一个虚拟工具,但我认为有人曾经这样做过。 – 2010-08-18 11:05:53
单独比较的数量不会让你变得更强/更弱的链接,是吗?例如,他的第一个例子在每种情况下都有相同数量的比较,但它们并不一样强。 – Stephen 2010-08-18 11:09:10
不,因为我没有正常形式的约束(最简单的可能)。我可以有这样的东西:x 0 && x * x * x 2010-08-18 11:11:07
出于好奇,在什么情况下你可能需要这样做? – Nobody 2010-08-18 11:03:15
我正在研究分析代码库并生成一些报告的项目。例如private foo(int x){if(x = 0)。如果bar是{if(x 2010-08-18 11:09:11