增量削弱Maxsat
Incremental weakening Maxsat
我对 MaxSat 有所了解,并且已经使用 MSU3 以及使用 minisat API 的顺序编码实现了一个朴素的 Maxsat 求解器
我想知道是否有办法加快这个求解器的速度。
我带着这篇论文来了:
https://www.researchgate.net/publication/264936663_Incremental_Cardinality_Constraints_for_MaxSAT
那是关于增量弱化及其使用累加器编码的实现
有没有办法通过顺序编码实现增量弱化?
这会大大加快速度吗?
Is there a way to implement incremental weakening with sequential encoding?
顺序计数器编码可以增量构建,也就是说,给定一个电路<= k(1..n)
这可以扩展到<= k+1(1..n)
和<= k(1..n+1)
.当在 OptiMathSAT 中声明一个新的软条款时,我们在两个方向上将 顺序计数器 电路的大小递增 1
(即 k
、n
).我看不出为什么这不能仅在一个维度上完成。
快速浏览一下结果部分后,看起来 迭代编码 明显优于 增量弱化 技术。因此,您不妨尝试实施前一种方法而不是后者。
迭代编码 技术需要从<= 0(1..n)
开始并沿k
维度逐步扩展顺序计数器编码。 (论文中提到,有些MaxSAT算法可能要在两个方向都增加电路)。
顺序计数器电路的输入将是每个软条款的否定文字,因此电路计算伪造的软条款的数量。
在第一次迭代中,s_n_1
将被假定为 false
,将所有输入反向传播到 false
(即强制所有软条款是 true
).
如果第一步是unsat
,扩展<= 0(1..n)
编码<= 1(1..n)
,然后假设s_n_1
是true
和 s_n_2
在下一次可满足性检查时成为 false
。在搜索过程中,一旦一个软条款被分配给 false
,其余的软条款就会反向传播到 true
,除非发现新的冲突。
重复。
Will that give a considerable speed up?
如果没有可靠的实验,很难预测性能。但是,我的建议是去做:实施这种方法应该那么难,而且论文的结果看起来很可靠。
顺序计数器编码需要O(n * k)
个子句,与累加器编码相同的数字在应用[=53之后=]k-简化 在 pag。 6、O(n * k)
辅助变量。鉴于类似的内存占用,也可能获得类似的性能提升。
我对 MaxSat 有所了解,并且已经使用 MSU3 以及使用 minisat API 的顺序编码实现了一个朴素的 Maxsat 求解器
我想知道是否有办法加快这个求解器的速度。
我带着这篇论文来了: https://www.researchgate.net/publication/264936663_Incremental_Cardinality_Constraints_for_MaxSAT
那是关于增量弱化及其使用累加器编码的实现
有没有办法通过顺序编码实现增量弱化?
这会大大加快速度吗?
Is there a way to implement incremental weakening with sequential encoding?
顺序计数器编码可以增量构建,也就是说,给定一个电路<= k(1..n)
这可以扩展到<= k+1(1..n)
和<= k(1..n+1)
.当在 OptiMathSAT 中声明一个新的软条款时,我们在两个方向上将 顺序计数器 电路的大小递增 1
(即 k
、n
).我看不出为什么这不能仅在一个维度上完成。
快速浏览一下结果部分后,看起来 迭代编码 明显优于 增量弱化 技术。因此,您不妨尝试实施前一种方法而不是后者。
迭代编码 技术需要从<= 0(1..n)
开始并沿k
维度逐步扩展顺序计数器编码。 (论文中提到,有些MaxSAT算法可能要在两个方向都增加电路)。
顺序计数器电路的输入将是每个软条款的否定文字,因此电路计算伪造的软条款的数量。
在第一次迭代中,
s_n_1
将被假定为false
,将所有输入反向传播到false
(即强制所有软条款是true
).如果第一步是
unsat
,扩展<= 0(1..n)
编码<= 1(1..n)
,然后假设s_n_1
是true
和s_n_2
在下一次可满足性检查时成为false
。在搜索过程中,一旦一个软条款被分配给false
,其余的软条款就会反向传播到true
,除非发现新的冲突。重复。
Will that give a considerable speed up?
如果没有可靠的实验,很难预测性能。但是,我的建议是去做:实施这种方法应该那么难,而且论文的结果看起来很可靠。
顺序计数器编码需要O(n * k)
个子句,与累加器编码相同的数字在应用[=53之后=]k-简化 在 pag。 6、O(n * k)
辅助变量。鉴于类似的内存占用,也可能获得类似的性能提升。