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.
Gecode::IntArgs i(4, 1, 2, 3, 4)
int n
Number of negative literals for node type.
~ConflictGraph(void)
Destructor.
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.
struct Gecode::@585::NNF::@62::@64 a
For atomic nodes.
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.
static bool iwn(NodeSet &iwa, const NodeSet &a, NodeSet &iwb, const NodeSet &b, const NodeSet &c, int n)