38 #ifndef __GECODE_SEARCH_SEQUENTIAL_PATH_HH__
39 #define __GECODE_SEARCH_SEQUENTIAL_PATH_HH__
46 namespace Gecode {
namespace Search {
namespace Sequential {
88 unsigned int alt(
void)
const;
90 unsigned int truealt(
void)
const;
112 int ngdl(
void)
const;
122 bool empty(
void)
const;
152 : _space(c), _alt(0), _choice(s->choice()) {}
169 assert(_alt < _choice->alternatives());
178 return _alt+1 >= _choice->alternatives();
182 return _alt >= _choice->alternatives();
223 if (!
ds.empty() &&
ds.top().lao()) {
229 stat.
stack_depth(static_cast<unsigned long int>(
ds.entries()));
236 if (
ds.top().rightmost()) {
264 int l =
ds.entries()-1;
265 while (
ds[l].space() == NULL)
277 assert((
ds[l].space() == NULL) ||
ds[l].space()->failed());
278 int n =
ds.entries();
279 for (
int i=l;
i<
n;
i++)
281 assert(
ds.entries() ==
l);
297 if ((
ds.top().space() != NULL) &&
ds.top().rightmost()) {
300 assert(
ds.entries()-1 ==
lc());
301 ds.top().space(NULL);
303 if (
ds.entries() >
ngdl())
310 int n =
ds.entries();
312 d =
static_cast<unsigned int>(n -
l);
318 for (
int i=l;
i<
n;
i++)
321 int m = l +
static_cast<int>(d >> 1);
327 for (; (i<
n) &&
ds[i].rightmost(); i++)
345 d =
static_cast<unsigned int>(n-
i);
362 if ((
ds.top().space() != NULL) &&
ds.top().rightmost()) {
365 assert(
ds.entries()-1 ==
lc());
366 if (mark >
ds.entries()-1) {
367 mark =
ds.entries()-1;
370 ds.top().space(NULL);
372 if (
ds.entries() >
ngdl())
379 int n =
ds.entries();
381 d =
static_cast<unsigned int>(n -
l);
407 for (
int i=l;
i<
n;
i++)
410 int m = l +
static_cast<int>(d >> 1);
416 for (; (i<
n) &&
ds[i].rightmost(); i++)
437 d =
static_cast<unsigned int>(n-
i);