对于像这样的变量数组
IntVar[][] array = VF.boolMatrix("example", 5, 10, solver);它们之间的区别是什么
solver.post(ICF.arithm(array[i][j], "=", 0));和
array[i][j] = VariableFactory.fixed(0, solver);在eg方面是一个优于另一个。需要更少的空间,更快的求解,更少的回溯?
发布于 2016-04-21 15:49:07
arrayi = VariableFactory.fixed(0,solver);更有效,因为固定视图消耗更少的内存(对于BoolVar来说差别不大,但对于依赖于BitSet列表域实现的IntVar来说是这样的),并且它避免了创建无用的约束。这些元素非常小,但当乘以10000时,它可以在运行时产生差异。此外,它们被缓存:如果两个视图具有相同的值,那么实际上只会创建一个新对象。然而,回溯数量将保持不变(除非搜索启发式是基于随机性或约束数量等)。
最好的
让-纪梵希愤怒的https://www.cosling.com/
https://stackoverflow.com/questions/36554787
复制相似问题