Math 在整数集合上应该使用哪种约束求解器?

Math 在整数集合上应该使用哪种约束求解器?,math,set,logic,constraints,solver,Math,Set,Logic,Constraints,Solver,我迷失在各种约束解算器的海洋中。我正在写一个数据库查询程序 给定一个方程,其中项是非连续整数集,我的目标是简化该方程,因为某些项的影响可能在结果集中完全重叠或完全不相交,因此使它们可丢弃 例子: ({1,2}∪ {3,4}--{4,6} 作为第一步,可以简化为: ({1,2}∪ {3,4}--{4} 自{6}⊄ ({1, 2} ∪ {3,4})等 什么样的解算器可以用来解决这样的问题?我发现这似乎是合适的。然而,ECLiPSE并不是一个容易使用的平台。还有其他解决办法吗 ({1, 2} ∪ {3

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

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

例子: ({1,2}∪ {3,4}--{4,6}

作为第一步,可以简化为:

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

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

什么样的解算器可以用来解决这样的问题?我发现这似乎是合适的。然而,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++库中的集合)。p> 补充:Python还允许中缀集操作符。例如:

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

我认为这里没有太多问题需要解决。只是计算一个表达式。@ErwinKalvelagen好吧,输出变量将是最接近的表达式,不包含无用的变量。它可以更多地涉及更多的条款。当然,我可以通过搜索“a la Prolog”一个接一个地删除术语来做到这一点,但我认为在复杂表达式上使用专用解算器会快得多。