63 for (
int z = 0;
z < xs;
z++) {
64 int maxy =
y[
z].max();
66 for( ; s <xs &&
x[s].min() <= maxy; s++) {
73 for (
int i = 0; i < xs; i++) {
77 int iter = seq[perm].iset;
91 int sqjsucc = seq[j].succ;
93 seq.
unite(j,sqjsucc,sqjsucc);
95 seq[seq[j].root].name = sqjsucc;
101 seq[pr].succ = sqjsucc;
103 seq[sqjsucc].pred = pr;
124 for (
int z = xs;
z--; ) {
127 for ( ; s > -1 &&
x[tau[s]].max() >= miny; s--) {
128 seq[tau[s]].iset =
z;
134 for (
int i = xs; i--; ) {
136 int iter = seq[perm].iset;
149 int sqjsucc = seq[j].pred;
151 seq.
unite(j, sqjsucc, sqjsucc);
153 seq[seq[j].root].name = sqjsucc;
157 int pr = seq[j].succ;
159 seq[pr].pred = sqjsucc;
161 seq[sqjsucc].succ = pr;
Item used to construct the OfflineMin sequence.
Offline-Min datastructure Used to compute the perfect matching between the unsorted views x and the s...
void unite(int a, int b, int c)
Unite two sets a and b and label the union with c.
void makeset(void)
Initialization of the datastructure.
bool glover(ViewArray< View > &x, ViewArray< View > &y, int tau[], int phi[], OfflineMinItem sequence[], int vertices[])
Glover's maximum matching in a bipartite graph.
bool revglover(ViewArray< View > &x, ViewArray< View > &y, int tau[], int phiprime[], OfflineMinItem sequence[], int vertices[])
Symmetric glover function for the upper domain bounds.
Gecode toplevel namespace
void sequence(Home home, const IntVarArgs &x, const IntSet &s, int q, int l, int u, IntPropLevel ipl=IPL_DEF)
Post propagator for .
void min(Home home, FloatVar x0, FloatVar x1, FloatVar x2)
Post propagator for .
Post propagator for SetVar SetOpType SetVar SetRelType SetVar z
Post propagator for SetVar SetOpType SetVar y
void max(Home home, FloatVar x0, FloatVar x1, FloatVar x2)
Post propagator for .
Post propagator for SetVar x