我迷失在各种可用约束解算器的海洋中。我正在写一个数据库查询程序。
给定一个等式,其中项是非连续整数的集合,我的目标是简化等式,因为某些项的影响可能在结果集中完全重叠或完全不相交,从而使它们可丢弃。
示例:
({1,2}∪{3,4}) - {4,6}
作为第一步,可以简化为:
({1,2}∪{3,4}) - {4}
由于{6}⊄({1,2}∪{3,4}),等等。
对于这样的问题,可以使用什么类型的求解器?我找到了library(fd_sets),它看起来很合适。然而,ECLiPSE并不是一个容易使用的平台。还有其他的解决方案吗?
发布于 2019-07-29 14:10:40
({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}),您需要构建一个解析器。这并不是很难做到(对于一个熟练的程序员来说)。如果您最喜欢的编程语言不知道集合,那么创建数据结构和函数来处理集合并不是太困难。许多语言都支持sets (例如,标准C++库有sets)。
PS。完整: Python还允许插入集运算符。例如:
print({1,2} | {3,4} - {4,6}) https://stackoverflow.com/questions/57241715
复制相似问题