1 namespace Gecode {
namespace Set {
namespace LDSB {
3 template<
class View,
int n,
class Val,
unsigned int a>
10 :
LDSBBrancher<View,n,Val,
a>(home, x, vs, vsc, syms, nsyms, bf),
17 int dest = this->_nsyms - 1;
18 for (
int i = 0 ;
i < this->_nsyms - seen ;
i++) {
21 this->_syms[
i] = this->_syms[dest];
22 this->_syms[dest] =
t;
27 _nValueSymmetries = seen;
28 _nNonValueSymmetries = this->_nsyms - seen;
31 template<
class View,
int n,
class Val,
unsigned int a>
36 _nNonValueSymmetries(b._nNonValueSymmetries),
37 _nValueSymmetries(b._nValueSymmetries),
38 _nCopiedSyms(b._nCopiedSyms),
39 _leftBranchValues(b._leftBranchValues),
80 if (intersection.
size() < 2)
82 int *
a =
new int[intersection.
size()];
83 for (
int i = 0 ;
i < intersection.
size() ;
i++) {
84 a[
i] = intersection[
i];
92 template<
class View,
int n,
class Val,
unsigned int a>
96 if (_nValueSymmetries > 0) {
99 if (choicePos != _prevPos) {
100 if (_prevPos != -1) {
102 for (
int j = _nNonValueSymmetries ; j < this->_nsyms ; j++) {
103 this->_syms[j] = _copiedSyms[
i];
107 for (
int i = 0 ; i < _nCopiedSyms ; i++) {
114 this->_syms[this->_nsyms] = ns;
116 this->_nValueSymmetries++;
123 _prevPos = choicePos;
124 if (_nCopiedSyms > 0) home.
free(_copiedSyms, _nCopiedSyms);
125 _nCopiedSyms = _nValueSymmetries;
128 for (
int j = _nNonValueSymmetries ; j < this->_nsyms ; j++) {
140 template<
class View,
int n,
class Val,
unsigned int a>
149 int choicePos = pvc->
pos().pos;
153 updatePart1(home, choicePos);
158 template<
class View,
int n,
class Val,
unsigned int a>
164 int choicePos = pvc.
pos().pos;
165 int choiceVal = pvc.
val();
168 updatePart1(home, choicePos);
176 _leftBranchValues =
IntSet(ia);
181 for (
int i = 0 ;
i < this->_nsyms ;
i++)
182 this->_syms[
i]->update(
Literal(choicePos, choiceVal));
191 for (
int i = 0 ;
i < nliterals ;
i++) {
201 template<
class View,
int n,
class Val,
unsigned int a>
207 template<
class View,
int n,
class Val,
unsigned int a>