1
3
编辑:我要重申一下,因为其他答案似乎都假设了一系列已经确认的事情: 如果你能用以下的方式陈述你的条件(以及只有一个是真的约束条件) Presburger arithmetic ,然后可以编写一个决策过程来静态验证该属性。从上面的例子看来,这是完全可以实现的。 “Blunt Instrument”方法基本上是与自动定理证明器或SMT解算器(在这里,您将尝试证明语句“存在满足constraint1 x or constraint2的某个值x”)的否定。我以编程方式与 CVC3 以前,我发现和它合作很好,但我的理解是,它已经被其他SMT解决方案所超越。 我认为,你为解决这个问题所做的任何其他事情,最终都可能接近于我所建议的一些工具的实现。根据具体的约束是如何指定的,您可能可以不必为诸如 普氏算法 . |
2
1
一般来说,没有,但是如果你真正要问的是,给定一组有限的自变量和常量,由不相等的布尔逻辑组合构成的条件是否可能,那么就有希望了。您可以通过将变量与出现在不等式中的常量(以及这些常量的+1和-1)排列在一起,并验证保持为真的条件的数量始终为1来彻底检查。 |
3
1
如果您想找出是否只有一个条件是真的(两个或多个可能条件中的一个),可以参考下面的xor问题: xor-of-three-values . 直接从答案中得出:
在你的情况下:
还有一个通用的解决方案,当任何条件为真时,都要增加一个计数,然后在测试完所有条件后,对照1检查计数。 |
4
0
你的基本条件是
最终条件是根据这些使用和 我们能假设所有的整数变量都是独立的吗? 在这些条件下,我假设它可以通过算法进行检查。我将把每个变量的所有有效范围放入一个数据结构中,并检查是否存在交集。 编辑:由于似乎不是这样,最好的解决方案可能是对不同类型的条件进行分组,以便对每个组中的条件进行静态评估。我从你的第一个描述中假定的条件类型将只是这些组中的一个。 |
Wadu Hek · 查找列表中唯一的重复项 2 年前 |
Johan Klemantan · 带条件的嵌套循环中的lambda 2 年前 |
Sudhanva c · 如何提高编码技能?[已关闭] 6 年前 |
Arie Wijaya · 无法将伪代码转换为java[已关闭] 6 年前 |
Adrian Rotama · 将十进制四舍五入到最接近的十次方的轨道 6 年前 |
Sawbonz · 为什么If语句不适用于Python和Pygame 6 年前 |
Kevin · 根据第一个组合框中插入的数字生成组合框 6 年前 |