67 for (
int z = 0; z < xs; z++) {
68 int maxy = y[z].max();
70 for( ; s <xs && x[s].min() <= maxy; s++) {
77 for (
int i = 0;
i < xs;
i++) {
81 int iter = seq[perm].iset;
91 if (x[perm].
max() < y[j].
min())
95 int sqjsucc = seq[j].succ;
97 seq.
unite(j,sqjsucc,sqjsucc);
99 seq[seq[j].root].name = sqjsucc;
103 int pr = seq[j].pred;
105 seq[pr].succ = sqjsucc;
107 seq[sqjsucc].pred = pr;
128 for (
int z = xs; z--; ) {
131 for ( ; s > -1 && x[tau[s]].max() >= miny; s--) {
132 seq[tau[s]].iset = z;
138 for (
int i = xs;
i--; ) {
140 int iter = seq[perm].iset;
149 if (x[perm].
min() > y[j].
max())
153 int sqjsucc = seq[j].pred;
155 seq.
unite(j, sqjsucc, sqjsucc);
157 seq[seq[j].root].name = sqjsucc;
161 int pr = seq[j].succ;
163 seq[pr].pred = sqjsucc;
165 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 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.
void sequence(Home home, const IntVarArgs &x, const IntSet &s, int q, int l, int u, IntConLevel)
Post propagator for .
Gecode::IntArgs i(4, 1, 2, 3, 4)
void min(Home home, FloatVar x0, FloatVar x1, FloatVar x2)
Post propagator for .
Node * x
Pointer to corresponding Boolean expression node.
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.
int size(void) const
Return size of array (number of elements)
Gecode toplevel namespace
void makeset(void)
Initialization of the datastructure.