50 : Support::RawBitSetBase(r,static_cast<unsigned int>(n)) {}
54 : Support::
RawBitSetBase(r,static_cast<unsigned int>(n),ns) {}
65 return RawBitSetBase::get(static_cast<unsigned int>(i));
69 RawBitSetBase::set(static_cast<unsigned int>(i));
73 RawBitSetBase::clear(static_cast<unsigned int>(i));
77 RawBitSetBase::copy(static_cast<unsigned int>(n),ns);
81 RawBitSetBase::clearall(static_cast<unsigned int>(n));
87 unsigned int n =
static_cast<unsigned int>(_n);
89 unsigned int pos = n /
bpb;
90 unsigned int bits = n %
bpb;
94 for (
unsigned int i=0;
i<
pos;
i++) {
103 abc.
o(cwa.
data[pos],bits);
104 abc.
o(cwb.
data[pos],bits);
106 assert(cwa.
get(n) && cwb.
get(n));
116 : ns(ns0),
c(ns.
next(0)) {}
123 return static_cast<int>(c);
128 :
n(r,m), c(0), w(0) {}
142 bins(static_cast<unsigned int>(m)),
184 unsigned int m =
node[
p].
d;
191 while (j() <
nodes()) {
192 if (
node[j()].
d > m) {
213 assert(i == static_cast<int>(
cur.
c));
251 bv[0]=
b[
i]; bv[1]=
b[j]; bv[2]=
b[k];
280 if ((
node[j].d == 1) || (
node[j].d == 2))
291 if ((
node[j].d == 2) || (
node[k].d == 2))
299 if ((
node[j].d == 1) || (
node[j].d == 2))
301 if ((
node[k].d == 1) || (
node[k].d == 2))
316 p.incl(
i); empty =
false;
336 assert(j == static_cast<int>(
max.
c));
void push(const T &x)
Push element x on top of stack.
void free(void)
Free allocate memory.
bool adjacent(int i, int j) const
Test whether nodes i and j are adjacent.
void init(A &a, unsigned int sz, bool setbits=false)
Initialize for sz bits and allocator a (only after default constructor)
void excl(int i)
Exclude node i.
void empty(int n)
Clear the whole node set for n nodes.
static ExecStatus post(Home home, V0 x0, V1 x1)
Post propagator .
int size(void) const
Return size of array (number of elements)
bool in(int i) const
Test whether node i is included.
static const unsigned int bpb
Bits per base.
T * alloc(long unsigned int n)
Allocate block of n objects of type T from region.
Node * node
The nodes in the graph.
unsigned int c
Cardinality of clique.
bool pos(const View &x)
Test whether x is postive.
bool empty(void) const
Test whether stack is empty.
static ExecStatus post(Home home, ViewArray< View > &x)
Post propagator for views x.
ConflictGraph(Home &home, Region &r, const IntVarArgs &b, int m)
Initialize graph.
int pivot(const NodeSet &a, const NodeSet &b) const
Find a pivot node with maximal degree from a or b.
Node(void)
Default constructor.
bool get(unsigned int i) const
Access value at bit i.
void copy(int n, const NodeSet &ns)
Copy elements from node set ns with n nodes.
void allocate(A &a, unsigned int sz)
Allocate for sz bits and allocator a (only after default constructor)
ExecStatus clique(void)
Report the current clique.
ExecStatus post(void)
Post additional constraints.
#define GECODE_ES_CHECK(es)
Check whether execution status es is failed or subsumed, and forward failure or subsumption.
Gecode::FloatVal c(-8, 8)
int p
Number of positive literals for node type.
int n
Number of negative literals for node type.
~ConflictGraph(void)
Destructor.
Gecode::IntArgs i({1, 2, 3, 4})
Execution has resulted in failure.
unsigned int next(unsigned int i) const
Return position greater or equal i of next set bit (i is allowed to be equal to size) ...
Nodes(const NodeSet &ns)
Initialize for nodes in ns.
Clique cur
Current clique.
bool none(unsigned int sz) const
Test whether no bits are set.
Clique(Region &r, int m)
Constructor for m nodes.
void o(BitSetData a)
Perform "or" with a.
void init(Region &r, int n)
Initialize node set for n nodes.
unsigned int w
Weight (initialized with degree before graph is reduced)
void edge(int i, int j, bool add=true)
Add or remove an edge between nodes i and j (i must be less than j)
ExecStatus bk(NodeSet &p, NodeSet &x)
Run Bosch-Kerbron algorithm for finding max cliques.
void operator++(void)
Move iterator to next node (if possible)
Passing integer variables.
void incl(int i)
Include node i.
int operator()(void) const
Return current node.
void init(bool setbits=false)
Initialize with all bits set if setbits.
Post propagator for SetVar SetOpType SetVar SetRelType r
IntSet maxclique(void) const
Return maximal clique found.
RawBitSetBase(void)
Default constructor (yields empty set)
void a(BitSetData a)
Perform "and" with a.
Stack with fixed number of elements.
Clique max
Largest clique so far.
T pop(void)
Pop topmost element from stack and return it.
int nodes(void) const
Return number of nodes.
unsigned int w
Weight of clique.
Post propagator for SetVar x
NodeSet n
Nodes in the clique.
void allocate(Region &r, int n)
Allocate node set for n nodes.
const IntVarArgs & b
Bin variables.
BitSetData * data
Stored bits.
Gecode toplevel namespace
unsigned int bins
Number of bins.
NodeSet(void)
Keep uninitialized.
Home class for posting propagators
bool none(void) const
Whether no bits are set.
#define GECODE_NEVER
Assert that this command is never executed.
void incl(int i, unsigned int w)
Include node i with weight w.
void excl(int i, unsigned int w)
Exclude node i with weight w.
struct Gecode::@593::NNF::@62::@64 a
For atomic nodes.
static bool iwn(NodeSet &iwa, const NodeSet &a, NodeSet &iwb, const NodeSet &b, const NodeSet &c, int n)