标签: algorithm
鉴于以下一系列事实: 集合包含(A,B,C)中的至少1个 Set不包含任何(D,E,F)
关于有限集,其中每个成员可以是有限数量的值(比如整数1 ... m),我如何枚举满足事实列表的所有可能集合?
我意识到这个算法本质上是指数的,但我想改进我目前的天真实现,即列出所有可能的集合,并消除那些不满足事实列表中每个条件的集合。我想也许我可以使用动态编程并迭代有限值。即,首先只考虑与值1相关的事实,然后是值1,2,然后是值1,2,3等等。
答案 0 :(得分:0)
您的事实听起来很容易转换为SAT(布尔可满足性)实例。然后,您可以使用SAT求解器查找所有可能的解决方案(获取一个解决方案,添加一个消除该解决方案的子句,然后重复)。那里有很多优秀的SAT求解器,例如: zChaff