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;
87 if (x[perm].
max() < y[j].
min())
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;
145 if (x[perm].
min() > y[j].
max())
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;
bool glover(ViewArray< View > &x, ViewArray< View > &y, int tau[], int phi[], OfflineMinItem sequence[], int vertices[])
Glover's maximum matching in a bipartite graph.
Bounds consistent sortedness propagator.
void sequence(Home home, const IntVarArgs &x, const IntSet &s, int q, int l, int u, IntPropLevel)
Post propagator for .
void max(Home home, FloatVar x0, FloatVar x1, FloatVar x2)
Post propagator for .
Item used to construct the OfflineMin sequence.
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::IntArgs i(4, 1, 2, 3, 4)
Post propagator for SetVar SetOpType SetVar SetRelType SetVar z
void min(Home home, FloatVar x0, FloatVar x1, FloatVar x2)
Post propagator for .
Post propagator for SetVar SetOpType SetVar y
Offline-Min datastructure Used to compute the perfect matching between the unsorted views x and the s...
Post propagator for SetVar x
void unite(int a, int b, int c)
Unite two sets a and b and label the union with c.
Gecode toplevel namespace
int size(void) const
Return size of array (number of elements)
void makeset(void)
Initialization of the datastructure.