54 : Support::RawBitSetBase(r,static_cast<unsigned int>(n)) {}
58 : Support::
RawBitSetBase(r,static_cast<unsigned int>(n),ns) {}
69 return RawBitSetBase::get(static_cast<unsigned int>(i));
73 RawBitSetBase::set(static_cast<unsigned int>(i));
77 RawBitSetBase::clear(static_cast<unsigned int>(i));
81 RawBitSetBase::copy(static_cast<unsigned int>(n),ns);
85 RawBitSetBase::clearall(static_cast<unsigned int>(n));
91 unsigned int n =
static_cast<unsigned int>(_n);
93 unsigned int pos = n /
bpb;
94 unsigned int bits = n %
bpb;
98 for (
unsigned int i=0;
i<
pos;
i++) {
107 abc.
o(cwa.
data[pos],bits);
108 abc.
o(cwb.
data[pos],bits);
110 assert(cwa.
get(n) && cwb.
get(n));
120 : ns(ns0),
c(ns.
next(0)) {}
127 return static_cast<int>(c);
132 :
n(r,m), c(0), w(0) {}
146 bins(static_cast<unsigned int>(m)),
188 unsigned int m =
node[
p].
d;
195 while (j() <
nodes()) {
196 if (
node[j()].
d > m) {
217 assert(i == static_cast<int>(
cur.
c));
255 bv[0]=
b[
i]; bv[1]=
b[j]; bv[2]=
b[k];
284 if ((
node[j].d == 1) || (
node[j].d == 2))
295 if ((
node[j].d == 2) || (
node[k].d == 2))
303 if ((
node[j].d == 1) || (
node[j].d == 2))
305 if ((
node[k].d == 1) || (
node[k].d == 2))
320 p.incl(
i); empty =
false;
339 assert(j == static_cast<int>(
max.
c));
void push(const T &x)
Push element x on top of stack.
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.
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(Space &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.
struct Gecode::@519::NNF::@60::@62 a
For atomic nodes.
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.
IntSet maxclique(void) const
Return maximal clique found.
Node * x
Pointer to corresponding Boolean expression node.
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.
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.
static ExecStatus post(Home home, View x0, View x1)
Post propagator .
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)