41 namespace Gecode {
namespace Int {
namespace LDSB {
45 : _variable(-1), _value(-1) {}
49 : _variable(idx), _value(val) {}
55 if (d > 0)
return true;
64 const Val&
n,
const Literal* literals,
66 :
PosValChoice<Val>(b,a,p,n), _literals(literals), _nliterals(nliterals)
93 for (
int i = 0 ;
i < _nliterals ;
i++) {
94 e << _literals[
i]._variable;
95 e << _literals[
i]._value;
101 template<
class View,
int n,
class Val,
unsigned int a>
116 template<
class View,
int n,
class Val,
unsigned int a>
126 template<
class View,
int n,
class Val,
unsigned int a>
132 _prevPos(b._prevPos) {
138 template<
class View,
int n,
class Val,
unsigned int a>
146 template<
class View,
int n,
class Val,
unsigned int a>
155 int choicePos = pvc->
pos().pos;
156 int choiceVal = pvc->
val();
159 _prevPos = choicePos;
163 std::deque<Literal> queue;
164 std::set<Literal> seen;
166 seen.insert(
Literal(choicePos, choiceVal));
167 queue.push_back(
Literal(choicePos, choiceVal));
173 for (
int i = 0 ;
i < _nsyms ;
i++) {
175 for (
int j = 0 ; j < toExclude.
size() ; ++j) {
176 if (seen.find(toExclude[j]) == seen.end())
177 queue.push_back(toExclude[j]);
178 seen.insert(toExclude[j]);
181 }
while (queue.size() > 0);
184 int nliterals = seen.
size();
186 std::set<Literal>::iterator it = seen.begin();
187 for (
int i = 0 ;
i < nliterals ;
i++) {
192 return new LDSBChoice<Val>(*
this,
a,choicePos,choiceVal, literals, nliterals);
196 template<
class View,
int n,
class Val,
unsigned int a>
202 int nliterals; e >> nliterals;
204 for (
int i = 0 ;
i < nliterals ;
i++) {
215 return x.nq(home,
v);
222 return x.nq(home,
v);
226 template<
class View,
int n,
class Val,
unsigned int a>
232 int choicePos = pvc.
pos().pos;
233 int choiceVal = pvc.
val();
239 for (
int i = 0 ;
i < this->_nsyms ;
i++)
240 this->_syms[
i]->update(
Literal(choicePos, choiceVal));
249 for (
int i = 0 ;
i < nliterals ;
i++) {
259 template<
class View,
int n,
class Val,
unsigned int a>