0

这是一个非常晦涩的问题,但我想我会试试运气。

我需要为一组未知变量生成无效的不等式组合。

例如,给定 a、b 和 c,我想生成这些:

a < b && a ≥ c && b ≤ c
a ⩵ b && a ≤ c && b > c
a ⩵ b && a > c && b ≤ c
a > b && a ≤ c && b ≥ c

以上都评估为假。

我需要能够为任意数量的变量生成它们。

如何才能做到这一点?

4

3 回答 3

0

不失一般性,所有变量都来自有限集 {1,2,..,n},其中 n = 变量数。像“a i < a j
” 这样的每个条件实际上都是所有 n n 个点的有限集的子集。 因此,只需搜索具有相应子集的空交集的条件组合。

于 2013-05-24T12:11:59.087 回答
0

首先,写出如下命题:

P1: a <= b <= c <= ... <= zzz

然后写

P2: a = b = c = ... = zzz

P3: zzz <= a <= b <= c <= ... <= zzy

然后写

P1 & ¬P2 & P3

这是错误的。

我希望您现在会反驳说此解决方案不能满足您的要求。我相信它满足您告诉我们的您的要求,如有必要,请告诉我们更多。

是的,我知道这更像是评论而不是答案。

于 2013-05-24T12:35:36.537 回答
0

给定表示数值的 n 个变量,最小的无效(不可行)不等式集具有以下形式:

a_1 ≥ a_2 ≥ ... ≥ a_n ≥ a_1

将这 n 个弱不等式中的任何一个变为强不等式>。[注意:如果您允许不等式(斜线等于),则使用的字体尚不清楚,但将其添加到弱不等式的循环中也会产生一组不可行的条件。]

这种不可行的集合可以用几种方式来阐述。变量可以任意排列(除了改变强不等式的位置),并且可以将额外的不等式添加到最小集(进一步的限制保持不可行)。作为后者的一个特例,一个以上的弱不等式可以变为强不等式。

另请注意,n-1 个变量上的任何无效不等式集都可以(被动地)扩展到 n 个变量上的无效集。

于 2013-05-24T12:57:19.500 回答