应该对整数集使用哪种约束求解器?

what kind of constraint solver should one use over sets of integers?

我迷失在可用的各种约束求解器的海洋中。我正在写一个数据库查询程序。

给定一个方程,其中的项是非连续整数的集合,我的目标是简化方程,因为某些项的影响可能完全重叠或完全不相交 in/from 结果集,因此使它们可丢弃。

示例:

({1, 2} ∪ {3, 4}) - {4, 6}

作为第一步可以简化为:

({1, 2} ∪ {3, 4}) - {4}

因为 {6} ⊄ ({1, 2} ∪ {3, 4}), 等等

这样的问题可以使用什么样的求解器?我发现 library(fd_sets) 这似乎是合适的。然而,ECLiPSE 并不是一个易于使用的平台。还有其他解决方案吗?

({1, 2} ∪ {3, 4}) - {4, 6}

不是一个方程(或约束),所以没有什么要解决的。所以你不需要求解器。它是一个(常量)表达式。我们可以很容易地评估这个表达式并打印结果。例如。直截了当 Python:

print({1,2}.union({3,4}).difference({4,6}))

会给

{1, 2, 3}

Python 知道集合,所以这很容易。要自动从 ({1, 2} ∪ {3, 4}) - {4, 6} 转到 {1,2}.union({3,4}).difference({4,6}),您需要构建一个解析器。这不是很难做到(对于熟练的程序员)。如果您最喜欢的编程语言不了解集合,创建数据结构和函数来处理集合并不太困难。许多语言都支持集合(例如标准 C++ 库有集合)。

PS。要完整:Python 还允许中缀集运算符。例如:

print({1,2} | {3,4} - {4,6})